📄 game.java
字号:
import java.util.Random;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.lcdui.game.Sprite;
import javax.microedition.lcdui.game.LayerManager;
import javax.microedition.media.MediaException;
public class Game extends GameCanvas implements Runnable {
boolean conti = true;
boolean hit = false;
boolean des = false;
boolean other = false;
static int point;
int c = 0,diff;
int rate = 200;
int x=32,y=70,v=0,position=0,hillX1 = 0,hillX2 = -128;
int eX1=18,eX2=36,eX3=80,
eY1=30,eY2=30,eY3=30;
int bossTime = 2980;
int day_backSeq[] = {1},night_backSeq[] = {3};
int iSeq[] = {0,1},
eSeq1[] = {240},eSeq2[] = {96},eSeq3[] = {246},eBoss1[] = {84},
eSeq11[] = {241},eSeq22[] = {97},eSeq33[] = {247},eBoss2[] = {85},
eSeq111[] = {242},eSeq222[] = {98},eSeq333[] = {248},eBoss3[] = {108},
eSeq1111[] = {243},eSeq2222[] = {99},eSeq3333[] = {249},eBoss4[] = {109},
eBoom1[] = {244},eBoom2[] = {100},eBoom3[] = {250},
eBoom11[] = {245},eBoom22[] = {110},eBoom33[] = {251},
eHit1[] = {265},eHit2[] = {111},eHit3[] = {271},
sleepSeq1[] = {120,121,122},sleepSeq2[] = {48,49,50},sleepSeq3[] = {72,73,74},sleepSeq4[] = {144,145,146},sleepSeq5[] = {96,97,98},
sleepD1[]= {123},sleepD2[]= {51},sleepD3[]= {75},sleepD4[]= {147},sleepD5[]= {99},
wSeq1[]={1111,1062,1063,1064,1065,1066,1067,1068,1069,1110},wSeq2[]={1111,1062,1063,1064,1065,1066,1067,1068,1069,1110},wSeq3[]={1111,1063,1065,1067,1069},wSeq4[]={1111},
g_day_Seq[] = {2,7,8},g_night_Seq[] = {9,10,11},
hillSeq1[] = {4},hillSeq2[] = {5};
Sprite i,e1,e2,e3,sleep1,sleep2,sleep3,sleep4,sleep5,back,ground1,ground2,w1,w2,w3,w4,hill1,hill2;
LayerManager lm;
public Game(int p) {
super(true);
//=================================================================================
if(p == -1) {
point =0;
other = true;
}
else point = p;
//=================================================================================
lm = new LayerManager();
Image img = null;
try {
img = Image.createImage("/all.png");
}catch(Exception e) {
}
back = new Sprite(img,128,128);
i = new Sprite(img,64,64);
e1 = new Sprite(img,32,32);
e2 = new Sprite(img,64,32);
e3 = new Sprite(img,32,32);
sleep1 = new Sprite(img,32,32);
sleep2 = new Sprite(img,32,32);
sleep3 = new Sprite(img,32,32);
sleep4 = new Sprite(img,32,32);
sleep5 = new Sprite(img,32,32);
w1 = new Sprite(img,16,16);
w2 = new Sprite(img,16,16);
w3 = new Sprite(img,16,16);
w4 = new Sprite(img,16,16);
ground1 = new Sprite(img,128,128);
ground2 = new Sprite(img,128,128);
hill1 = new Sprite(img,128,32);
hill2 = new Sprite(img,128,32);
i.setFrameSequence(iSeq);
sleep1.setFrameSequence(sleepSeq1);
sleep2.setFrameSequence(sleepSeq2);
sleep3.setFrameSequence(sleepSeq3);
sleep4.setFrameSequence(sleepSeq1);
sleep5.setFrameSequence(sleepSeq3);
e1.setFrameSequence(eSeq1);
e2.setFrameSequence(eSeq2);
e3.setFrameSequence(eSeq3);
w1.setFrameSequence(wSeq1);
w2.setFrameSequence(wSeq2);
w3.setFrameSequence(wSeq3);
w4.setFrameSequence(wSeq4);
ground1.setFrameSequence(g_day_Seq);
ground2.setFrameSequence(g_night_Seq);
hill1.setFrameSequence(hillSeq1);
hill2.setFrameSequence(hillSeq2);
back.setFrameSequence(day_backSeq);
sleep1.setPosition(12,64);
sleep2.setPosition(48,64);
sleep3.setPosition(85,64);
sleep4.setPosition(7,90);
sleep5.setPosition(100,90);
e1.setPosition(eX1,eY1);
e2.setPosition(eX2,eY2);
e3.setPosition(eX3,eY3);
w1.setPosition(10,10);
w2.setPosition(25,10);
w3.setPosition(40,10);
w4.setPosition(55,10);
ground1.setPosition(0,0);
ground2.setPosition(0,0);
hill1.setPosition(hillX1,42);
hill2.setPosition(hillX2,42);
back.setPosition(0,0);
e1.setVisible(false);
e2.setVisible(false);
e3.setVisible(false);
ground2.setVisible(false);
//=================================================================
if(!other) {
if(p == 0) {
diff = 3;
}
else if(p == 320) {
diff = 2;
sleep4.setVisible(false);
sleep5.setVisible(false);
w2.setFrame(3);
}
else if(p == 1020) {
diff = 1;
sleep3.setVisible(false);
sleep4.setVisible(false);
sleep5.setVisible(false);
w1.setFrame(1);
}
}else {
diff = 1;
}
//==================================================================
lm.append(i);
lm.append(sleep1);
lm.append(sleep2);
lm.append(sleep3);
lm.append(sleep4);
lm.append(sleep5);
lm.append(e1);
lm.append(e2);
lm.append(e3);
lm.append(w1);
lm.append(w2);
lm.append(w3);
lm.append(w4);
lm.append(hill1);
lm.append(hill2);
lm.append(ground1);
lm.append(ground2);
lm.append(back);
}
public void ai() {
Random r = new Random();
int p = (r.nextInt()>>>1)%5;
switch(p) {
case 0:
e1.setVisible(true);
break;
case 1:
e2.setVisible(true);
break;
case 2:
e3.setVisible(true);
break;
case 3:
break;
case 4:
break;
}
position = p;
}
public void input(int p) {
int key = getKeyStates();
if(((key & LEFT_PRESSED)!=0)&(p==0)) {
hit = true;
if(!des)
e1.setFrameSequence(eHit1);
}else if(((key & FIRE_PRESSED)!=0&(p==1))) {
hit = true;
if(!des)
e2.setFrameSequence(eHit2);
}else if(((key & RIGHT_PRESSED)!=0&(p==2))) {
hit = true;
if(!des)
e3.setFrameSequence(eHit3);
}else if((key & DOWN_PRESSED)!=0) {
boolean b = true;
while(b) {
int key2 = getKeyStates();
if((key2 & DOWN_PRESSED)!=0)
b = false;
}
}else {
if((v==10)&(!des)&(p!=3)&(p!=4)) {
if(sleep1.isVisible()) {
sleep1.setFrameSequence(sleepD1);
}
else if((!sleep1.isVisible())&sleep2.isVisible()) {
sleep2.setFrameSequence(sleepD2);
}
else if((!sleep2.isVisible())&sleep3.isVisible()) {
sleep3.setFrameSequence(sleepD3);
}
else if((!sleep3.isVisible())&sleep4.isVisible()) {
sleep4.setFrameSequence(sleepD4);
}
else if(!sleep4.isVisible()) {
sleep5.setFrameSequence(sleepD5);
}
}
}
if(v==5) {
if(sleep1.getFrameSequenceLength()==1)
sleep1.setVisible(false);
if(sleep2.getFrameSequenceLength()==1)
sleep2.setVisible(false);
if(sleep3.getFrameSequenceLength()==1)
sleep3.setVisible(false);
if(sleep4.getFrameSequenceLength()==1)
sleep4.setVisible(false);
if(sleep5.getFrameSequenceLength()==1)
sleep5.setVisible(false);
}
if(hit) {
++c;
hit = false;
}
if(v == 10)
c = 0;
if(c == diff) {
if(Text.music != 1) {//TODO
try {
Begin.playGun.start();
}catch(MediaException me) {
}
}
switch(p) {
case 0:
e1.setFrameSequence(eBoom1);
break;
case 1:
e2.setFrameSequence(eBoom2);
break;
case 2:
e3.setFrameSequence(eBoom3);
break;
}
c =0;
point += 20;
des = true;
w3.nextFrame();
if(w3.getFrame() == 0) {
w2.nextFrame();
if(w2.getFrame() == 0)
w1.nextFrame();
}
}
}
public void move(int i) {
switch(i) {
case 0:
eX1 -= 2;
eY1 += 1;
break;
case 1:
eY2 += 1;
break;
case 2:
eX3 += 2;
eY3 += 1;
break;
}
if(!des) {
if((eY1>32)&(eY1<36)) {//e1
e1.setFrameSequence(eSeq11);
}else if((eY2>35)&(eY2<38)) {
e1.setFrameSequence(eSeq111);
}else if((eY3>37)&(eY2<40)) {
e1.setFrameSequence(eSeq1111);
}else if((eY2>32)&(eY2<36)) {//e2
if(point==bossTime)
e2.setFrameSequence(eBoss2);
else e2.setFrameSequence(eSeq22);
}else if((eY2>35)&(eY2<38)) {
if(point==bossTime)
e2.setFrameSequence(eBoss3);
else e2.setFrameSequence(eSeq222);
}else if((eY2>37)&(eY2<40)) {
if(point==bossTime)
e2.setFrameSequence(eBoss4);
else e2.setFrameSequence(eSeq2222);
}else if((eY3>32)&(eY2<36)) {//e3
e3.setFrameSequence(eSeq33);
}else if((eY3>35)&(eY2<38)) {
e3.setFrameSequence(eSeq333);
}else if((eY3>37)&(eY2<40)) {
e3.setFrameSequence(eSeq3333);
}
}
if(eY1>39) {
eX1=18;
eY1=30;
e1.setVisible(false);
e1.setFrameSequence(eSeq1);
}else if(eY2>39) {
eX2=36;
eY2=30;
e2.setVisible(false);
e2.setFrameSequence(eSeq2);
}else if(eY3>39) {
eX3=80;
eY3=30;
e3.setVisible(false);
e3.setFrameSequence(eSeq3);
}
hillX1 += 10;
hillX2 += 10;
if(hillX1 > 128) {
hillX1 = -128;
}
if(hillX2 > 128) {
hillX2 = -128;
}
}
public void boss(int po) {
if(po == bossTime) {
e2.setVisible(true);
e2.setFrameSequence(eBoss1);
position = 1;
diff = 5;
}
}
public void render(Graphics g) {
i.nextFrame();
sleep1.nextFrame();
sleep2.nextFrame();
sleep3.nextFrame();
sleep4.nextFrame();
sleep5.nextFrame();
e1.nextFrame();
e2.nextFrame();
e3.nextFrame();
ground1.nextFrame();
ground2.nextFrame();
i.setPosition(x,y);
e1.setPosition(eX1,eY1);
e2.setPosition(eX2,eY2);
e3.setPosition(eX3,eY3);
hill1.setPosition(hillX1,30);
hill2.setPosition(hillX2,30);
lm.paint(g,0,0);
flushGraphics();
}
public void day_night() {
if(point == 100) {
ground1.setVisible(false);
ground2.setVisible(true);
back.setFrameSequence(night_backSeq);
}else if(point == 200) {
ground1.setVisible(true);
ground2.setVisible(false);
back.setFrameSequence(day_backSeq);
}
}
public void run() {
long st = 0;
long et = 0;
Graphics g = getGraphics();
while(conti) {
st = System.currentTimeMillis();
if(Text.music != 1) {//TODO
try {
Begin.playV.stop();
Begin.playFight.start();
}catch(MediaException me) {
}
}
if(v > 9) {
if((point ==bossTime)&(!other))//======================================
boss(point);
else ai();
v = 1;
hit = false;
des = false;
}else {
++v;
}
move(position);
input(position);
day_night();
render(g);
//=======================================================================
if(!other) {
if(point == 300) {
exit();
Begin.display.setCurrent(new Text(3));
}else if(point == 1000) {
exit();
Begin.display.setCurrent(new Text(4));
}else if(point == 3000) {
exit();
Text.save(point);
Begin.display.setCurrent(new Text(5));
}
}else {
if(point ==100) {
diff = 2;
}else if(point ==200) {
diff = 3;
}else if(point ==300) {
diff = 4;
}else if(point ==400) {
diff = 5;
}else if(point ==500) {
diff = 6;
}
}
// =======================================================================
if(!((sleep1.isVisible())|(sleep2.isVisible())|(sleep3.isVisible())|(sleep4.isVisible())|(sleep5.isVisible()))) {
exit();
Text.save(point);
if(other)
Begin.display.setCurrent(new Text(9));
else Begin.display.setCurrent(new Text(6));
}
et = System.currentTimeMillis();
if((et-st)<rate) {
try {
Thread.sleep(rate-(et-st));
}catch(Exception e) {
}
}
}
}
public void start() {
Thread t = new Thread(this);
t.start();
}
public void exit() {
conti = false;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -