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

📄 canvaszhu.java

📁 用J2ME写的手机游戏
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
package zhu.src;

import java.io.*;
import java.util.Random;
import javax.microedition.lcdui.*;
import javax.microedition.rms.*;

public class CanvasZhu extends Canvas implements Runnable {
	private final byte Logo = -1;
	
	private final byte Nogo = 0;

	private final byte Menu = 1;

	private final byte Start = 2;

	private final byte Continue = 3;

	private final byte HelpForm = 4;

	private final byte AboutForm = 5;

	private final byte QuitApp = 6;

	private final byte FirstForm = 7;

	private final byte Result = 9;

	private final int LANG_ZHU = 25;// 分块图的边长
	
	private final int ZHUX = 200;//FirtForm中猪的x坐标

	private final byte YA_Y = 40;//悬崖的y坐标

	private final int WIDTH = this.getWidth();

	private final int HEIGHT = this.getHeight();

	private final String OK = "确定";

	private final String BACK = "返回";

	private final String FormMenu = "菜单";

	private final String FormMenuClose = "关闭菜单";

	private final String PAU = "返回";

	private final String ALERT = "请按任意键继续...";

	private final String GAMEHELP = "游戏规则:";

	private final String GAMEABOUT = "关于游戏:";

	private final String GAMEHELPTEXT = "游戏操作如下:";

	private final String FINALMENU = "重新开始     返回游戏";

	private final String[] FormMenuObj = { "退出游戏", "重新开始", "保存游戏" };

	private final String[] STRMENU = { "开始游戏", "继续游戏", "游戏帮助", "关于游戏", "退出游戏" };

	private final String[] GAMEABOUTTEXT = { "游戏名称:<<猪小弟>>; ", "版本号:1.0; ",
			"开发者:杨建锋;", "开发时间:2007年4月;\n\r " };

	private final String DEFENS = "现在得分:";

	private final String DEFENHIGH = "最高得分:";

	private Image logo;

	private Image nogo;
	
	private Image jian;

	private Image shi;

	private Image zhu;

	private Image dun;

	private Image menu;
	
	private Image qiqiu;
	
	private Image caozuo;
	
	private Image delang;
	
	private Image xiaozhu;
	
	private Image beijing;
	
	private Image qiqiulang;

	private Image donghuazuo;

	private Image donghuayou;

	private static String defenString;// 得分的字符串

	private static int defen;// 存贮 得分

	private static byte ii;// 狼数组中狼的数量

	private static byte index;// 界面跳转

	private static byte Menu_index;// 菜单序号,2为第一个 -1为退出游戏

	private static byte FormMeun_index;

	private static byte tushu;// 一组图片 画的次序 *

	private static byte tushuL;// 绘制狼走动动化切图的序号

	private static byte tushuZ;// 绘制猪走动动化切图的序号

	private static byte jiani;// 得到箭数组中,下标为jiani的箭在ZHUX位置

	private static byte[] langfangxiang = new byte[3];// 狼的方向

	private static int langStartx;// 狼在Strat里的x坐标

	private static int[] langx = new int[3];// FirstForm 右移动和上升的狼的 x坐标

	private static int[] langy = new int[3];// FirstForm 右移动和上升的狼的 y坐标

	private static int zhux;// Start中猪的x坐标

	private static int zhuFirstFormy;// FirstForm用到

	private static byte langLife;// 上去的狼的数量

	private static boolean boolrun;// 线程开关

	private static int[] langLifeArray = new int[9];// 上到崖上的狼数组

	private static int[][] jianArray = new int[4][2];// 箭的x,y坐标

	private static byte jiange;// 猪手中发射出箭 后阁jiange 后出现下一支

	private static boolean controljian;// 箭发射后,隔一段时间(jiange 变量控制),控制生成下一个猪手中的箭

	private static boolean[] boolQiqiu = new boolean[3];// 气球是否 破 false 是破的

	private static boolean[] boolDun = new boolean[3];// 控制盾是否 绘制

	private static boolean[] controlMove = new boolean[3];// 控制狼被杀死后,落下,不能执行向上移动

	private static boolean[] defenbool = new boolean[3];// 控制杀死一中狼中得分一次;

	private static int shix;// 初始化石头的x坐标

	private static int shiy; // 初始化石头的y坐标

	private static int[] qiqiuy = new int[3]; // 气球的y坐标

	private static byte []t = new byte[3];// 初始化 第一个狼上升前 右移 的总次数 随机生成

	private static byte[] temp = new byte[3];// 初始化 第一个狼上升前 右移 的次数

	private static boolean[] bool = new boolean[3];// 碰撞判断

	private static boolean keyControl; // 游戏结束 按键响应控制

	private static boolean pressedUp;// 控制连续按上键

	private static boolean pressedDown;// 控制连续按下键

	private static byte jixu;// 控制菜单项继续游戏 是否可用

	private Thread thr;// 线程对象

	private RecordStore rs = null;

	private Random r = new Random();

	private Runtime rt = Runtime.getRuntime();

	CanvasZhu() {
		try {
			logo=Image.createImage("/zhu/res/logo.png");
			donghuazuo = Image.createImage("/zhu/res/donghuazuo.png");
			donghuayou = Image.createImage("/zhu/res/donghuayou.png");
			shi = Image.createImage("/zhu/res/shi.png");
			xiaozhu = Image.createImage("/zhu/res/xiaozhu.png");
			qiqiulang = Image.createImage("/zhu/res/qiqiulang.png");
			zhu = Image.createImage("/zhu/res/zhu.png");
			qiqiu = Image.createImage("/zhu/res/qiqiu.png");
			delang = Image.createImage("/zhu/res/delang.png");
			jian = Image.createImage("/zhu/res/jian.png");
			dun = Image.createImage("/zhu/res/dun.png");
			menu = Image.createImage("/zhu/res/menu.png");
			// 创建记录集
			rs = RecordStore.openRecordStore("recordlist", true);
			// 读取记录集1中的数据
			String s="";
			if (rs.getNumRecords() == 0) {
				s= String.valueOf(jixu);
				rs.addRecord(s.getBytes(), 0, s.getBytes().length);
			}else{
				s = new String(rs.getRecord(1));
				jixu = Byte.parseByte(s);
			}
			s=null;
			rs.closeRecordStore();
		} catch (Exception e) {
		}
		//线程控制
		boolrun = true;
		// 初始化变量
		index = Logo;
		Menu_index = 2;
		shix = 160;
		shiy = YA_Y;
		keyControl = true;
		defenString = DEFENS;
		zhux = WIDTH;
		zhuFirstFormy = ZHUX;
		langStartx = WIDTH + LANG_ZHU;
		// 箭初始化
		for (int i = 0; i < jianArray.length; i++) {
			jianArray[i][0] = -(LANG_ZHU - 5);
		}
		// 初始化上到崖上的狼的位置
		for (int i = 0; i < langLifeArray.length; i++) {
			langLifeArray[i] = (shix - LANG_ZHU - i * LANG_ZHU);
			/** 第一个LANG_ZHU位石头图宽 */
		}
		// FirstForm静态数组 初始化
		for (int i = 0; i < 3; i++) {
			langy[i] = HEIGHT;
			defenbool[i] = true;
			controlMove[i] = true;
			qiqiuy[i] = (HEIGHT - LANG_ZHU);// 初始化气球的位置
			t[i] = (byte) (Math.abs(r.nextInt() % 28) + 5);
		}
		jianArray[0][0] = ZHUX;// 箭的x起始位置
		jianArray[0][1] = (zhuFirstFormy - 8);// 箭的y起始位置

		thr = new Thread(this);// 线程对象
		thr.start();// 开启线程

	}

	private void ChuShiHua() {// 初始化数据
		// 初始化变量
		ii = 0;
		defen = 0;
		jiani = 0;
		tushu = 0;
		jiange = 0;
		langLife = 0;
		Menu_index = 2;
		shix = 160;
		shiy = YA_Y;
		controljian = false;
		keyControl = true;
		pressedUp = false;
		pressedDown = false;
		zhux = WIDTH;
		zhuFirstFormy = ZHUX;
		langStartx = WIDTH + LANG_ZHU;
		defenString = DEFENS;
		/** ****FirstForm静态数组 初始化**** */
		for (int i = 0; i < 3; i++) {
			langx[i] = 0;
			langy[i] = HEIGHT;
			qiqiuy[i] = (HEIGHT - LANG_ZHU);// 初始化气球的位置
			controlMove[i] = true;
			boolQiqiu[i] = false;
			boolDun[i] = false;
			defenbool[i] = true;
			t[i] = (byte) (Math.abs(r.nextInt() % 28) + 5);
			temp[i] = 0;
			bool[i] = false;
			langfangxiang[i] = 0;
		}
		/** ********箭初始化******** */
		for (int i = 0; i < jianArray.length; i++) {
			jianArray[i][0] = -(LANG_ZHU - 5);
		}
		/** ****初始化上到崖上的狼的位置**** */
		for (int i = 0; i < langLifeArray.length; i++) {
			langLifeArray[i] = (shix - LANG_ZHU - i * LANG_ZHU);// 第一个LANG_ZHU位石头图宽
		}
		/** ****箭的x,y起始位置**** */
		jianArray[0][0] = ZHUX;
		jianArray[0][1] = (zhuFirstFormy - 8);
	}

	protected void paint(Graphics a) {
		// 清屏
		a.setColor(0xffffff);
		a.fillRect(0, 0, WIDTH, HEIGHT);
		a.setColor(0);
		switch (index) {
		case Logo:
			paintLogo(a);
			break;
		case Nogo:
			paintNogo(a);
			break;
		case Menu:
			paintMenu(a);
			break;
		case Start:
			paintStart(a);
			break;
		case HelpForm:
			paintHelpForm(a);
			break;
		case AboutForm:
			paintAboutForm(a);
			break;
		case FirstForm:
			paintFirstForm(a);
			break;
		case Result:
			paintResult(a);
			break;
		}
	}

	private void paintqietu(Graphics g, int x, int y, int tushu, int n,
			byte fangxiang) {
		// x,y为绘出的图左上的位置,tushu是要切换的图,n为0时 为狼的切图,为25(每块图的边长)时为猪的切图.
		g.setClip(x - 25 + n, y - 25, 25, 25);
		if (fangxiang == 3) {
			g.drawImage(donghuazuo, x - 25 - 25 * tushu, y - 25 - n,
					Graphics.TOP | Graphics.LEFT);
		} else {
			g.drawImage(donghuayou, x - 25 + n - 25 * tushu, y - 25 - n,
					Graphics.TOP | Graphics.LEFT);
		}
		g.setClip(0, 0, WIDTH, HEIGHT);
	}

	private void paintFirstFormJian(Graphics g) { // 箭的绘制
		for (int j = 0; j < jianArray.length; j++) {
			// 箭的绘制
			if (jianArray[j][0] != ZHUX && jianArray[j][0] != -(LANG_ZHU - 5)) {
				g.drawImage(jian, jianArray[j][0], jianArray[j][1],
						Graphics.BOTTOM | Graphics.LEFT);
			}
			if (jianArray[j][0] == ZHUX) {
				g.drawImage(jian, jianArray[j][0], zhuFirstFormy - 8,
						Graphics.BOTTOM | Graphics.LEFT);
			}
		}
	}

	private void paintFirstFormLang(Graphics g) { // 狼绘制
		// 崖上的狼绘制
		if (langLife > 2) {
			for (int j = 0; j < langLife; j++) {
				paintqietu(g, langLifeArray[j] + tushuZ * 4, YA_Y, tushuL, 0,
						(byte) 0);
			}
		} else {
			for (int j = 0; j < langLife; j++) {
				paintqietu(g, langLifeArray[j], YA_Y, tushuL, 0, (byte) 0);
			}
		}
		// 移动的狼的绘制
		for (int i = 0; i <= ii; i++) {
			switch (langfangxiang[i]) {
			case 0:
			case 4:// 向右
				paintqietu(g, langx[i], langy[i], tushuL, 0, langfangxiang[i]);
				break;
			case 3:// 向左移动
				paintqietu(g, langx[i], langy[i], tushuL, 0, langfangxiang[i]);
				break;
			case 2:// 死亡下落
				g.drawImage(delang, langx[i], langy[i], Graphics.BOTTOM
						| Graphics.RIGHT);
				break;
			case 1:// 向上飘
				g.drawImage(qiqiulang, langx[i], langy[i], Graphics.BOTTOM
						| Graphics.RIGHT);
				break;
			}
		}
	}

	private void paintFirstFormShi(Graphics g) {
		if (langLife > 2) {
			g.drawImage(shi, shix + tushuZ * 4, shiy, Graphics.BOTTOM
					| Graphics.RIGHT);
		} else {
			g.drawImage(shi, shix, shiy, Graphics.BOTTOM | Graphics.RIGHT);
		}
	}

	private void paintFirstFormDun_Qiqiu(Graphics g) {
		for (int i = 0; i <= ii; i++) {
			// 盾绘制
			if (boolDun[i]) {
				g.drawImage(dun, langx[i], langy[i], Graphics.BOTTOM
						| Graphics.RIGHT);
			}
			// 气球绘制
			if (boolQiqiu[i]) {
				g.drawImage(qiqiu, langx[i], qiqiuy[i], Graphics.BOTTOM
						| Graphics.RIGHT);
			}
		}
	}

	private void paintFirstFormMenu(Graphics g) {
		// private final String[] FormMenu={"退出游戏","重新开始","保存游戏"};
		if (!boolrun) {
			g.setColor(0xF5C580);
			g.fillRect(1, HEIGHT - 65, 50, 50);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -