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

📄 fivechessappletdemo.java

📁 java经典10例子
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
	}		//获取电脑下子的纵向坐标	public int getY(){		return this.y;	}	//计算棋盘上某一方格上八个方向棋子的最大值,	//这八个方向分别是:左、右、上、下、左上、左下、右上、右下	public int checkMax(int x, int y,int black_or_white){		int num=0,max_num,max_temp=0;		int x_temp=x,y_temp=y;		int x_temp1=x_temp,y_temp1=y_temp;		//judge right		for(int i=1;i<5;i++){			x_temp1+=1;			if(x_temp1>this.width)				break;			if(this.arrMapShow[x_temp1][y_temp1]==black_or_white)				num++;			else				break;		}		//judge left		x_temp1=x_temp;		for(int i=1;i<5;i++){			x_temp1-=1;			if(x_temp1<0)				break;			if(this.arrMapShow[x_temp1][y_temp1]==black_or_white)				num++;			else				break;		}		if(num<5)			max_temp=num;		//judge up		x_temp1=x_temp;		y_temp1=y_temp;		num=0;		for(int i=1;i<5;i++){			y_temp1-=1;			if(y_temp1<0)				break;			if(this.arrMapShow[x_temp1][y_temp1]==black_or_white)				num++;			else				break;		}		//judge down		y_temp1=y_temp;		for(int i=1;i<5;i++){			y_temp1+=1;			if(y_temp1>this.height)				break;			if(this.arrMapShow[x_temp1][y_temp1]==black_or_white)				num++;			else				break;		}		if(num>max_temp&&num<5)			max_temp=num;		//judge left_up		x_temp1=x_temp;		y_temp1=y_temp;		num=0;		for(int i=1;i<5;i++){			x_temp1-=1;			y_temp1-=1;			if(y_temp1<0 || x_temp1<0)				break;			if(this.arrMapShow[x_temp1][y_temp1]==black_or_white)				num++;			else				break;		}		//judge right_down		x_temp1=x_temp;		y_temp1=y_temp;		for(int i=1;i<5;i++){			x_temp1+=1;			y_temp1+=1;			if(y_temp1>this.height || x_temp1>this.width)				break;			if(this.arrMapShow[x_temp1][y_temp1]==black_or_white)				num++;			else				break;		}		if(num>max_temp&&num<5)			max_temp=num;		//judge right_up		x_temp1=x_temp;		y_temp1=y_temp;		num=0;		for(int i=1;i<5;i++){			x_temp1+=1;			y_temp1-=1;			if(y_temp1<0 || x_temp1>this.width)				break;			if(this.arrMapShow[x_temp1][y_temp1]==black_or_white)				num++;			else				break;		}		//judge left_down		x_temp1=x_temp;		y_temp1=y_temp;		for(int i=1;i<5;i++){			x_temp1-=1;			y_temp1+=1;			if(y_temp1>this.height || x_temp1<0)				break;			if(this.arrMapShow[x_temp1][y_temp1]==black_or_white)				num++;			else				break;		}		if(num>max_temp&&num<5)			max_temp=num;		max_num=max_temp;		return max_num;	}	//判断胜负	public boolean judgeSuccess(int x,int y,boolean isodd){		int num=1;		int arrvalue;		int x_temp=x,y_temp=y;		if(isodd)			arrvalue=2;		else			arrvalue=1;		int x_temp1=x_temp,y_temp1=y_temp;		//判断右边		for(int i=1;i<6;i++){			x_temp1+=1;			if(x_temp1>this.width)				break;			if(this.arrMapShow[x_temp1][y_temp1]==arrvalue)				num++;			else				break;		}		//判断左边		x_temp1=x_temp;		for(int i=1;i<6;i++){			x_temp1-=1;			if(x_temp1<0)				break;			if(this.arrMapShow[x_temp1][y_temp1]==arrvalue)				num++;			else				break;		}		if(num==5)			return true;		//判断上方		x_temp1=x_temp;		y_temp1=y_temp;		num=1;		for(int i=1;i<6;i++){			y_temp1-=1;			if(y_temp1<0)				break;			if(this.arrMapShow[x_temp1][y_temp1]==arrvalue)				num++;			else				break;		}		//判断下方		y_temp1=y_temp;		for(int i=1;i<6;i++){			y_temp1+=1;			if(y_temp1>this.height)				break;			if(this.arrMapShow[x_temp1][y_temp1]==arrvalue)				num++;			else				break;		}		if(num==5)			return true;		//判断左上		x_temp1=x_temp;		y_temp1=y_temp;		num=1;		for(int i=1;i<6;i++){			x_temp1-=1;			y_temp1-=1;			if(y_temp1<0 || x_temp1<0)				break;			if(this.arrMapShow[x_temp1][y_temp1]==arrvalue)				num++;			else				break;		}		//判断右下		x_temp1=x_temp;		y_temp1=y_temp;		for(int i=1;i<6;i++){		x_temp1+=1;		y_temp1+=1;		if(y_temp1>this.height || x_temp1>this.width)			break;			if(this.arrMapShow[x_temp1][y_temp1]==arrvalue)				num++;			else				break;		}		if(num==5)			return true;		//判断右上		x_temp1=x_temp;		y_temp1=y_temp;		num=1;		for(int i=1;i<6;i++){			x_temp1+=1;			y_temp1-=1;			if(y_temp1<0 || x_temp1>this.width)				break;			if(this.arrMapShow[x_temp1][y_temp1]==arrvalue)				num++;			else				break;		}		//判断左下		x_temp1=x_temp;		y_temp1=y_temp;		for(int i=1;i<6;i++){			x_temp1-=1;			y_temp1+=1;			if(y_temp1>this.height || x_temp1<0)				break;			if(this.arrMapShow[x_temp1][y_temp1]==arrvalue)				num++;			else				break;		}		if(num==5)			return true;		return false;	}	//赢棋后的提示	public void showSuccess(JPanel jp){		JOptionPane.showMessageDialog(jp,"你赢了,好厉害!","win",			JOptionPane.INFORMATION_MESSAGE);	}		//输棋后的提示	public void showDefeat(JPanel jp){		JOptionPane.showMessageDialog(jp,"你输了,请重新开始!","lost",			JOptionPane.INFORMATION_MESSAGE);	}}/* *类MainPanel主要完成如下功能: *1、构建一个面板,在该面板上画上棋盘; *2、处理在该棋盘上的鼠标事件(如鼠标左键点击、鼠标右键点击、鼠标拖动等) **/class MainPanel extends JPanel 	implements MouseListener,MouseMotionListener{	private int width,height;//棋盘的宽度和高度	private ChessModel cm;		//根据棋盘模式设定面板的大小	MainPanel(ChessModel mm){		cm=mm;		width=cm.getWidth();		height=cm.getHeight();		addMouseListener(this);	}        //根据棋盘模式设定棋盘的宽度和高度	public void setModel(ChessModel mm){		cm = mm;		width = cm.getWidth();		height = cm.getHeight();	}	//根据坐标计算出棋盘方格棋子的信息(如白子还是黑子),	//然后调用draw方法在棋盘上画出相应的棋子	public void paintComponent(Graphics g){		super.paintComponent(g);		for(int j = 0; j <= height; j++){			for(int i = 0; i <= width; i++){				int v = cm.getarrMapShow()[i][j];				draw(g, i, j, v);			}		}	}	//根据提供的棋子信息(颜色、坐标)画棋子	public void draw(Graphics g, int i, int j, int v){		int x = 20 * i+20;		int y = 20 * j+20;		//画棋盘		if(i!=width && j!=height){			g.setColor(Color.white);			g.drawRect(x,y,20,20);		}		//画黑色棋子		if(v == 1 ){			g.setColor(Color.gray);			g.drawOval(x-8,y-8,16,16);			g.setColor(Color.black);			g.fillOval(x-8,y-8,16,16);		}		//画白色棋子		if(v == 2 ){			g.setColor(Color.gray);			g.drawOval(x-8,y-8,16,16);			g.setColor(Color.white);			g.fillOval(x-8,y-8,16,16);		}		if(v ==3){			g.setColor(Color.cyan);			g.drawOval(x-8,y-8,16,16);		}	}	//响应鼠标的点击事件,根据鼠标的点击来下棋,	//根据下棋判断胜负等	public void mousePressed(MouseEvent evt){		int x = (evt.getX()-10) / 20;		int y = (evt.getY()-10) / 20;		System.out.println(x+" "+y);		if (evt.getModifiers()==MouseEvent.BUTTON1_MASK){			cm.play(x,y);			System.out.println(cm.getisOdd()+" "+cm.getarrMapShow()[x][y]);			repaint();			if(cm.judgeSuccess(x,y,cm.getisOdd())){				cm.showSuccess(this);				evt.consume();				ChessFrame.iscomputer=false;			}			//判断是否为人机对弈			if(ChessFrame.iscomputer&&!cm.getisExist()){				cm.computerDo(cm.getWidth(),cm.getHeight());				repaint();				if(cm.judgeSuccess(cm.getX(),cm.getY(),cm.getisOdd())){					cm.showDefeat(this);					evt.consume();				}			}		}	}	public void mouseClicked(MouseEvent evt){}	public void mouseReleased(MouseEvent evt){}	public void mouseEntered(MouseEvent mouseevt){}	public void mouseExited(MouseEvent mouseevent){}	public void mouseDragged(MouseEvent evt){}        //响应鼠标的拖动事件	public void mouseMoved(MouseEvent moveevt){		int x = (moveevt.getX()-10) / 20;		int y = (moveevt.getY()-10) / 20;		cm.readyplay(x,y);		repaint();	} }class ChessWindowEvent extends WindowAdapter{	public void windowClosing(WindowEvent e){		System.exit(0);	}	ChessWindowEvent(){}}

⌨️ 快捷键说明

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