Java小游戏源码(JavaSE拼图游戏)

1.概述

大一时用Java写的一个拼图游戏,主要是对Swing组件的应用,使用了JFrame,JPanel,JButton等组件,对于学习Swing有一定的帮助。

2.界面截图

3.核心代码

	//获取到当前所点击的小方格163*152
	Cell button =(Cell)e.getSource();
	//获取所点击方格的X,Y坐标
	int clickX = button.getBounds().x;
	int clickY = button.getBounds().y;	
	//获取当前空方格的X,Y坐标
	int nullX = nullCell.getBounds().x;
	int nullY = nullCell.getBounds().y;
	//进行比较,如果满足条件进行位置的交换	
	if(clickX == nullX && clickY - nullY == 152){//点击的为空方格下面的方格
	button.move("UP");//所点击的方格向上移动	
	} else if(clickX == nullX && clickY - nullY == -152){
	button.move("DOWN");//所点击的方格向上移动	
	} else if(clickY == nullY && clickX -nullX == 163){
	button.move("LEFT");	
	} else if(clickY == nullY && clickX -nullX == -163){
	button.move("RIGHT");
	} else{
		return ;
	}
	//更新空方格的位置
	nullCell.setLocation(clickX, clickY);
	//拼图区界面重新绘制
	this.repaint();
	//更新步数,将游戏状态区的步数更新
	stepNum++;
	PictureMainFrame.step.setText("步数:"+stepNum);
	
	//判断当前游戏是否完成,若完成,给玩家一个友好的提示
	if(this.isFinish()){
		//弹出一个窗口提示
		JOptionPane.showMessageDialog(this, "恭喜你完成拼图!!!\n所用步"+ stepNum);
		//撤销每一个小方格上的鼠标点击监听,让鼠标点击小方格不再起作用
		for(int i=0;i<11;i++){
			cell[i].removeMouseListener(this);
		}
		
		//更新方格的动作监听器的状态
		hasAddActionListener = false;		
	}
	
	}
	//判断当前游戏是否完成,根据坐标判断拼图是否完成
	private boolean isFinish(){
		for(int i=0 ;i<11; i++){
			//获取每一个方格的位置
			int x = cell[i].getBounds().x;
			int y = cell[i].getBounds().y;
			if((y-20)/152*3+(x/163)!=i){
			return false;	
			}
			
			
		}

关注公众号,回复097获取项目源码,如在学习过程中遇到问题,也可联系本人qq:2370775541

 

你可能感兴趣的:(JAVA,SE,Swing)