📄 game.java
字号:
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.TiledLayer;
import javax.microedition.lcdui.game.LayerManager;
import javax.microedition.lcdui.game.Sprite;
import java.util.Random;
public class Game extends GameCanvas implements Runnable{
Main_MIDlet m;
// Menu mn = new Menu(m,l);
private int score = 0;
private int life = 0;
private int bnum = 0;
private int snum = 0;
private int time = 0;
private int dietime = 0;
private boolean beg=true;
private boolean b=false;
private int num = 0;
private Random ra = null;
private Random ra2 = null;
private Random ra3 = null;
private Random ra4 = null;
Graphics g = null;
Image img = null;
Image img1 = null;
Image img2 = null;
Image img3 = null;
Image img4 = null;
Image img5 = null;
Image img6 = null;
Image img7 = null;
Image img8 = null;
Image img9 = null;
LayerManager lm = null;//层管理器
TiledLayer tl = null;//地图贴图
TiledLayer tl1 = null;
int index = 0;
private final int UP = 0;//怪物向上运动
private final int DOWN = 1;//怪物向下运动
private final int LEFT = 2;//怪物向左运动
private final int RIGHT = 3;//怪物向右运动
// int x1 = 128, y1 = 128;
// int x2 = 96, y2 = 128;
// int x3 = 128,y3 = 144;
// int x4 = 96, y4 = 144;
Sprite s = null;
Sprite s1 = null;
Sprite s2 = null;
Sprite s3 = null;
Sprite s4 = null;
Sprite s5 = null;
Sprite s6 = null;
Sprite s7 = null;
Sprite s8 = null;
Sprite s9 = null;
int direction = -1;
int direction1 = 0;
int direction2 = 0;
int direction3 = 0;
int direction4 = 0;
int direction5 = 0;
int direction6 = 0;
int direction7 = 0;
int direction8 = 0;
int array[] = {//地图数组
5, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 13 ,
11, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 11 ,
11, 0, 18, 15, 0, 8, 0, 4, 0, 8, 0, 18, 15, 0, 11 ,
11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11 ,
17, 13, 0, 12, 0, 0, 0, 0, 0, 0, 0, 12, 0, 16, 14 ,
0, 11, 0, 11, 0, 5, 0, 0, 0, 13, 0, 11, 0, 11, 0 ,
3, 14, 0, 4, 0, 11, 0, 0, 0, 11, 0, 4, 0, 17, 3 ,
0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0 ,
3, 13, 0, 8, 0, 17, 3, 3, 3, 14, 0, 8, 0, 16, 3 ,
0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0 ,
16, 14, 0, 8, 0, 18, 3, 1, 3, 15, 0, 8, 0, 17, 13 ,
11, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 11 ,
10, 15, 0, 18, 3, 15, 0, 4, 0, 18, 3, 15, 0, 18, 9 ,
11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11 ,
17, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 14
};
int array1[] ={
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ,
0, 7, 7, 7, 7, 7, 7, 0, 7, 7, 7, 7, 7, 7, 0 ,
0, 7, 0, 0, 7, 0, 7, 0, 7, 0, 7, 0, 0, 7, 0 ,
0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0 ,
0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0 ,
0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0 ,
0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0 ,
0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0 ,
0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0 ,
0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0 ,
0, 0, 7, 0, 7, 0, 0, 0, 0, 0, 7, 0, 7, 0, 0 ,
0, 7, 7, 7, 7, 7, 7, 0, 7, 7, 7, 7, 7, 7, 0 ,
0, 0, 7, 0, 0, 0, 7, 0, 7, 0, 0, 0, 7, 0, 0 ,
0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0 ,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};
public Game(Main_MIDlet m)
{
super(false);
try
{
img = Image.createImage("/cutpic.png");//地图资源图片
img1 = Image.createImage("/sprite.png");
img2 = Image.createImage("/bigb.png");
img3 = Image.createImage("/victery.png");
img4 = Image.createImage("/fail.png");
img5 = Image.createImage("/lives.png");
img6 = Image.createImage("/score.png");
img7 = Image.createImage("/pac.png");
img8 = Image.createImage("/pacman.png");
img9 = Image.createImage("/pacdie.png");
}catch(Exception e)
{
System.out.println("Test load error");
}
ra = new Random();//实例化随机数对象
ra2 = new Random();
ra3 = new Random();
ra4 = new Random();
lm = new LayerManager();
s = new Sprite(img8,16,16);
s1 = new Sprite(img1,16,16);
s2 = new Sprite(img1,16,16);
s3 = new Sprite(img1,16,16);
s4 = new Sprite(img1,16,16);
s5 = new Sprite(img2,16,16);
s6 = new Sprite(img2,16,16);
s7 = new Sprite(img2,16,16);
s8 = new Sprite(img2,16,16);
s9 = new Sprite(img9,16,16);
tl1 = new TiledLayer(15,15,img,16,16);
// index = tl1.createAnimatedTile(6);
tl = new TiledLayer(15,15,img,16,16);
tl.setVisible(true);//设置地图贴图为可见
int i = 0;
for(int col = 0; col < 15;col++)
{
for(int row = 0; row < 15; row++)
{
tl.setCell(row, col, array[i]);//为贴图单元格中填充图片
tl1.setCell(row, col, array1[i]);
i ++ ;
}
}
s9.setPosition(-16, 0);
s.setFrame(9);
s1.setFrame(0);
s2.setFrame(4);
s3.setFrame(8);
s4.setFrame(12);
s5.setPosition(16, 208);
s6.setPosition(208, 208);
s7.setPosition(208, 16);
s8.setPosition(16, 16);
s.setPosition(112, 144);
s1.setPosition(128, 96);
s2.setPosition(96, 96);
s3.setPosition(128, 112);
s4.setPosition(96, 112);
lm.append(s9);
lm.append(s);
lm.append(s1);
lm.append(s2);
lm.append(s3);
lm.append(s4);
lm.append(s5);
lm.append(s6);
lm.append(s7);
lm.append(s8);
lm.append(tl1);
lm.append(tl);
setFullScreenMode(true);
this.m = m;
g = getGraphics();
render(g);
new Thread(this).start();
}
// public void begin(){
// while(beg == true){
//
// s.setFrameSequence(new int[]{18,20});
// s.move(-16, 0);
// num ++;
// if(num == 3){
// beg = false;
// }
// }
// }
public int catchPac1(){
if(b){
if(s.getX()==s1.getX() && s.getY()>s1.getY()){
direction2 = UP;
}else if(s.getX()==s1.getX() && s.getY()<s1.getY()){
direction2 = DOWN;
}else if(s.getY()==s1.getY() && s.getX()>s1.getX()){
direction2 = LEFT;
}else if(s.getY()==s1.getY() && s.getX()<s1.getX()){
direction2 = RIGHT;
}
snum ++;
if(snum > 12){
snum=0;
b=false;
}
}else{
if(s.getX()==s1.getX() && s.getY()>s1.getY()){
direction2 = DOWN;
}else if(s.getX()==s1.getX() && s.getY()<s1.getY()){
direction2 = UP;
}else if(s.getY()==s1.getY() && s.getX()>s1.getX()){
direction2 = RIGHT;
}else if(s.getY()==s1.getY() && s.getX()<s1.getX()){
direction2 = LEFT;
}
}
return direction2;
}
public int catchPac2(){
if(b){
if(s.getX()==s2.getX() && s.getY()>s2.getY()){
direction4 = UP;
}else if(s.getX()==s2.getX() && s.getY()<s2.getY()){
direction4 = DOWN;
}else if(s.getY()==s2.getY() && s.getX()>s2.getX()){
direction4 = LEFT;
}else if(s.getY()==s2.getY() && s.getX()<s2.getX()){
direction4 = RIGHT;
}
}else{
if(s.getX()==s2.getX() && s.getY()>s2.getY()){
direction4 = DOWN;
}else if(s.getX()==s2.getX() && s.getY()<s2.getY()){
direction4 = UP;
}else if(s.getY()==s2.getY() && s.getX()>s2.getX()){
direction4 = RIGHT;
}else if(s.getY()==s2.getY() && s.getX()<s2.getX()){
direction4 = LEFT;
}
}
return direction4;
}
public int catchPac3(){
if(b){
if(s.getX()==s3.getX() && s.getY()>s3.getY()){
direction6 = UP;
}else if(s.getX()==s3.getX() && s.getY()<s3.getY()){
direction6 = DOWN;
}else if(s.getY()==s3.getY() && s.getX()>s3.getX()){
direction6 = LEFT;
}else if(s.getY()==s3.getY() && s.getX()<s3.getX()){
direction6 = RIGHT;
}
}else{
if(s.getX()==s3.getX() && s.getY()>s3.getY()){
direction6 = DOWN;
}else if(s.getX()==s3.getX() && s.getY()<s3.getY()){
direction6 = UP;
}else if(s.getY()==s3.getY() && s.getX()>s3.getX()){
direction6 = RIGHT;
}else if(s.getY()==s3.getY() && s.getX()<s3.getX()){
direction6 = LEFT;
}
}
return direction6;
}
public int catchPac4(){
if(b){
if(s.getX()==s4.getX() && s.getY()>s4.getY()){
direction8 = UP;
}else if(s.getX()==s4.getX() && s.getY()<s4.getY()){
direction8 = DOWN;
}else if(s.getY()==s4.getY() && s.getX()>s4.getX()){
direction8 = LEFT;
}else if(s.getY()==s4.getY() && s.getX()<s4.getX()){
direction8 = RIGHT;
}
}else{
if(s.getX()==s4.getX() && s.getY()>s4.getY()){
direction8 = DOWN;
}else if(s.getX()==s4.getX() && s.getY()<s4.getY()){
direction8 = UP;
}else if(s.getY()==s4.getY() && s.getX()>s4.getX()){
direction8 = RIGHT;
}else if(s.getY()==s4.getY() && s.getX()<s4.getX()){
direction8 = LEFT;
}
}
return direction8;
}
public void input()
{
int keyState = getKeyStates();
if((keyState & LEFT_PRESSED) != 0)
{
if(direction != LEFT){
direction = LEFT;
s.setFrameSequence(new int[]{9,10,11});
}
}else if((keyState & UP_PRESSED) != 0)
{
if(direction != UP){
direction = UP;
s.setFrameSequence(new int[]{6,7,8});
}
}else if((keyState & DOWN_PRESSED) != 0)
{
if(direction != DOWN){
direction = DOWN;
s.setFrameSequence(new int[]{0,1,2});
}
}else if((keyState & RIGHT_PRESSED) != 0)
{
if(direction != RIGHT){
direction = RIGHT;
s.setFrameSequence(new int[]{3,4,5});
}
}
switch(direction){
case UP://小球向上运动
// if(direction != UP){
// s.setFrameSequence(new int[]{16,20});
// }
s.nextFrame();
s.move(0, -16);
break;
case DOWN://小球向下运动
// if(direction != DOWN){
// s.setFrameSequence(new int[]{17,20});
// }
s.nextFrame();
s.move(0, 16);
break;
case LEFT://小球向左运动
// if(direction != LEFT){
// s.setFrameSequence(new int[]{18,20});
// }
s.nextFrame();
s.move(-16, 0);
if(s.getX()<0){
s.setPosition(224, 112);
}
break;
case RIGHT://小球向右运动
// if(direction != RIGHT){
// s.setFrameSequence(new int[]{19,20});
// }
s.nextFrame();
s.move(16, 0);
if(s.getX()>224){
s.setPosition(0, 112);
}
break;
}
if(s.collidesWith(tl, true)){
switch(direction){
case UP://小球向上运动
s.move(0, 16);
break;
case DOWN://小球向下运动
s.move(0, -16);
break;
case LEFT://小球向左运动
s.move(16, 0);
break;
case RIGHT://小球向右运动
s.move(-16, 0);
break;
}
}
if(s.collidesWith(tl1, true)){
tl1.setCell(s.getX()/16, s.getY()/16, 0);
score +=10;
bnum ++;
// System.out.println(s.getX()+","+s.getY());
}
if(s.collidesWith(s1, false) || s.collidesWith(s2, false) || s.collidesWith(s3, false) || s.collidesWith(s4, false)){
life ++;
s9.setPosition(s.getX(), s.getY());
dietime = 1;
// if(dietime == 11){
// s.setPosition(112, 144);
// dietime = 0;
// }
}
// if(s.collidesWith(s2, false)){
// life ++;
// s.setPosition(112, 144);
// }
// if(s.collidesWith(s3, false)){
// life ++;
// s.setPosition(112, 144);
// }
// if(s.collidesWith(s4, false)){
// life ++;
// s.setPosition(112, 144);
// }
if(s.collidesWith(s5, false)){
s5.setPosition(0, 0);
lm.remove(s5);
score +=40;
b = true;
}
if(s.collidesWith(s6, false)){
s6.setPosition(0, 0);
lm.remove(s6);
score +=40;
// b = true;
}
if(s.collidesWith(s7, false)){
s7.setPosition(0, 0);
lm.remove(s7);
score +=40;
b = true;
}
if(s.collidesWith(s8, false)){
s8.setPosition(0, 0);
lm.remove(s8);
score +=40;
b = true;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -