欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

五子棋设计笔记

程序员文章站 2022-03-24 15:27:13
...

五子棋小游戏
一、设计思路
窗体上面有三个按钮:双人模式、人机模式、重新开始
给窗体加一个背景图片
窗体上有棋盘
二、重绘棋盘
自动绘制,把图片和棋盘在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

五、如何人机
选择最优的,经行博弈
五子棋设计笔记
五子棋设计笔记

相关标签: 技术