弱者的五子棋

那天看见yangtuo做了个 五子棋 心血来潮也写了个五子棋 ,用了他给我的图片!(注意是java写的,未完成的部分——————人机、联网 如有大神喜欢可以拿去完成接下来的部分 欢迎大家自己写 自己玩)(如果有bug也可以说。。。。)


package com.game;
import java.awt.*;
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
public class wuziqi extends JFrame implements MouseListener {
	int x=0;
	int y=0;
	int [][]ans=new int [19][19];
	boolean iswhat=true;
	boolean isrun=true;
	private Image iBuffer;  
	private Graphics gBuffer;
	public wuziqi()
	{
		 int width=Toolkit.getDefaultToolkit().getScreenSize().width;
		int height=Toolkit.getDefaultToolkit().getScreenSize().height;
 		this.setTitle("五子棋");
		this.setSize(500, 500);
		 this.setResizable(false);
		this.setLocation((width-400)/2,(height-300)/2);
		 this.addMouseListener(this);
		this.setVisible(true);
		this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
	}
	public void paint(Graphics g)//整个paint类实现重写 并使用双缓冲技术防止闪屏
	{
	    if(iBuffer==null)  
	    {  
	        iBuffer=createImage(this.getSize().width,this.getSize().height);  
	       gBuffer=iBuffer.getGraphics();  
	    } 
		 BufferedImage image=null;
		try {
			 image=ImageIO.read(new File("F:/qwe.jpg"));
		 } catch (IOException e) {
			// TODO Auto-generated catch block
 			e.printStackTrace();
		}
		 gBuffer.drawImage(image,0,20,this);//以上的部分是为了实现将图片放在放在jframe这个容器中
		
		  for(int i=0;i<19;i++){

			  gBuffer.drawLine(10,70+20*i,370,70+20*i);

			  gBuffer.drawLine(10+20*i,70,10+20*i,430);

                }
		  gBuffer.fillOval(68,128,4,4);
		  gBuffer.fillOval(308,12,4,4);//(重复设置圆点)
		  Font font=new Font("",1,20);
		  gBuffer.setFont(font);
		  if(iswhat)
		       gBuffer.drawString("现在轮到黑方", 120, 60);
		  else
		       gBuffer.drawString("现在轮到白方", 120, 60);
		for(int i=0;i<19;i++)
		{
			for(int j=0;j<19;j++)
			{
				
					if(ans[i][j]==1)
					{
						int tempx=i*20+10;
						int tempy=j*20+70;
						 gBuffer.fillOval(tempx-7, tempy-7, 14, 14);
					}
					if(ans[i][j]==2)
					{
						int tmpx=i*20+10;
						int tmpy=j*20+70;
						gBuffer.setColor(Color.WHITE);
						gBuffer.fillOval(tmpx-7, tmpy-7, 14, 14);
						gBuffer.setColor(Color.BLACK);
						gBuffer.drawOval(tmpx-7, tmpy-7, 14, 14);
					}
				
			}
		}
		g.drawImage(iBuffer, 0, 0, this);
	}
	public void update(Graphics g)//也是双缓冲的一部分
	{
		paint(g);
	}
	@Override
	public void mouseClicked(MouseEvent arg0) {//把键的位置范围确定下来然后实现某个功能 ,我有一些没看到所以没实现
		// TODO Auto-generated method stub
		if(arg0.getX()>=400&&arg0.getX()<=470&&arg0.getY()>=320&&arg0.getY()<=350)
		{
			JOptionPane.showMessageDialog(this, "made by yangtuo");
		}
		if(arg0.getX()>=400&&arg0.getX()<=470&&arg0.getY()>=370&&arg0.getY()<=400)
		{
			System.exit(0);
		}
		if(arg0.getX()>=400&&arg0.getX()<=470&&arg0.getY()>=170&&arg0.getY()<=200)
		{
			JOptionPane.showMessageDialog(this, "只要某一方连续的五个棋子出现就为赢 ");
		}
		if(arg0.getX()>=400&&arg0.getX()<=470&&arg0.getY()>=270&&arg0.getY()<=300)
		{
			int n = JOptionPane.showConfirmDialog(this, "你确定要结束游戏吗?", "标题",JOptionPane.YES_NO_OPTION);
			if(n==0)
			{
				isrun=false;
			}
		}
	}

	@Override
	public void mouseEntered(MouseEvent arg0) {
		// TODO Auto-generated method stub

	}

	@Override
	public void mouseExited(MouseEvent arg0) {
		// TODO Auto-generated method stub

	}

	@Override
	public void mousePressed(MouseEvent arg0) {//这个是确定鼠标点击的位置在哪里
		// TODO Auto-generated method stub
		x=arg0.getX();
		y=arg0.getY();
		System.out.println(x+" "+y);
		if(x>=10&&x<=370&&y>=70&&y<=430&&isrun==true)
		{
			x=(x-10)/20;
			y=(y-70)/20;
			//System.out.println(x+" "+y);
			if(ans[x][y]==0)
			{
				if(iswhat==true)
				{
					ans[x][y]=1;
					iswhat=false;
				}
				else if(iswhat==false)
				{
					ans[x][y]=2;
					iswhat=true;
				}
				//System.out.println(ans[x][y]);
			}
			else
			{
				JOptionPane.showMessageDialog(this, "对不起这里已经有棋子了");
			}
			if(judge1(x,y)==1)
			{
				JOptionPane.showMessageDialog(this, "恭喜黑方赢了");
				isrun=false;
			}
			else if(judge1(x,y)==2)
			{
				JOptionPane.showMessageDialog(this, "恭喜白方赢了");
				isrun=false;
			}
			this.repaint();
		}
 	}
	@Override
	public void mouseReleased(MouseEvent arg0) {
		// TODO Auto-generated method stub

	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
	}
	public int judge1(int x,int y)//看看名字就知道了 是为了判断有没有赢
	{
		int count=0;
		int count1=0;
		int count2=0;
		int count3=0;
		int count4=0;
		int count5=0;
		int count6=0;
		int count7=0;
		int count8=0;
		int count9=0;
		int count10=0;
		int count11=0;
		for(int i=0;i<19;i++)
		{
			for(int j=0;j<19;j++)
			{
				if(ans[i][j]==1)
				{
					count++;
					if(count==5)
					{
						return 1;
					}
				}
				if(ans[i][j]!=1)
				{
					count=0;
				}
			}
	
		}
		for(int i=0;i<19;i++)
		{
			for(int j=0;j<19;j++)
			{
				if(ans[i][j]==2)
				{
					count1++;
					if(count1==5)
					{
						return 2;
					}
				}
				if(ans[i][j]!=2)
				{
					count1=0;
				}
			}
	
		}
		for(int i=0;i<19;i++)
		{
			for(int j=0;j<19;j++)
			{
				if(ans[j][i]==1)
				{
					count2++;
					if(count2==5)
					{
						return 1;
					}
				}
				if(ans[j][i]!=1)
				{
					count2=0;
				}
			}
	
		}
		for(int i=0;i<19;i++)
		{
			for(int j=0;j<19;j++)
			{
				if(ans[j][i]==2)
				{
					count3++;
					if(count3==5)
					{
						return 2;
					}
				}
				if(ans[j][i]!=2)
				{
					count3=0;
				}
			}
	
		}
		for(int i=0;i<19;i++)
		{
			for(int j=0;j<19;j++)
			{
				if(i+j<19)
				{
					if(ans[j][j+i]==1)
					{
						count4++;
						if(count4==5)
						{
							return 1;
						}
					}
					if(ans[j][j+i]!=1)
					{
						count4=0;
					}
				
			   }
		    }
		}
		for(int i=0;i<19;i++)
		{
			for(int j=0;j<19;j++)
			{
				if(i+j<19)
				{
					if(ans[j][j+i]==2)
					{
						count5++;
						if(count5==5)
						{
							return 2;
						}
					}
					if(ans[j][j+i]!=2)
					{
						count5=0;
					}
				
			   }
		    }
		}
		for(int i=0;i<19;i++)
		{
			for(int j=0;j<19;j++)
			{
				if(i+j<19)
				{
					if(ans[i+j][j]==1)
					{
						count6++;
						if(count6==5)
						{
							return 1;
						}
					}
					if(ans[j+i][j]!=1)
					{
						count6=0;
					}
				
			   }
		    }
		}
		for(int i=0;i<19;i++)
		{
			for(int j=0;j<19;j++)
			{
				if(i+j<19)
				{
					if(ans[i+j][j]==2)
					{
						count7++;
						if(count7==5)
						{
							return 2;
						}
					}
					if(ans[j+i][j]!=2)
					{
						count7=0;
					}
				
			   }
		    }
		}
		for(int i=18;i>=0;i--)
		{
			for(int j=0;j<19;j++)
			{
				if(i-j<19&&i-j>=0)
				{
					if(ans[i-j][j]==1)
					{
						count8++;
						if(count8==5)
						{
							return 1;
						}
					}
					if(ans[i-j][j]!=1)
					{
						count8=0;
					}
				
			   }
		    }
		}
		for(int i=18;i>=0;i--)
		{
			for(int j=0;j<19;j++)
			{
				if(i-j<19&&i-j>=0)
				{
					if(ans[i-j][j]==2)
					{
						count9++;
						if(count9==5)
						{
							return 2;
						}
					}
					if(ans[i-j][j]!=2)
					{
						count9=0;
					}
				
			   }
		    }
		}
		for(int i=0;i<19;i++)
		{
			for(int j=0;j<19;j++)
			{
				if(i+j<19)
				{
					if(ans[18-j][i+j]==1)
					{
						count10++;
						if(count10==5)
						{
							return 1;
						}
					}
					if(ans[18-j][j+i]!=1)
					{
						count10=0;
					}
				
			   }
		    }
		}
		for(int i=18;i>=0;i--)
		{
			for(int j=0;j<19;j++)
			{
				if(i+j<19)
				{
					if(ans[18-j][i+j]==2)
					{
						count11++;
						if(count11==5)
						{
							return 2;
						}
					}
					if(ans[18-j][j+i]!=2)
					{
						count11=0;
					}
				
			   }
		    }
		}
		return 0;
		
	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值