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

📄 gameworld.java

📁 实现了 移动 碰撞检测
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
			case 1:
				drawFrame(mainMenu, 0, x, 180, 72, 17, 0, g);
				break;
			case 2:
				drawFrame(mainMenu, 0, x, 180, 72, 17, 1, g);
				break;
			case 3:
				drawFrame(mainMenu, 0, x, 180, 72, 17, 2, g);
				break;
			case 4:
				drawFrame(mainMenu, 0, x, 180, 72, 17, 3, g);
				break;
			case 5:
				drawFrame(mainMenu, 0, x, 180, 72, 17, 4, g);
				break;
			}
			if (true)
			{
				drawFrame(icoImage, 0, 40, 182, 6, 11, 0, g);
				drawFrame(icoImage, 1, 130, 182, 6, 11, 0, g);
			}
//            showMemory(g);
		}
		/** *************************音效设置************************** */
		if (setGame)
		{
			g.setColor(0x000000);
			g.fillRect(0, 0, screenWidth, screenHeight);
			drawFrame(menuSelect, 0, 53, 73, 68, 58, 0, g);
			drawFrame(menuSelect, 2, 53, 73, 68, 58, 0, g);
			if (sound)
			{
				drawFrame(menuSelect, 4, 53, 73, 68, 29, 0, g);
				drawFrame(menuSelect, 8, 53, 102, 34, 29, 1, g);
			} else
			{
				drawFrame(menuSelect, 9, 87, 102, 34, 29, 1, g);
			}
			if (!keyMenu)
			{
				keyTime += speed;
				if (keyTime >= 500)
				{
					keyMenu = true;
					keyTime = 0;
				}
			}
//            showMemory(g);
			return;
		}
		/** *************************帮助画面************************ */
		if (help)
		{
			if (!keyMenu)
			{
				keyTime += speed;
				if (keyTime >= 500)
				{
					keyMenu = true;
					keyTime = 0;
				}
			}

			g.setColor(0x000000);
			g.fillRect(0, 0, screenWidth, screenHeight);
			g.setColor(0xffffff);
			switch (helpItem)
			{
			case 0:
				g.drawString("        【剧情介绍】", 0, 20, 20);
				g.drawString("游戏中玩家扮演的是", 32, 40, 20);
				g.drawString("一位骁勇的特种兵,执行", 0, 60, 20);
				g.drawString("清剿叛乱份子的任务。游", 0, 80, 20);
				g.drawString("戏采用第一人称视角,视", 0, 100, 20);
				g.drawString("野随时间流逝而移动,玩", 0, 120, 20);
				g.drawString("家控制瞄准镜的移动,瞄", 0, 140, 20);
				g.drawString("准并射击消灭敌人。", 0, 160, 20);
				break;
			case 1:
				g.drawString("        【操作方式】", 0, 20, 20);
				g.drawString("菜单界面下,导航键控制", 0, 40, 20);
				g.drawString("光标移动,左软键确定 ,", 0, 60, 20);
				g.drawString("右软键取消游戏界面下 ,", 0, 80, 20);
				g.drawString("导航键或者 1 2 3 4 6 7 8 9", 0, 100, 20);
				g.drawString("八个键控制瞄准镜向八个", 0, 120, 20);
				g.drawString("对应的方向移动, 5 键进", 0, 140, 20);
				g.drawString("行单发射击,*  键发动空", 0, 160, 20);
				g.drawString("袭进行全屏攻击。", 0, 180, 20);
				break;
			case 2:
				g.drawString("        【系统介绍】", 0, 20, 20);
				g.drawString("游戏中玩家击败敌人", 32, 40, 20);
				g.drawString("一定几率获得生命值,全", 0, 60, 20);
				g.drawString("屏导弹以及常规子弹,由", 0, 80, 20);
				g.drawString("于数量有限并且威力巨大,", 0, 100, 20);
				g.drawString("所以建议用不要太浪费。", 0, 120, 20);
				g.drawString("不要妄想把所有的敌人都", 0, 140, 20);
				g.drawString("消灭,合理的利用现有资", 0, 160, 20);
				g.drawString("源才是取胜之道。", 0, 180, 20);
				break;
			}
//            showMemory(g);
			return;
		}
		/** *****************************************开***************场********************************* */
		if (isStartCaption)
		{// 显示开场序幕,
			if (!keyMenu)
			{
				keyTime += speed;
				if (keyTime >= 500)
				{
					keyMenu = true;
					keyTime = 0;
				}
			}
			level = 1;
			if (caption == null)
			{
				caption = new Image[2];
				caption[0] = loadImage("/actionMan.png");
				caption[1] = loadImage("/action.png");
			}
			g.setColor(0x000000);
			g.fillRect(0, 0, screenWidth, screenHeight);
			g.setColor(0xff0000);
			// 开始动画
			switch (startCaptionFlag / 50)
			{
			case 0:
				drawFrame(caption[0], 0, 0, 0, 91, 72, 0, buffImag
						.getGraphics());
				drawFrame(caption[1], 2, 0 - 2 - vx1, 0 - 10, 53, 60, 0,
						buffImag.getGraphics());
				drawFrame(caption[1], 3, 0 + 45 + vx1, 0 - 10, 53, 60, 0,
						buffImag.getGraphics());
				g.drawImage(buffImag, 0, 120, 20);
				if (vx1 < 15 && startCaptionFlag / 10 > 1)
					vx1++;
				break;
			case 1:
				drawFrame(caption[0], 1, 0, 0, 91, 72, 0, buffImag
						.getGraphics());
				drawFrame(caption[1], 4, 0 - vx2, 0 - 19, 53, 60, 0, buffImag
						.getGraphics());
				g.drawImage(buffImag, 85, 80, 20);
				if (vx2 < 15 && startCaptionFlag / 10 > 6)
					vx2++;
				break;
			case 2:
				drawFrame(caption[0], 2, 0, 0, 91, 72, 0, buffImag
						.getGraphics());
				drawFrame(caption[1], 1, 0 + 24, 0 + 35 - vx3, 53, 60, 0,
						buffImag.getGraphics());
				drawFrame(caption[1], 0, 0 + 25, 0 - 21, 53, 60, 0, buffImag
						.getGraphics());
				g.drawImage(buffImag, 85, 33, 20);
				if (vx3 < 15 && startCaptionFlag / 10 > 11)
					vx3++;
				break;
			case 3:
				drawFrame(caption[0], 3, 0, 0, 91, 72, 0, buffImag
						.getGraphics());
				drawFrame(caption[1], 5, 0 + 49 + vx4, 0 + vx4, 53, 60, 0,
						buffImag.getGraphics());
				g.drawImage(buffImag, 8, 8, 20);
				if (vx4 < 15 && startCaptionFlag / 10 > 16)
					vx4++;
				break;
			}
			if ((startCaptionFlag / 50) == 4)
			{// 开始游戏条件
				caption = null;
				isStartCaption = false;
				startCaptionFlag = 0;
				System.gc();
				initGame(20, level);
				gameStart = true;
				return;
			} else
			{
				startCaptionFlag++;
			}
//            showMemory(g);
			return;
		}

		if (isLoading)
		{
			g.setColor(0x000000);
			g.fillRect(0, 0, screenWidth, screenHeight);
			g.setColor(0xffffff);
			g.drawRect(19, screenHeight - 26, 131, 6);
			g.setColor(0xff2222);
			g.fillRect(20, screenHeight - 25, 8 * this.loadScale, 5);
//			drawFrame(this.gameLogoImage, 0, 0, 0, 176, 167, 0, g);
//            showMemory(g);
			return;
		}
		return;	
    }

    /**
	 * 绘制分数
	 * @param g   Graphics 画笔对象
	 * @param num int 分数
	 * @param x   int X坐标
	 * @param y   int Y坐标
	 * @param w   int 每一个数字的宽度
	 * @param h   int 每一个数字的高度
	 * @param im  Image 源图片
	 */
    final void paintNum(Graphics g, int num, int x, int y, int w, int h,
            Image im)
    {
		if (num == -1)
		{
			drawFrame(im, 0, x + w, y, w, h, 2, g);
		} else if (num == 1000000)
		{

		} else if (num > 100000)
		{

		} else if (num > 10000)
		{

		} else if (num > 1000)
		{

		} else if (num == 100)
		{
			drawFrame(im, 1, x + w, y, w, h, 0, g);
			drawFrame(im, 0, x + w * 2 + 1, y, w, h, 0, g);
			drawFrame(im, 0, x + w * 3 + 2, y, w, h, 0, g);
		} else if (num >= 10)
		{
			int temp = num / 10;
			drawFrame(im, temp, x + w * 2 + 1, y, w, h, 0, g);
			temp = num % 10;
			drawFrame(im, temp, x + w * 3 + 2, y, w, h, 0, g);
		} else
		{
			int temp = num % 10;
			drawFrame(im, temp, x + w * 3 + 2, y, w, h, 0, g);
		}
	}

    // 读取地图
	public byte[][] loadMap(String lv)
	{
		byte[][] bb = new byte[13][100];
		try
		{
			InputStream in = getClass().getResourceAsStream("/map.txt");
			DataInputStream din = new DataInputStream(in);

			String ss = din.readUTF();
			while (ss != null)
			{
				if (ss.equals(lv))
				{
					for (int i = 0; i < 13; i++)
					{
						for (int j = 0; j < 100; j++)
						{
							bb[i][j] = din.readByte();
						}
					}
					break;
				} else
				{
					for (int i = 0; i < 13; i++)
					{
						for (int j = 0; j < 100; j++)
						{
							din.readByte();
						}
					}
					ss = din.readUTF();
				}
			}
			in.close();
			din.close();
		} catch (Exception ex)
		{
		}
		return bb;
	}

	// 测试RMS是否被初始
	public boolean testRMS()
	{
		try
		{
			RecordStore rs = RecordStore.openRecordStore("warGame", false);
			rs.getRecord(1);
			return true;
		} catch (Exception ex)
		{
			return false;
		}
	}

	// 初始化RMS
	public void initRMS()
	{
		try
		{
			RecordStore rs = RecordStore.openRecordStore("warGame", true);
			ByteArrayOutputStream os = new ByteArrayOutputStream();
			DataOutputStream dos = new DataOutputStream(os);

			dos.writeInt(1); // 关卡数
			byte[] bb = os.toByteArray();
			os.flush();
			os.reset();
			rs.addRecord(bb, 0, bb.length);
			for (int i = 0; i < 9; i++)
			{
				dos.writeBoolean(false);
				byte[] bb2 = os.toByteArray();
				os.flush();
				os.reset();
				rs.addRecord(bb2, 0, bb2.length);
			}
			dos.writeBoolean(true);
			byte[] bb3 = os.toByteArray();
			rs.addRecord(bb3, 0, bb3.length);
			rs.closeRecordStore();
			os.close();
			dos.close();
		} catch (Exception ex)
		{
			System.out.println("Gameworld initRMS");
			ex.printStackTrace();
		}
	}

	// 自动保存记录
	public void autoSave()
	{
		try
		{
			RecordStore rs = RecordStore.openRecordStore("warGame", false);
			ByteArrayOutputStream os = new ByteArrayOutputStream();
			DataOutputStream dos = new DataOutputStream(os);
			if (level == 10)
			{
				dos.writeInt(9);
			} else
			{
				dos.writeInt(level);
			}
			byte[] bb = os.toByteArray();
//			if (level >= this.allowLevel)//保存最高的关数
//			{
				rs.setRecord(1, bb, 0, bb.length);
//			}
			os.reset();
			dos.flush();
			rs.closeRecordStore();
			os.close();
			dos.close();
		} catch (Exception ex)
		{
			System.out.println("Gameworld autoSave");
			ex.printStackTrace();
		}
	}

	// 保存声音数据
	public void saveSetUP()
	{
		try
		{
			RecordStore rs = RecordStore.openRecordStore("warGame", true);
			ByteArrayOutputStream os = new ByteArrayOutputStream();
			DataOutputStream dos = new DataOutputStream(os);
			dos.writeBoolean(sound);
			byte[] bb = os.toByteArray();
			rs.setRecord(11, bb, 0, bb.length);

			rs.closeRecordStore();
			os.close();
			dos.close();
		} catch (Exception ex)
		{
			System.out.println("Gameworld saveSetUP");
			ex.printStackTrace();
		}
	}

	// 读取声音数据
	public boolean loadSetUP()
	{
		boolean b = false;
		try
		{
			RecordStore rs = RecordStore.openRecordStore("warGame", true);
			byte[] bb = rs.getRecord(11);
			ByteArrayInputStream is = new ByteArrayInputStream(bb);
			DataInputStream dis = new DataInputStream(is);
			b = dis.readBoolean();
			rs.closeRecordStore();
			is.close();
			dis.close();
		} catch (Exception ex)
		{
			System.out.println("Gameworld loadSetUP");
			ex.printStackTrace();
		}
		return b;
	}

	//读取关卡
	public int loadLevel()
	{
		int temp = 0;
		try
		{
			RecordStore rs = RecordStore.openRecordStore("warGame", true);
			byte[] bb = rs.getRecord(1);
			ByteArrayInputStream is = new ByteArrayInputStream(bb);
			DataInputStream dis = new DataInputStream(is);
			temp = dis.readInt();
			rs.closeRecordStore();
			is.close();
			dis.close();
		} catch (Exception ex)
		{
			System.out.println("Gameworld loadLevel");
			ex.printStackTrace();
		}
		return temp;
	}

//	/** 显示内存消耗 */
//	public static void showMemory(Graphics g)
//	{
//		long memory = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
//		g.setColor(0xFF0000);
//		g.drawString("  t="+Runtime.getRuntime().totalMemory()+" f="+Runtime.getRuntime().freeMemory()+" u="+memory, 0, 5, 0);
//		System.gc();
//	}

	/** *************游戏中用到的图片**************** */
    
    Image mainMenu = null;
    Image menuSelect = null;
    Image icoImage = null;

    Image gameoverImage = null;			//任务结果字样
    Image uiImage = null;				//画板
    Image numberImage = null;			//数字
    static Image itemImage = null;		//物品
    static Vector bulletVector = null;	//记录子弹图标
    static int bulletImageX[];//={164,159,154,149,144,139,134,129,124,119, 164,159,154,149,144,139,134,129,124,119, 164,159,154,149,144,139,134,129,124,119};
    static int bulletImageY[];//={200,200,200,200,200,200,200,200,200,200, 195,195,195,195,195,195,195,195,195,195, 190,190,190,190,190,190,190,190,190,190};
    static Vector bombVector = null;
    static int bombImageX[];//={9,16,23,30,37};
	boolean lifeAlarm = true;//生命警报
    /****************** LEVEL 1-1 至 1-3 **********************/
    Image windowImage = null;	//窗户
    Image casernImage = null;	//碉堡
    Image stoneImage = null;	//石头
    Image backgroundImage=null; //背景
    Image grenadeImage = null;	//手雷
    Image smallEnemyImage = null;//随机敌人
    Image bigEnemyImage = null;	//丢炸弹的士兵
    Image bombImage = null;		//爆炸效果
    Image hpImage = null;		//血瓶
    Image shipImage = null;		//船    
    Image tankImage = null;		//坦克
    Image playerImage = null;	//主角视窗
    Image towerImage = null;	//塔
    Image planeImage = null;	//飞机 
    Image houseImage2 = null;	//房子2
    Image footmanImage3 = null;	//特种兵
    Image coconutImage = null;	//叶子树
    Image grassImage = null;	//草
    Image gameLogoImage = null;	//开始背景
    Image potImage = null;		//木    
    Image busImage = null;		//汽车
}

⌨️ 快捷键说明

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