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

📄 hanomouseevent.java

📁 一个游戏。是用java基础写的一个游戏。供给java初学者下载
💻 JAVA
字号:
package com.Luoweixun;

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

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

public class HanoMouseEvent extends MouseAdapter{
	HanoPanel hPanel=null;
//	保存要移动的盘子
	JLabel selectedJlabel=null;
//	保存移动盘子的塔柱面板
	JPanel selectedPanel=null;
//	塔的序号
	int selsctedColumns=0;
	public HanoMouseEvent(HanoPanel hPanel){
		this.hPanel=hPanel;
	}
	
	/**
	 * 鼠标按键处理,实现移动
	 */
	public void mousePressed(MouseEvent e){
		Object s=e.getSource();
		 //判断事件源 
		if(s==hPanel.hanoPane[0]){
			 //没有盘子被选中
			if(selectedJlabel==null){				
				selectDish(0);
			}
			else{
				putDish(0);
				hPanel.text.setText("步数:"+hPanel.sum);
			}
		}
		else if(s==hPanel.hanoPane[10]){
			 //没有有盘子被选中
			if(selectedJlabel==null){				
				selectDish(10);
			}
			else{
				putDish(10);
				hPanel.text.setText("步数:"+hPanel.sum);
			}
		}
		else if(s==hPanel.hanoPane[20]){
			 //没有有盘子被选中
			if(selectedJlabel==null){				
					selectDish(20);
				}
				else{	
					putDish(20);
					hPanel.text.setText("步数:"+hPanel.sum);
				}
			}
		complete(hPanel.Level);
	}
//	在塔面板中选取一个盘子
	public void selectDish(int num){
		hPanel.sum++;
		for(int i=1+num;i<=9+num;i++){
			if(hPanel.hanoPane[i].getComponentCount()!=0){
				selectedJlabel=(JLabel) hPanel.hanoPane[i].getComponent(0);
				selectedJlabel.setBackground(Color.yellow);
				selectedPanel=hPanel.hanoPane[i];
				break;
			}
			
		}
	}
//	将选取的盘子放置到参数num的塔柱体中
	public void putDish(int num){
		if(num==0){
			for(int i=9+num;i>=1+num;i--){
//				如果数为空
				if(hPanel.hanoPane[i].getComponentCount()==0){
					selectedPanel.updateUI();
					hPanel.hanoPane[i].add(selectedJlabel);
					selectedJlabel.setBackground(Color.blue);
					selectedPanel=hPanel.hanoPane[i];
					selectedJlabel=null;	
					break;
				}
//				如果数不为空
				else if(hPanel.hanoPane[i].getComponentCount()!=0){
					if(selectedJlabel.getWidth()>hPanel.hanoPane[i].getComponent(0).getWidth()){
					JOptionPane.showMessageDialog(null, "不能这样移动");
					selectedJlabel.setBackground(Color.blue);
					selectedJlabel=null;
					break;
					}			
				else if(selectedJlabel.getWidth()==hPanel.hanoPane[i].getComponent(0).getWidth()){
					selectedJlabel.setBackground(Color.blue);
					selectedPanel.updateUI();
					selectedJlabel=null;
					break;
					}				
				}
			}
		}
		else if(num==10){
				for(int i=9+num;i>=1+num;i--){
//					如果数为空
					if(hPanel.hanoPane[i].getComponentCount()==0){
						selectedPanel.updateUI();
						hPanel.hanoPane[i].add(selectedJlabel);
						selectedJlabel.setBackground(Color.blue);
						selectedPanel=hPanel.hanoPane[i];
						selectedJlabel=null;	
						break;
					}
//					如果数不为空
					else if(hPanel.hanoPane[i].getComponentCount()!=0){
						if(selectedJlabel.getWidth()>hPanel.hanoPane[i].getComponent(0).getWidth()){
							JOptionPane.showMessageDialog(null, "不能这样移动");
							hPanel.hanoPane[i].updateUI();
							selectedJlabel.setBackground(Color.blue);
							selectedJlabel=null;
							break;
						}			
						else if(selectedJlabel.getWidth()==hPanel.hanoPane[i].getComponent(0).getWidth()){
						selectedJlabel.setBackground(Color.blue);
						selectedPanel.updateUI();
						selectedJlabel=null;	
						break;
						}				
					}
				}
				
		}
		else if(num==20){
			for(int i=9+num;i>=1+num;i--){
//				如果数为空
				if(hPanel.hanoPane[i].getComponentCount()==0){
					selectedPanel.updateUI();
					hPanel.hanoPane[i].add(selectedJlabel);
					selectedJlabel.setBackground(Color.blue);
					selectedPanel=hPanel.hanoPane[i];
					selectedJlabel=null;	
					break;
				}
//				如果数不为空
				else if(hPanel.hanoPane[i].getComponentCount()!=0){
					if(selectedJlabel.getWidth()>hPanel.hanoPane[i].getComponent(0).getWidth()){
						JOptionPane.showMessageDialog(null, "不能这样移动");
						selectedJlabel.setBackground(Color.blue);
						selectedJlabel=null;
						break;
					}			
					else if(selectedJlabel.getWidth()==hPanel.hanoPane[i].getComponent(0).getWidth()){
					selectedJlabel.setBackground(Color.blue);
					selectedPanel.updateUI();
					selectedJlabel=null;
					break;
					}				
				}
			}
	}
	}
//	判断游戏是否完成
	private void complete(int N) {
		int sum=0;
			for(int i=21;i<30;i++){
				 sum=hPanel.hanoPane[i].getComponentCount()+sum;
			}
				if(sum==N){
					JOptionPane.showMessageDialog(hPanel.centerPanel, "恭喜过关");	
					for(int i=0;i<30;i++){
						if(i%10!=0){
							hPanel.hanoPane[i].updateUI();
						}
					}
					for(int i=0;i<9;i++){
						hPanel.dish[i].setBackground(Color.blue);
					}
					hPanel.Level=++hPanel.Level;
					hPanel.addDishes(hPanel.Level);
					hPanel.sum=0;
					hPanel.text.setText("步数: "+hPanel.sum);
					hPanel.text1.setText("等级:"+hPanel.Level);
			}
	}
}




⌨️ 快捷键说明

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