窗体在启动时会调用Form窗体主函数,调用窗体主函数就要开始运行游戏内容,但是为了放置代码阻塞将游戏内容放在多线程执行,不影响窗体的正常运行
首先创建一个线程变量,然后实例化他并且给他一个方法,在下面此方法中包含了游戏内容,未了方便代码归类我们需要定义一个新的类,在方法中直接调用类中的方法方便查看
Thread t;//线程变量
t = new Thread(new ThreadStart(gamemainthread)); //实例化多线程
t.Start();//启动多线程
private static void gamemainthread()//多线程中的函数
{
tankthread.Start();//调用tankthread类的函数初始化
while (true)//将Updeat方法设置为调用一次休息60分之一秒,使他一秒钟调用60次(??)
{
tankthread.Update();//调用Update
int sleep = 1000 / 60;//设置线程休息时间
Thread.Sleep(sleep);//当前线程进程休眠
}
}
在定义的类中我们需要设置游戏的初始化和每帧更新的运行Start函数和Update函数,将游戏地图的初始化放在Start函数里面,将游戏中需要多次调用的地图刷新和操作检测类放在Update里面,但是我们需要限制以下Update函数使其调用为一秒60帧,不然每台电脑刷新的帧率不一样那么游戏运行速度也不一样,这时候就要调用前面提到的线程方法来使调用一次Update就让当前运行的线程休息sleep(60分之一秒的毫秒),使一秒钟固定运行60帧
线程中的函数设置为静态函数,这样方便经常调用而且密封性好,静态函数类不可使用外面实例化的变量,所以需要在里面实例化