zoukankan      html  css  js  c++  java
  • 【游戏编程从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
    

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

    结语

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

  • 相关阅读:
    WPF之感触
    C# WinForm 给DataTable中指定位置添加列
    MyEclipse 8.6 download 官方下载地址
    将博客搬至CSDN
    Building Microservices with Spring Cloud
    Building Microservices with Spring Cloud
    Building Microservices with Spring Cloud
    Building Microservices with Spring Cloud
    Building Microservices with Spring Cloud
    Building Microservices with Spring Cloud
  • 原文地址:https://www.cnblogs.com/ark2000/p/11377430.html
Copyright © 2011-2022 走看看