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

📄 dogcanvas.java

📁 自己写的一个打地鼠的源码,初学者可以参考一下框架
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
	{
		g.setFont(Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_BOLD,
				Font.SIZE_LARGE));
		g.setColor(0xffffff);
		g.fillRect(0, 0, getWidth(), getHeight());
		g.setColor(0x0000ff);
		if (attackCount >= 98)
		{

			g.setColor(0xff0000);
			g.drawString("击中次数:" + attackCount + "大满贯啊,牛啦你!",
					(getWidth() >> 1) - 100, 5, Graphics.LEFT | Graphics.TOP);
		} else
		{
			g.drawString("击中次数:" + attackCount, (getWidth() >> 1) - 100, 5,
					Graphics.LEFT | Graphics.TOP);
		}
		g.drawString("按任意键返回", (getWidth() >> 1) - 100, 50, Graphics.LEFT
				| Graphics.TOP);

	}

	// 不同界面按键转换
	public void keyPressed(int keyCode)
	{
		// int gameAction = getGameAction(keyCode);
		if (isPause)
		{
			switch (state) {

			case STATE_START:
				startInput(keyCode);
				startSoftInput(keyCode);
				break;
			case STATE_SETTINGS:
				SettingInput(keyCode);
				break;
			case STATE_HELP:
				helpInput(keyCode);
				break;
			case STATE_INSTRUCTIONS:
				helpInput(keyCode);
				break;
			case STATE_PAUSE:
				pauseInput(keyCode);
				break;
			case STATE_OVER:
				overInput(keyCode);
				break;
			}
		}
	}

	/*
	 * 支持重复按键事件
	 */
	public void keyPreated(int keyCode)
	{
		keyPressed(keyCode);
	}

	/*
	 * 1.0中的事件处理 游戏开始输入
	 */
	public void startInput(int keyCode)
	{
		if (isPause)
		{
			switch (keyCode) {

			case KEY_NUM2:
				if (curMoveY == 55)
				{
					curMoveY = 165;
				} else
				{
					curMoveY -= 55;
				}
				break;
			case KEY_NUM4:
				if (curMoveX == 15)
				{
					curMoveX = 125;
				} else
				{
					curMoveX -= 55;
				}
				break;
			case KEY_NUM8:
				if (curMoveY == 165)
				{
					curMoveY = 55;

				} else
				{
					curMoveY += 55;
				}
				break;
			case KEY_NUM6:
				if (curMoveX == 125)
				{
					curMoveX = 15;
				} else

				{
					curMoveX += 55;
				}
				break;
			case KEY_NUM5:
				isChanged = false;
				showNumber();
				Collision();
				// randPosition();
				break;
			case KEY_NUM0:
				state = STATE_PAUSE;
				break;
			case KEY_NUM3:
				state = STATE_OVER;
				isCount = false;
			}
		}
	}

	/*
	 * 2.0中的事件处理.游戏开始输入
	 */
	public void startSoftInput(int keyCode)
	{
		int gameAction = getGameAction(keyCode);
		if (isPause)
		{
			switch (gameAction) {
			case UP:
				if (curMoveY == 55)
				{
					curMoveY = 165;
				} else
				{
					curMoveY -= 55;
				}
				break;
			case DOWN:
				if (curMoveY == 165)
				{
					curMoveY = 55;

				} else
				{
					curMoveY += 55;
				}
				break;
			case LEFT:
				if (curMoveX == 15)
				{
					curMoveX = 125;
				} else
				{
					curMoveX -= 55;
				}
				break;
			case RIGHT:
				if (curMoveX == 125)
				{
					curMoveX = 15;
				} else

				{
					curMoveX += 55;
				}
				break;
			case FIRE:
				isChanged = false;
				showNumber();
				Collision();
				// randPosition();

				break;
			case GAME_A:
				state = STATE_PAUSE;
				break;
			}
		}
	}

	/*
	 * 设置界面的输入
	 */
	public void SettingInput(int keyCode)
	{
		switch (keyCode) {

		case KEY_STAR:
			if (isVoice)
			{
				isVoice = false;
				midlet.stopPlayer(player);
			} else
			{
				isVoice = true;
				midlet.startPlayer(player, -1);
			}

			break;
		case KEY_POUND:
			state = STATE_SPLASH;
			break;
		case KEY_NUM7:
			difficult += 1;
			if (difficult >= 3)
			{
				difficult = 3;
			}

			break;
		case KEY_NUM9:
			difficult -= 1;
			if (difficult <= 0)
			{
				difficult = 0;
			}
			break;
		case KEY_NUM1:
			isPointer = true;
			break;
		case KEY_NUM2:
			isPointer = false;
			break;
		}

		switch (difficult) {
		case 0:
			curSpeed = 10;
			break;
		case 1:
			curSpeed = 8;
			break;
		case 2:
			curSpeed = 6;
			break;
		case 3:

			curSpeed = 4;
			break;
		}

	}

	/*
	 * 帮助界面的输入
	 */
	public void helpInput(int keyCode)
	{
		if (keyCode == KEY_POUND)
		{
			state = STATE_SPLASH;
		}

	}

	/*
	 * 暂停游戏的输入
	 */
	public void pauseInput(int keyCode)
	{
		switch (keyCode) {
		case KEY_NUM0:
			start();
			midlet.startPlayer(player, -1);
			state = STATE_START;
			break;
		case KEY_NUM1:
			start();
			midlet.startPlayer(player, -1);
			state = STATE_START;
			break;
		}

	}

	/*
	 * 结束游戏的输入
	 */
	public void overInput(int keyCode)
	{

		switch (keyCode) {
		default:
			state = STATE_SPLASH;
			break;
		}
	}

	/*
	 * 此处实现触摸屏式.
	 * 
	 * 用hasPointerEvents()来判断是否支持屏幕事件.
	 */

	protected void pointerPressed(int x, int y)
	{
		if (isPointer)
		{
			curPointerX = x;
			curPointerY = y;
			if ((x >= curPigX && x <= curPigX + 55)
					&& (y >= curPigY && y <= curPigY + 55))
			{
				// System.out.println("hello");
				isChanged = false;
				showNumber();
				Collision();
			}
		}
		// System.out.println(curPigX+","+curPigY);
		//		

	}

	/*
	 * 高事菜单事件处理.
	 */
	public void commandAction(Command c, Displayable dis)
	{
		if (c.getLabel().equals("start Game"))
		{
			state = STATE_START;
			isCount = true;
			isPause = true;
			delMenu();
		} else if (c.getLabel().equals("Settings"))
		{
			state = STATE_SETTINGS;
		} else if (c.getLabel().equals("Help"))
		{
			state = STATE_HELP;
		} else if (c.getLabel().equals("Instructions"))
		{
			state = STATE_INSTRUCTIONS;
		} else if (c.getLabel().equals("Exit Game"))
		{
			midlet.exitGame();
		} else if (c.getLabel().equals("Continue"))
		{
			state = STATE_START;
			isCount = true;
			isPause = true;
		}

	}

	/*
	 * 
	 * 游戏线程
	 */
	public void run()
	{
		while (isRunning)
		{
			long beginTime = System.currentTimeMillis();
			if (isCount)
			{
				changedIndex++;
				randPosition();
			}
			repaint();
			serviceRepaints();
			long endTime = System.currentTimeMillis();
			if (endTime - beginTime < FRAME_TIME)
			{
				try
				{
					Thread.sleep(FRAME_TIME - (endTime - beginTime));
				} catch (InterruptedException e)
				{
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}

			// TODO Auto-generated method stub

		}

	}

	/*
	 * 用图片的方法去显示数字.
	 */
	public void showNumber()
	{
		if (attackCount <= 9)
		{
			sprNumber.setFrame(attackCount);
		} else
		{
			int Integer = attackCount / 10;
			int Single = attackCount % 10;
			sprIntegerNumber.setVisible(true);
			sprIntegerNumber.setFrame(Integer);
			sprNumber.setFrame(Single);
		}
	}

	/*
	 * Pig精灵的随机位置.
	 */
	public void randPosition()
	{
		if (changedIndex == curSpeed)
		{
			isCollision = true;
			curPigX = coordinateX[(rand.nextInt() >>> 1) % 3];
			curPigY = coordinateY[(rand.nextInt() >>> 1) % 3];
			changedIndex = 0;
		}

	}

	/*
	 * 游戏的碰撞检测
	 */
	public void Collision()
	{
		if (sprHammer.collidesWith(sprRole, true) && isCollision
				|| (curPointerX >= curPigX && curPointerX <= curPigX + 55)
				&& (curPointerY >= curPigY && curPointerY <= curPigY + 55))
		{
			isDraw = false;
			isCollision = false;
			attackCount += 1;
			if (attackCount >= 98)
			{
				attackCount = 98;
				state = STATE_OVER;
				isPause = false;
				isCount = false;
			}

		}
	}
}

⌨️ 快捷键说明

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