⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 start.java

📁 我编写的第一个算是可以玩的手机游戏请使用wtk2.2,MIDP2.0运行.
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
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 + -