五子棋设计笔记

五子棋小游戏
一、设计思路
窗体上面有三个按钮:双人模式、人机模式、重新开始
给窗体加一个背景图片
窗体上有棋盘
二、重绘棋盘
自动绘制,把图片和棋盘在paint里面进行绘制,重写了paint方法,同时我们需要记录棋子,也要加入到重绘里面

public void paint(Graphics g) {
				//调用父类的paint方法
				super.paint(g);
				final ImageIcon bgImageIcon = new ImageIcon(ShowUI.class.getClassLoader().getResource("game/image/background.png"));
				final Image image = bgImageIcon.getImage();
				g.drawImage(image, 0, 0, this.getWidth(), this.getHeight(), null);
				
				//遍历列表,绘制所有的图形
				for(int i=0;i<11;i++){
					g.setColor(Color.red);
					g.drawLine(100+Size*i, 100, 100+Size*i, 500);
					g.drawLine(100, 100+Size*i, 500, 100+Size*i);
				}
				for(int i=0;i<11;i++){
					for(int j=0;j<11;j++){
						chessboard[i][j]=0;
					}
				}
				//遍历列表,绘制所有的图形
				
				for(Shape s : list) {
					s.show(g);
				}
				
			}

三、如何存棋子


private int x1,y1,x2,y2,number;
	
	public Shape(int x1,int y1,int x2,int y2,int number){
		this.x1=x1;
		this.y1=y1;
		this.x2=x2;
		this.y2=y2;
		this.number=number;
	}
	public void show(Graphics g) {
		// TODO Auto-generated method stub
		if(number==0){
			// 绘制一个椭圆
        	g.drawOval(x1,y1,x2,y2);//修改左上角的坐标,使画好的圆恰好在以网格点所在的位置上
        	// 填充一个椭圆
        	g.setColor(Color.BLACK);
        	g.fillOval(x1,y1,x2,y2);
		}else if(number==1){
			// 绘制一个椭圆
        	g.drawOval(x1,y1,x2,y2);//修改左上角的坐标,使画好的圆恰好在以网格点所在的位置上
        	// 填充一个椭圆
        	g.setColor(Color.WHITE);
        	g.fillOval(x1,y1,x2,y2);
		}
	}

因为我们需要绘制一个圆,drawOval函数需要的四个参数为左上角坐标和长宽,所以我们需要传入这四个数,注意不是圆心,这就迫使我们需要有一点偏移。同时number让我们可以判断是黑子还是白子

List<Shape> list=new ArrayList<>();

用这个列表来存储。
四、弹出框


public void showResult2(String s){
    	String show=s;
    	Object[] result={"确定"};
    	int k=JOptionPane.showOptionDialog(null,show,"",JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.QUESTION_MESSAGE,null,result,result[0]);
    	if(k==0){
    		choose++;
    	}
    	else if(k==1){
    		choose-=2;
    	}
    	
}点击确定得到一个k=0,点击关闭的X返回一个k=1

五、如何人机
选择最优的,经行博弈
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值