j2me简易赛车游戏
来源:互联网 发布:java成员方法 编辑:程序博客网 时间:2024/04/28 05:12
效果图:
MIDlet代码:
- package com.javaME.MyRacingGames;
- import javax.microedition.lcdui.Display;
- import javax.microedition.midlet.MIDlet;
- import javax.microedition.midlet.MIDletStateChangeException;
- public class HelloRacingGames extends MIDlet {
- private Display dis;
- public HelloRacingGames() {
- // TODO Auto-generated constructor stub
- }
- protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
- // TODO Auto-generated method stub
- }
- protected void pauseApp() {
- // TODO Auto-generated method stub
- }
- protected void startApp() throws MIDletStateChangeException {
- // TODO Auto-generated method stub
- dis = Display.getDisplay(this);
- CarRaceCanvas canvas = new CarRaceCanvas();
- dis.setCurrent(canvas);
- }
- }
自定义的GameCanvas代码:
- package com.javaME.MyRacingGames;
- import java.util.Random;
- import javax.microedition.lcdui.Command;
- import javax.microedition.lcdui.CommandListener;
- import javax.microedition.lcdui.Displayable;
- import javax.microedition.lcdui.Font;
- import javax.microedition.lcdui.Graphics;
- import javax.microedition.lcdui.Image;
- import javax.microedition.lcdui.game.GameCanvas;
- import javax.microedition.lcdui.game.Sprite;
- public class CarRaceCanvas extends GameCanvas implements CommandListener,
- Runnable {
- private Graphics gra;
- // 定义按钮
- private Command cmdStart = new Command("开始", Command.SCREEN, 1);
- private Command cmdPause = new Command("暂停", Command.SCREEN, 1);
- private Sprite myCar;
- private Sprite[] enemy = new Sprite[5];
- private Thread game;
- private boolean loop = true;
- private int road;
- private Random rnd = new Random();
- private int score = 100;
- private Font font = null;
- public CarRaceCanvas() {
- super(true);
- this.prepareResource();
- this.addCommand(cmdStart);
- this.setCommandListener(this);
- gra = this.getGraphics();
- font = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD, Font.SIZE_LARGE);
- }
- // 初始化资源
- public void prepareResource() {
- try {
- Image myImage = Image.createImage("/myCar.gif");
- myCar = new Sprite(myImage);
- for (int i = 0; i < enemy.length; i++) {
- Image enemyImg = Image.createImage("/enemy.gif");
- enemy[i] = new Sprite(enemyImg);
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- for (int i = 0; i < enemy.length; i++) {
- setEnemy(i);
- }
- myCar.setPosition((this.getWidth() - myCar.getWidth()) / 2, (this
- .getHeight() - myCar.getHeight()) / 2);
- }
- public void run() {
- while (loop) {
- drawScreen();
- int state = this.getKeyStates();
- switch (state) {
- case GameCanvas.LEFT_PRESSED:
- myCar.move(-10, 0);
- judgeMyCar();
- break;
- case GameCanvas.UP_PRESSED:
- myCar.move(0, -10);
- judgeMyCar();
- break;
- case GameCanvas.DOWN_PRESSED:
- myCar.move(0, 10);
- judgeMyCar();
- break;
- case GameCanvas.RIGHT_PRESSED:
- myCar.move(10, 0);
- judgeMyCar();
- break;
- }
- try {
- Thread.sleep(50);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- // 判断自己的车是否出界
- public void judgeMyCar() {
- if (myCar.getX() < 0) {
- myCar.setPosition(0, myCar.getY());
- } else if (myCar.getY() > this.getHeight() - myCar.getHeight()) {
- myCar.setPosition(myCar.getX(), this.getHeight()
- - myCar.getHeight());
- } else if (myCar.getX() > this.getWidth() - myCar.getWidth()) {
- myCar.setPosition(this.getWidth() - myCar.getWidth(), myCar.getY());
- } else if (myCar.getY() < 0) {
- myCar.setPosition(myCar.getX(), 0);
- }
- }
- //设置敌人的位置
- public void setEnemy(int en) {
- int x, y;
- loop: while (true) {
- x = rnd.nextInt((int) this.getWidth() - enemy[en].getWidth());
- y = -rnd.nextInt(this.getWidth() * 10);
- enemy[en].setPosition(x, y);
- //防止敌人车辆重叠
- for (int j = 0; j < enemy.length; j++) {
- if (j != en && enemy[j].collidesWith(enemy[en], true)) {
- continue loop;
- }
- }
- break;
- }
- }
- // 按钮事件
- public void commandAction(Command cmd, Displayable dis) {
- if (cmd == cmdStart) {
- loop = true;
- game = new Thread(this);
- game.start();
- this.removeCommand(cmdStart);
- this.addCommand(cmdPause);
- } else if (cmd == cmdPause) {
- loop = false;
- game = null;
- this.removeCommand(cmdPause);
- this.addCommand(cmdStart);
- }
- }
- public void drawScreen() {
- gra.setColor(120, 120, 120);
- gra.fillRect(0, 0, this.getWidth(), this.getHeight());
- drawRoad();
- gra.setColor(255, 0, 0);
- gra.setFont(font);
- for (int i = 0; i < enemy.length; i++) {
- enemy[i].move(0, 15);
- enemy[i].paint(gra);
- if (enemy[i].getY() > this.getHeight()) {
- setEnemy(i);
- }
- check(enemy[i]);
- }
- gra.drawString("当前分数:" + score, this.getWidth() / 2, 0, Graphics.TOP
- | Graphics.HCENTER);
- myCar.paint(gra);
- this.flushGraphics();
- }
- public void drawRoad() {
- road += 80;
- gra.setColor(255, 255, 255);
- gra.fillRect((int) this.getWidth() / 2 - 10, road, 20, 150);
- if (road >= this.getHeight()) {
- road = -150;
- }
- }
- // 用于敌人的车辆相互碰撞的检测
- public void checkEnemy(Sprite s) {
- for (int i = 0; i < enemy.length; i++) {
- if (s != enemy[i]) {
- if (s.collidesWith(enemy[i], true)) {
- if (s.getX() > enemy[i].getX()) {
- s.move(20, 0);
- enemy[i].move(-20, 0);
- } else {
- s.move(-20, 0);
- enemy[i].move(20, 0);
- }
- }
- }
- }
- }
- // 用于自己的车辆和敌方的车辆碰撞检测
- public void check(Sprite en) {
- if (myCar.collidesWith(en, true)) {
- score--;
- if (myCar.getX() > en.getX()) {
- en.move(-20, 0);
- myCar.move(20, 0);
- checkEnemy(en);
- } else {
- en.move(20, 0);
- myCar.move(-20, 0);
- checkEnemy(en);
- }
- }
- if (score == 0) {
- loop = false;
- game = null;
- gra.setColor(120, 120, 120);
- gra.fillRect(0, 0, getWidth(), getHeight());
- gra.setColor(255, 0, 0);
- gra.setFont(font);
- gra.drawString("您输了", this.getWidth() / 2, 20, Graphics.TOP
- | Graphics.HCENTER);
- this.removeCommand(cmdPause);
- this.removeCommand(cmdStart);
- }
- }
- }
- j2me简易赛车游戏
- 用VB6.0设计简易赛车游戏
- 赛车游戏
- 赛车游戏开发总结
- 赛车游戏开发总结
- Ogre(NxOgre)赛车游戏
- java游戏--赛车模拟
- 手势玩儿赛车游戏
- ubuntu 游戏 赛车
- 赛车游戏的悖论
- 赛车游戏算法笔记
- 赛车游戏开发总结
- 《天天赛车》游戏介绍
- unity3d赛车游戏视频教程
- supertuxkart_android赛车游戏移植
- 【bzoj2328】[HNOI2011]赛车游戏
- CQYZ_Vijos_P3090 赛车游戏
- 赛车游戏中赛车的物理建模
- asp.net中使用js获取textbox或HiddenField的值
- VC移位算法实现数据的加密解密
- J2EE学习比较
- J2EE学习
- javaME拼图游戏
- j2me简易赛车游戏
- ……
- 很烦很糟糕的
- 自定义组件 学习
- 近来小记
- 连接池
- 转载的 根叔演讲稿
- 完成代码,输出"Hello World!"
- 子窗体如何调用父窗体的控件?