一个模仿三维的赛车游戏的算法,白话讲解--------

说一下刚开始用game.java来继承MIDlet

里面startApp()中实例化一个新类GameScreen(这个需要另建立一个新java文件),让它当前显示.

进入GameScreen.java继承GameCanvas,开一个线程 Runnable

进入主类中,是对好多东西的定义变量,有一个构造函数GameScreen中super(false),setFullScreenMode(true);

还用了一个 GameInit()方法,启动一个线程(new Thread(this)).start();

GameInit()中记录开始执行时间,包括对象的初始化,rms和数组还有音乐的初始化


线程的运行
由一直判断mainState是否为6,如果不等于6,则重复绘制
   serviceRepaints();//防止不重新刷屏,,有留影
  Save_Records();//保存记录
        GameExit();//游戏的退出
 System.gc();//回收垃圾


 再paint(Graphics g)中一直判断_mainState主程序状态(初始为0)
                                   0作用是显示大LOGO画面,状态转到1 
                                   1作用是读入菜单显示的图片,设置菜单状态menuState为0 第一个菜单的状态,,程序状态转到4
                                   2作用是确定主精灵图片,判断场景,gameState游戏的状态为0,主程序状态转到5
                                   3作用是菜单状态menuState为0,状态转到4
                                   4作用是更新菜单的状态 Update_Menu 函数,
                                   5作用是Update_Game更新游戏状态

//
Update_Menu 函数判断菜单状态
 { keyUpdate()            对按键的响应(确定、返回)
    绘制主菜单的背景(也可以在每个菜单都绘制一遍)
   询问菜单状态
       0  按键有响应(上下左右)
          判断指针,就是光标的响应curs  0  菜单状态到6
                                        1  菜单状态到1,帮助菜单
                                        2  菜单状态到3,设置音乐状态
                                        3  菜单状态到2,得分菜单
                                        4  菜单状态到4,作者菜单
                                        5  菜单状态到6,选车型菜单
       6  选择地图 打印 画箭头,选择时菜单方向的控制1为向右,-1为向左 Reset_Direction_Keys();//重新调整方向键
          菜单状态到选车型了转为7
       7  绘制所需图片并且处理响应  主程序状态_mainState = 2;  _cptLoad = 0;
       1  帮助
       2  比赛完成后的得分情况
       3  设置音乐状态
       4  作者菜单     
       5  保存你的比赛纪录

//

按键的监听keyPressed(int i)///系统自己进行按键监听
释放按键状态keyReleased)///系统自己进行按键监听

keyUpdate()//按键更新,有变化的话他能捕捉到
Update_Game(Graphics g)//更新游戏状态
    判断游戏状态gameState  0  Reset_Data()好多变量初始化,游戏状态转到1
                           1  绘制游戏画面Draw_Game(g),gameState = 2;
                           2  如果按键左上键或右上键,gameState = 3, _curs = 0。计算动态时间time
                                     if(System.currentTimeMillis() - _sec >= 1000L) {
                                              _time++;
                                          _sec = System.currentTimeMillis();}
                           3  中途退出时响应代码
                           4  游戏正常结束
                           5  得到第一名,赢得比赛了

//

Draw_Game(Graphics g)//画游戏各个关卡的图的所有东西

判断关口是第几关,然后进行绘制

画背景(图片),画赛道(程序用for画好多条线)

画出动态时间time(gameState 中已经算出来)

 

大致到这里基本思路就这样了:)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值