【游戏编程从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

其中的内容就需要去自己填充了。

结语

以上就是对一个游戏代码基本结构的简单介绍,当然并不局限于此,在此就不继续深入了。

原文地址:https://www.cnblogs.com/ark2000/p/11377430.html