Java ME综合实训报告
btnHeight, color); }
g.drawString(LABELS[i], (width - btnWidth) / 2 + 10, (i + 1) * btnHeight + 3, color); } }
public void keyPressed(int keyCode) {
//根据用户输入更新selected的值,并重新绘制屏幕 int action = this.getGameAction(keyCode); switch (action) { case Canvas.FIRE: printLabel(selected); break;
case Canvas.DOWN:
selected = (selected + 1) % 6; break; case Canvas.UP: { if (--selected < 0) { selected += 6; } break; } default: break; } repaint(); serviceRepaints(); }
//showNotify()在paint()之前被调用 public void showNotify() {
System.out.println(\ }
·5·
Java ME综合实训报告
private void printLabel(int selected) { switch (selected) { case 0:
mainRunner.newGame(); break; case 1:
mainRunner.resumeGame(); break; case 2:
mainRunner.setting(); break; case 3:
mainRunner.score(\ break; case 4:
mainRunner.help(); break; case 5:
mainRunner.exit(); break; } } }
运行结果如下:
·6·
Java ME综合实训报告
任务4:实现新游戏功能,游戏界面要求在DefaultCldcMsaPhone1满屏显示。 实现说明: 满屏的实现:
1) 修改gameCharObj.java中right和left方法中的148改成240。 if (x > 240) {
x = 240; } 截图如下:
2) 把isDead方法中的if语句改成if(y>320||y<40||gameCharLife<1) 截图如下图所示:
3) 修改图片大小(把bg.png和teeth.png图片大小改为240*320的大小) 实现新游戏功能: public void newGame() { GameRecord.reSet();
GameRecord.elements.addElement(new gameFlatObj(true)); score = 0; gco = null; start();
}
·7·
Java ME综合实训报告
任务5:实现继续游戏功能,要求返回游戏界面后能够继续原来的游戏。 实现说明:
在gameCanv 上添加如下代码: if (!isPause) {
//*************** g.setColor(0xBBFFBB); //画GAME OVER g.fillRect(0, 290, 240, 320); g.setColor(0x804040);
g.setFont(Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_PLAIN, 16));
g.drawString(\ g.drawString(\返回\ g.drawString(\重新开始\ } else {
g.setColor(255, 0, 0);
g.drawString(\已暂停,按 * 键继续\ }
在MainRunner类中添加resumeGame()方法: public void resumeGame() {
System.out.println(\ if (gc == null) { newGame(); }
if (gc.isPause()) { gc.reSume(); dp.setCurrent(gc); } else { newGame(); }
}
·8·
Java ME综合实训报告
在MenuCanvas类中添加如下图所示的代码:
任务6:实现设置功能,可以设置炸弹等Sprite的数量,也可以设置游戏速度等其他元素。 实现说明:
新建个类SettingCanvas,添加如下代码 protected void paint(Graphics g) { int color = g.getColor(); g.setColor(34 ,139 ,34 ); g.setFont(font);
g.drawString(\速度:\ g.drawString(\难度:\ g.setColor(0, 0, 255); for (int i = 0; i < cuSp; i++) { g.fillRect(80 + (i * 10), 55, 20, 8); }
for (int i = 0; i < cuLe; i++) {
g.fillRect(80 + (i * 10), 105, 20, 8); }
g.drawRect(20, 50 * cuSe, 200, 20);
}
//添加键盘事件
public void keyPressed(int KeyCode) { System.out.println(KeyCode); switch (KeyCode) { case -2: cuSe++; if (cuSe == 3) { cuSe = 1; }
·9·