资源简介
一个用J2ME做的非常简单的小游戏。一开始敌人追你,吃到食物后,变大追敌人。游戏很简单,AI也不复杂,就是坐标比较,还有两圆的碰撞检测和圆与矩形的碰撞检测。
代码片段和文件信息
import java.util.Random;
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.game.GameCanvas;
/**
* 追逐游戏
*
* @author kf156(亚日)
*
*/
public class ChevyCanvas extends GameCanvas implements Runnable {
public final static int KEY_SOFT1 = -6; // 功能键 左 1
public final static int KEY_SOFT2 = -7; // 功能键 右 2
public final static int KEY_SOFT3 = -5;
public final static int KEY_LEFT = -3;
public final static int KEY_RIGHT = -4;
public final static int KEY_UP = -1;
public final static int KEY_DOWN = -2;
private Thread thread;
public int circleX circleY;// 圆的XY坐标
private int diameter = 10;// 小球直径
private int radii = diameter >> 1;// 小球半径
private int eyeshot = 100;// 敌人视野半径
public int rectX rectY;// 方块XY坐标
public int rectW = 10 rectH = 10;// 方块WH
public int foodX foodY;// 食物XY坐标
public int foodDiameter = 10;// 食物直径
public int foodRadii = foodDiameter >> 1;// 食物半径
public int speed speed1;// 移动速度
public boolean eatFood;// 吃到食物
public int time;// 线程控制时间
public boolean running;// 是否循环
public int width height;// 屏幕宽高
private byte n;// 随机运动计数器
private int effectiveTime;// 变大有效时间
private int nFood;// 食物闪烁计数器
private int m;// 方形运动方向
private int state;// 游戏状态
private final byte PLAY = 0;// 游戏
private final byte LOSE = 1;// 输
private final byte WIN = 2;// 赢
private Font font;
int[] key = new int[4];
public Random r = new Random();// 随机
public ChevyCanvas() {
super(true);
setFullScreenMode(true);
init();
StartThread();
}
private void init() {
running = true;
eatFood = false;
width = getWidth();
height = getHeight();
time = 75;
circleX = 0;
circleY = 0;
rectX = 100;
rectY = 100;
speed = 4;
speed1 = 2;
n = 0;
effectiveTime = 60;
foodX = 120;
foodY = 120;
nFood = 0;
state = PLAY;
font = Font.getFont(Font.FACE_MONOSPACE Font.style_PLAIN
Font.SIZE_LARGE);
}
public void input() {
key[0] = key[2];
key[1] = key[3];
key[2] = 0;
}
private void update() {
if (state != PLAY && key[0] == KEY_SOFT1)// 左软键游戏重开
init();
else if (key[0] == KEY_SOFT2)// 右软键退出
ChevyMidlet.quitApp();
if (state == PLAY) {// 游戏中
switch (getKeyStates()) {// 游戏按键判断
case UP_PRESSED:
circleY -= speed;
break;
case DOWN_PRESSED:
circleY += speed;
break;
case LEFT_PRESSED:
circleX -= speed;
break;
case RIGHT_PRESSED:
circleX += speed;
break;
}
// 边界判断
if (circleX < 0)
circleX = 0;
else if (circleX > width - diameter)
circleX = width - diameter;
if (circleY < 0)
circleY = 0;
else if (circleY > height - diameter)
circleY = height - diameter;
think();// 敌人思考
food();// 食物
state = gameState();
}
}
/**
* 食物的判断
*
*/
private void food() {
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 541 2009-08-17 23:48 追逐游戏\ChevyGame\.project
文件 259 2009-08-15 00:07 追逐游戏\ChevyGame\.eclipseme
文件 242 2009-08-15 00:07 追逐游戏\ChevyGame\.classpath
文件 183 2009-08-15 00:07 追逐游戏\ChevyGame\AI.jad
文件 8223 2009-08-17 23:49 追逐游戏\ChevyGame\verified\classes\ChevyCanvas.class
文件 993 2009-08-17 23:49 追逐游戏\ChevyGame\verified\classes\ChevyMidlet.class
文件 166 2009-08-15 00:07 追逐游戏\ChevyGame\.settings\org.eclipse.jdt.core.prefs
文件 10381 2009-08-17 23:49 追逐游戏\ChevyGame\src\ChevyCanvas.java
文件 632 2009-08-17 23:49 追逐游戏\ChevyGame\src\ChevyMidlet.java
文件 7489 2009-08-17 23:49 追逐游戏\ChevyGame\res\ChevyCanvas.class
文件 973 2009-08-17 23:49 追逐游戏\ChevyGame\res\ChevyMidlet.class
文件 15992 2009-08-17 23:49 追逐游戏\ChevyGame.png
目录 0 2009-08-17 23:49 追逐游戏\ChevyGame\verified\libs
目录 0 2009-08-17 23:49 追逐游戏\ChevyGame\verified\classes
目录 0 2009-08-17 23:49 追逐游戏\ChevyGame\verified
目录 0 2009-08-17 23:49 追逐游戏\ChevyGame\.settings
目录 0 2009-08-17 23:49 追逐游戏\ChevyGame\src
目录 0 2009-08-17 23:49 追逐游戏\ChevyGame\res
目录 0 2009-08-17 23:49 追逐游戏\ChevyGame
目录 0 2008-10-25 22:45 追逐游戏
----------- --------- ---------- ----- ----
46074 20
- 上一篇:MiniF28069用户手册
- 下一篇:Qt 获取Cookie
评论
共有 条评论