`
deckarlc
  • 浏览: 2868 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Java初上手,实现一个小小的五子棋

阅读更多

最近开始学习Java,为了初步的熟悉Java,所以编写了一个五子棋的小程序来练手,接下来就先上图了



 这是工程截图,接下来是程序运行的截图




 

 程序的界面十分简单,棋盘和棋子都是自己画的,现在也只有这个水平了。。。

已经实现了五子棋的基本功能,如可以轮流下子、判断输赢等。但是还


 是有很多缺陷的,但毕竟我还是个初学者,实现多少是多少吧。。。

近期对于界面的话不会做太多改变,现在最大的缺陷是还不能人机对战(这可不是想做就做得好的),这几天和同学一起研究机器人下子的算法可真是想破了头,要考虑的实在太多。。。

希望可以尽快写出可以接受的算法

public class wziUI extends JFrame{
	
	private int[][] chesse = new int[Num.H][Num.L];
	
	public static void main(String[] args){
		
		
		
		wziUI W = new wziUI();
		W.showUI();
	}

	public void showUI() {
		this.setTitle("简单五子棋");
		this.setSize(600, 600);
		
		
		this.setDefaultCloseOperation(3);
		this.setVisible(true);
		
		Graphics g = this.getGraphics();
		wziListener lis = new wziListener(g,chesse,this);
		this.addMouseListener(lis);
	}
 public class wziListener implements java.awt.event.MouseListener{
	private Graphics g;
	private int[][] chesse;
	private int count = 0;
	private int jud = 0;
	private JFrame wzi;
	
	public wziListener(Graphics g,int[][] chesse,JFrame wzi){
		this.g = g;
		this.chesse = chesse;
		this.wzi = wzi;
	}
	

	@Override
	public void mouseReleased(MouseEvent e) {
		int x = e.getX();
		int y = e.getY();
		
		
		for(int i = 0;i<Num.H;i++){
			for(int j = 0;j<Num.L;j++){
				
				int x1 = Num.X0+Num.SIZE*j;
				int y1 = Num.Y0+Num.SIZE*i;
				
				if(Math.abs(x-x1)<Num.C_SIZE/3&&Math.abs(y-y1)<Num.C_SIZE/3)
					{
					drawQZ(x1,y1,i,j);judge(chesse,wzi);
					return;
					}
			}
		}
		
	}
	
	public void drawQZ(int x1,int y1,int i,int j){
		
		if(count == 0){
			chesse[i][j] = Num.BLACK_C;
			g.setColor(java.awt.Color.BLACK);
			count++;
		}else{
			chesse[i][j] = Num.WHITE_C;
			g.setColor(java.awt.Color.WHITE);
			count--;
		}
		g.fillOval(x1-Num.C_SIZE/2, y1-Num.C_SIZE/2, Num.C_SIZE, Num.C_SIZE);
	}
	
	
	public void judge(int[][] chesse,JFrame wzi){
		
		for(int i= 0;i<Num.H;i++){
			for(int j = 0;j<Num.L-4;j++){
				if(chesse[i][j]==Num.BLACK_C&&chesse[i][j+1]==Num.BLACK_C&&chesse[i][j+2]==Num.BLACK_C&&chesse[i][j+3]==Num.BLACK_C&&chesse[i][j+4]==Num.BLACK_C){
					//wzi.dispose();
					JFrame win = new JFrame("结果判定");
					win.setSize(150,100);
					win.setDefaultCloseOperation(3);
					win.setVisible(true);
					JLabel la = new JLabel("黑子获胜!");
					win.add(la);
					win.setLocation(260, 260);
				}else if(chesse[i][j]==Num.WHITE_C&&chesse[i][j+1]==Num.WHITE_C&&chesse[i][j+2]==Num.WHITE_C&&chesse[i][j+3]==Num.WHITE_C&&chesse[i][j+4]==Num.WHITE_C){
					//wzi.dispose();
					JFrame win = new JFrame("结果判定");
					win.setSize(150,100);
					win.setDefaultCloseOperation(3);
					win.setVisible(true);
					JLabel la = new JLabel("白子获胜!");
					win.add(la);
					win.setLocation(260, 260);
				}
			}
		}
 
  • 大小: 124.3 KB
  • 大小: 151.5 KB
  • 大小: 54 KB
  • 大小: 48 KB
  • 大小: 58.6 KB
1
2
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics