项目-坦克大战学习笔记-多线程设置游戏内容

窗体在启动时会调用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帧

线程中的函数设置为静态函数,这样方便经常调用而且密封性好,静态函数类不可使用外面实例化的变量,所以需要在里面实例化

猜你喜欢

转载自blog.csdn.net/2401_84659046/article/details/142604343