说一下刚开始用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 中已经算出来)
大致到这里基本思路就这样了:)