📄 start.java
字号:
import java.io.IOException;
import java.io.InputStream;
import java.util.Random;
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.LayerManager;
import javax.microedition.lcdui.game.Sprite;
import javax.microedition.lcdui.game.TiledLayer;
import javax.microedition.media.Manager;
import javax.microedition.media.MediaException;
import javax.microedition.media.Player;
public class Start extends GameCanvas implements Runnable {
private LayerManager lm;
private Sprite fei; // 左边人物
private Sprite jing; // 右边人物
private Sprite c3; // 左人物手雷
private Sprite c4; // 左边力度指示
private Sprite c5; // 右边力度指示
private Sprite c6; // 右边人物手雷
private Sprite jdzs; // 左边角度指示
private Sprite jdzs2; // 右边角度指示
private Sprite bzxg; // 手雷爆炸效果
private TiledLayer tiled;
private Image infoBar;
private int energy = 0;
private int energy2 = 110;
private Player ctwin;
private Player terwin;
private Player explode3;
private Player ct_fireinhole;
private Player sg_explode;
int x = getWidth() / 6;
int y = getHeight() * 37 / 40;
int m = getWidth() * 5 / 6;
int n = getHeight() * 33 / 40;
public int t = 1;
int pl = 5;// 力度移动值
int tm = 0;
int linshi;
double a = 0.85;
boolean aa = true;
boolean bb = false;
boolean cc = true;
boolean dd = false;
boolean ee = true;// 判断谁投弹
boolean ff = false;
boolean gg = false;
boolean bFire = false;
boolean bFire2 = false;
boolean jz = false;
boolean jz2 = false;
boolean t1t = false;
boolean t2t = false;
int V0 = 1;
int windSpeed;//风力
int xx = getWidth() / 5 - 5, yy = getHeight() * 4 / 5 - 32; // 左手雷坐标
int mm = getWidth() * 4 / 5 - 10, nn = getHeight() * 4 / 5 - 32; // 右手雷坐标
private int angle;// 投掷角度
private int vx, vy;
int sin;
int cos;
public Start() {
super(true);
lm = new LayerManager();
bzxg = createCharacter4("/gg.png"); // 创建爆炸效果
lm.append(bzxg);
bzxg.setVisible(false);
c3 = createCharacter3("/shoulei.png"); // 创建被抛物体
// c3.setPosition(xx, yy); // 设定被抛物体位置
lm.append(c3);
c6 = createCharacter3("/shoulei2.png"); // 创建被抛物体
// c6.setPosition(mm,nn); // 设定被抛物体位置
lm.append(c6);
tiled = createBackGround();
tiled.setPosition(58, getHeight() * 3 / 5 + 31);
lm.append(tiled);
fei = createCharacter("/fei.png"); // 创建匪徒
fei.setPosition(getWidth() / 5 - 32, getHeight() * 3 / 5); // 设定左边人物位置
lm.append(fei);
jing = createCharacter("/jing.png"); // 创建警察
jing.setPosition(getWidth() * 4 / 5 - 24, getHeight() * 3 / 5); // 设定右边人物位置
lm.append(jing);
c4 = createCharacter1("/1.png"); // 创建左边力度指示
c4.setPosition(x, y); // 设定左边力度位置
lm.append(c4);
c5 = createCharacter1("/1.png"); // 创建右边力度指示
c5.setPosition(m, y); // 设定右边力度位置
lm.append(c5);
jdzs = createCharacter2("/ljian.png"); // 指示抛掷方向
jdzs.setPosition(getWidth() / 5 + 22, getHeight() * 4 / 5 - 80);
lm.append(jdzs);
jdzs.setVisible(false);
jdzs2 = createCharacter2("/rjian.png"); // 指示抛掷方向
jdzs2.setPosition(getWidth() * 4 / 5 - 58, getHeight() * 4 / 5 - 80);
lm.append(jdzs2);
jdzs2.setVisible(false);
try {
infoBar = Image.createImage("/InfoBar.png");
} catch (IOException e) {
System.err.println("Failed loading images!");
}
try {
InputStream is = getClass().getResourceAsStream("ctwin.wav");
ctwin = Manager.createPlayer(is, "audio/X-wav");
ctwin.prefetch();
is = getClass().getResourceAsStream("terwin.wav");
terwin = Manager.createPlayer(is, "audio/X-wav");
terwin.prefetch();
is = getClass().getResourceAsStream("explode3.wav");
explode3 = Manager.createPlayer(is, "audio/X-wav");
explode3.prefetch();
is = getClass().getResourceAsStream("ct_fireinhole.wav");
ct_fireinhole = Manager.createPlayer(is, "audio/X-wav");
ct_fireinhole.prefetch();
is = getClass().getResourceAsStream("sg_explode.wav");
sg_explode = Manager.createPlayer(is, "audio/X-wav");
sg_explode.prefetch();
} catch (IOException ioe) {
} catch (MediaException me) {
}
}
Random rdm=new Random();//产生随机数
private void gameRun() {
if (bFire) {
xx = (vx+windSpeed )* t + getWidth() / 5 - 5;
yy = getHeight() * 4 / 5 - 32 - (vy * t - t * t);
}
}
private void gameRun2() {
if (bFire2) {
mm = getWidth() * 4 / 5 - 10 - (vx-windSpeed ) * t;
nn = getHeight() * 4 / 5 - 32 - (vy * t - t * t);
}
}
private Sprite createCharacter(String pic) { // 创建人物图片
Image img = null;
try {
img = Image.createImage(pic);
} catch (Exception exp) {
System.out.println(exp);
}
return new Sprite(img, 56, 85);
}
private Sprite createCharacter3(String pic) { // 创建手雷
Image img = null;
try {
img = Image.createImage(pic);
} catch (Exception exp) {
System.out.println(exp);
}
return new Sprite(img);
}
private Sprite createCharacter1(String pic) { // 创建边力度指示图片
Image img = null;
try {
img = Image.createImage(pic);
} catch (Exception exp) {
System.out.println(exp);
}
return new Sprite(img);
}
private Sprite createCharacter2(String pic) { // 创建箭图片
Image img = null;
try {
img = Image.createImage(pic);
} catch (Exception exp) {
System.out.println(exp);
}
return new Sprite(img, 50, 50);
}
private Sprite createCharacter4(String pic) { // 创建爆炸效果
Image img = null;
try {
img = Image.createImage(pic);
} catch (Exception exp) {
System.out.println(exp);
}
return new Sprite(img, 32, 32);
}
public TiledLayer createBackGround() {
Image img = null;
try {
img = Image.createImage("/shan.png");
} catch (Exception exp) {
System.out.println(exp);
}
TiledLayer tiledLayer = new TiledLayer(4, 2, img, 32, 32);
int[] map = { 0, 1, 3, 0, 1, 2, 2, 3, };
for (int i = 0; i < map.length; i++) {
int column = i % 4;
int row = (i - column) / 4;
tiledLayer.setCell(column, row, map[i]);
}
return tiledLayer;
}
boolean conti = true;
int rate = 100;
int keystate = getKeyStates();
public void run() {
long st = 0; // 用于获得执行时时间
long et = 0; // 用于获得执行时时间
Graphics g = getGraphics();
while (conti) {
int keystate = getKeyStates();
st = System.currentTimeMillis(); // 获得当前时间
if (bFire) {
t += 1;
}
if (bFire2) {
t += 1;
}
if (ee) {
c3.setVisible(true);
c6.setVisible(true);
if (dd) {// 判断是否指示投掷方向
if (pl == 0) {
jdzs.nextFrame();
if ((keystate & LEFT_PRESSED) != 0) {
bFire = true;
V0 = (c4.getX() - 40) / 2 + 1; // 获得初速度
dd = false;
angle = jdzs.getFrame();
jdzs.setVisible(false); // 不显示抛掷方向
switch (angle) {
case 0:
sin = 0;
cos = 1;
break;
case 1:
sin = 15643;
cos = 98769;
break;
case 2:
sin = 35837;
cos = 95106;
break;
case 3:
sin = 50000;
cos = 86603;
break;
case 4:
sin = 62932;
cos = 77715;
break;
case 5:
sin = 77715;
cos = 62932;
break;
case 6:
sin = 86603;
cos = 50000;
break;
}
vx = cos * V0 / 100000;
vy = sin * V0 / 100000;
try {
ct_fireinhole.start();
} catch (MediaException me) {
}
ee = false;
bb = true;
}
}
}
c4.move(pl, 0); // 左力度指示移动
if (c4.getX() >= getWidth() / 2 - 32) {
c4.setPosition(x, y);// 设置到最初位置
}
if (pl == 5) {
if ((keystate & RIGHT_PRESSED) != 0) {// 了
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -