【游戏编程从0开始】一、基本结构
说明
此文中的游戏编程与游戏引擎无关,使用LUA编程语言,主要是一些我在学习实践中了解到的一些基本的常识,在此稍微小结一下。
基本结构
变量
函数
初始化
主循环
检查外部输入
更新游戏数据
更新画面
检查游戏是否结束
变量
在这里定义游戏中用到的大多数变量。比如分辨率,游戏角色的初始数据,道具、怪物等结构的数据。不一定所有的都定义在这里,但是那种贯穿整个游戏比较重要的数据还是放在程序开头的好。
举个栗子
WIDTH=240
HEIGHT=136
LEVEL=1
DIFFICULTY=1
PLAYER=
{
maxhp=30,
atk=10,
spd=2
}
函数
在这里放游戏中会使用到的函数,将游戏中所有的功能抽象细化成函数,便于修改和阅读,减少代码重复率。
比如
--创建矩形
function newRect(w,h,x,y)
return {w=w,h=h,x=x,y=y}
end
--判断两个矩形是否重叠
function isColli(rect1,rect2)
if rect1.x<rect2.x+rect2.w and
rect2.x<rect1.x+rect1.w and
rect1.y<rect2.y+rect2.h and
rect2.y<rect1.y+rect1.h
then
return true
else
return false
end
end
初始化
初始化在游戏编程中非常重要。它是程序在进入一个新的状态(循环)之前所必须做的准备工作。比如点击START GAME之后开始新一轮的游戏,就必需在此之前重置所有用到的变量。
例如
function init()
SCORE=0
PLAYER.x=0
PLAYER.y=0
PLAYER.hp=0
LIVES=3
end
主循环
整个游戏代码都在这里运行,一般都是每秒运行固定次数,比如一秒循环60次。
大概长这样
function LOOP()
if mode==1 then
playerMove()
EnemiesMove()
if collision(player,enemy) then
player.dead=true
end
drawScreen()
if player.dead then
print("GAME OVER")
counter=180
mode=2
end
else
if mode==2 then
counter=counter-1
if counter<0 then
init()
mode=1
end
end
end
其中的内容就需要去自己填充了。
结语
以上就是对一个游戏代码基本结构的简单介绍,当然并不局限于此,在此就不继续深入了。