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

📄 hanomouseeventf.java

📁 该游戏软件在Windows系统上为玩家提供汉偌塔金片的移动的基本功能
💻 JAVA
字号:
package hannota;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

public class HanoMouseEventf extends MouseAdapter {
	private HanoPanel hPanel;

	JLabel selectJLable;

	JPanel selectedPanel;

	int selectedColumns;

	public HanoMouseEventf(HanoPanel hPanel) {
		this.hPanel = hPanel;
	}

	// 选取盘子
	private void selectDish(int num) {
		for (int i = 1; i < 10; i++) {
			// 判断面板之中是否有主键
			if (hPanel.hanoPanel[num + i].getComponentCount() == 1) {
				// 找到面板
				selectedPanel = hPanel.hanoPanel[num + i];
				// 用于获取面板之中主键Label
				selectJLable = (JLabel) selectedPanel.getComponent(0);
				// 设置盘子的颜色
				selectJLable.setBackground(Color.yellow);
				selectJLable.updateUI();
				selectedPanel.updateUI();
				break;
			}
		}
		selectedColumns = num;
	}

	// 放盘子
	private void putDish(int num) {
		// 自己放在自己之中正确
		JLabel jlb = new JLabel();
		if (selectedColumns == num) {
			selectJLable.setBackground(Color.blue);
			selectJLable = null;
			return;
		}
		for (int i = 9; i > 0; i--) {
			// 判断面板之中是否有主键
			if (hPanel.hanoPanel[num + i].getComponentCount() == 0) {
				// 有盘子执行
				if (i != 9) {
					// 获取同一例之中最上面主键的下一个主键,并取出盘子
					jlb = (JLabel) hPanel.hanoPanel[num + i + 1]
							.getComponent(0);
					if (jlb.getWidth() < selectJLable.getWidth()) {
						JOptionPane.showMessageDialog(hPanel, "不能移到这里!");
						return;
					}
				}
				hPanel.hanoPanel[num + i].add(selectJLable);

				// 用于计算步数
				hPanel.bushu++;
				// 计算步数的 标签
				// hPanel.bushulabel = new JLabel();
				//
				hPanel.prompt.setText("您走了" + hPanel.bushu + "步了");
				
				//鼓励语句,好让别人继续玩你的游戏
				if (hPanel.bushu > 20) {
					hPanel.prompt.setText("您走了" + hPanel.bushu + "步了"
							+ "努力哦!不要放弃!");
				}
				if (hPanel.bushu > 50) {
					hPanel.prompt
							.setText("您走了" + hPanel.bushu + "步了" + "好厉害哦!");
				}
				if (hPanel.bushu == 100) {
					JOptionPane.showMessageDialog(hPanel, "你太厉害了");
				}
				selectJLable.setBackground(Color.blue);
				// 从新绘制标签
				selectJLable.updateUI();
				// 从新绘制面板
				hPanel.hanoPanel[num + i].updateUI();
				hPanel.centerPanel.updateUI();
				// 盘子放好了,就需要跳出循环
				break;
			}
		}
		// 释放盘子
		selectJLable = null;

	}

	// 完成游戏
	private void complete(int N) {

		if (hPanel.hanoPanel[30 - N].getComponentCount() == 1) {
			// 显示完成信息
			hPanel.prompt.setText("完成!游戏结束!");
			JOptionPane.showMessageDialog(hPanel, "恭喜你闯过第" + "" + hPanel.level
					+ "" + "关!");
			// 每一次点击一次选择盘子你走的不数就会增加一步,个人觉得没有意思
			JOptionPane.showMessageDialog(hPanel, "你闯过第" + "" + hPanel.level
					+ "" + "关!" + "您一共花了" + hPanel.bushu + "步");
			hPanel.bushu = 0;
			JOptionPane.showMessageDialog(hPanel, "继续下一关吗?");
			// 把按钮从新放置一次
			hPanel.level++;
			hPanel.hanoactionevent.reset();
		}
	}

	// 鼠标的点基事件
	public void mousePressed(MouseEvent e) {
		// 判断是否有主键
		if (e.getSource().equals(hPanel.hanoPanel[0])) {
			if (selectJLable == null) {
				// 盘子不存在,我们就选盘子
				selectDish(0);
			} else {
				// 盘子存在了我们就放盘子
				putDish(0);
			}
		}
		if (e.getSource().equals(hPanel.hanoPanel[10])) {
			if (selectJLable == null) {
				// 选盘子
				selectDish(10);
			} else {
				putDish(10);
			}
		}
		if (e.getSource().equals(hPanel.hanoPanel[20])) {
			if (selectJLable == null) {
				// 盘子不存在,我们就选盘子
				selectDish(20);
			} else {
				// 盘子存在了就进行放盘子,
				putDish(20);
				complete(hPanel.level);
			}
		}
	}

}

⌨️ 快捷键说明

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