五子棋的一些瞎想

说明一下  做的事最简单的五子棋  无美化。。。。。。

	private void init() {
		this.setTitle("五子棋");
		this.setSize(700,700);
		this.setDefaultCloseOperation(3);
		this.setPreferredSize(null);
		
		
		this.setVisible(true);
		Graphics g = this.getGraphics();
		
		ChessListener al = new ChessListener(g,array);
		this.addMouseListener(al);
	}

 简陋的界面

public void paint(Graphics g){
		super.paint(g);
		for(int i=0;i<Config.Rows;i++){
			g.drawLine(Config.X, Config.Y+i*Config.SIZE,Config.X+(Config.Rows-1)*Config.SIZE,Config.Y+i*Config.SIZE);
		}
		for(int i=0;i<Config.Lines;i++){
			g.drawLine(Config.X+i*Config.SIZE, Config.Y,Config.X+i*Config.SIZE,Config.Y+(Config.Rows-1)*Config.SIZE);
		}
		//重绘棋子
		for(int i=0;i<array.length;i++){
			for(int j=0;j<array[i].length;j++){
				if(array[i][j]==1){
					g.setColor(Color.BLACK);
//					g.fillOval(Config.X+Config.CHESS_SIZE/2, y-Config.CHESS_SIZE/2, Config.CHESS_SIZE, Config.CHESS_SIZE);
					int x=Config.X+Config.SIZE*i;
					int y=Config.Y+Config.SIZE*j;
					if(array[i][j]==1){
						g.setColor(Color.BLACK);
						g.fillOval(x-Config.CHESS_SIZE/2, y-Config.CHESS_SIZE/2, Config.CHESS_SIZE, Config.CHESS_SIZE);
						
					}
					if(array[i][j]==-1){
						g.setColor(Color.WHITE);
						g.fillOval(x-Config.CHESS_SIZE/2, y-Config.CHESS_SIZE/2, Config.CHESS_SIZE, Config.CHESS_SIZE);
					}
				}
			}
		}

 蹩脚的重绘 :是为了使棋盘永远存在

	public boolean WinL(int x,int y){
		
		int count1=0;
		//往下
		for(int i=y;i<array.length;i++){
			if(array[x][i]==array[x][y]){
				count1++;
			}
			else{break;}}
		//往上
		for(int i=y;i>=0;i--){
			if(array[x][i]==array[x][y]){
				count1++;
			}
			else{break;}
		}
		System.out.print("当前的的count"+count1);
		if(count1 >= 6){
			return true;
		}
		return false;
		
	}
	//行的判断
	public boolean WinH(int x,int y){
		int count1=0;
		//往右
		for(int i=x;i<array.length;i++){
			if(array[i][y]==array[x][y]){
				count1++;
			}
			else{break;}}
		//往左
		for(int i=x;i>=0;i--){
			if(array[i][y]==array[x][y]){
				count1++;
			}
			else{break;}
		}
		System.out.print("当前的的count"+count1);
		if(count1 >= 6){
			return true;
		}
		return false;
		}
//右下斜与左上斜的判断
	public boolean WinYXZS(int x,int y){
		int count1=0;
		//往右下斜
		for(int i=x,j=y;i<array.length&&j<array.length;i++,j++){
			if(array[i][j]==array[x][y]){
				count1++;
			}
			else{break;}}
		//往左
		for(int i=x,j=y;i>=0&&j>=0;i--,j--){
			if(array[i][j]==array[x][y]){
				count1++;
			}
			else{break;}
		}
		System.out.print("当前的的count"+count1);
		if(count1 >=6){
			return true;
		}
		return false;
		}
	
//左下斜与右上斜的判断
	public boolean WinZXYS(int x,int y){
		int count1=0;
		//往左下斜
		for(int i=x,j=y;j>=0&&i<array.length;i++,j--){
			if(array[i][j]==array[x][y]){
				count1++;
			}
			else{break;}}
		//往右上斜
		for(int i=x,j=y;i>=0&&j<array.length;i--,j++){
			if(array[i][j]==array[x][y]){
				count1++;
			}
			else{break;}
		}
		System.out.print("当前的的count"+count1);
		if(count1 >= 6){
			return true;
		}
		return false;
		}

 效率低下的输赢判断   不过我在里面的斜向判断加入了一些限定  这样  不管我下在哪一个点 我的数组都不会越界

for(int i=0;i<Config.Rows;i++){
			for(int j=0;j<Config.Lines;j++){
				int x=Config.X+Config.SIZE*i;
				int y=Config.Y+Config.SIZE*j;
				if(x1>x-Config.SIZE/3&&x1<x+Config.SIZE/3&&y1>y-Config.SIZE/3&&y1<y+Config.SIZE/3){
					if(array[i][j]==0){
						if(count==0){
							array[i][j]=1;
							g.setColor(Color.BLACK);
							g.fillOval(x-Config.CHESS_SIZE/2, y-Config.CHESS_SIZE/2, Config.CHESS_SIZE, Config.CHESS_SIZE);
							count++;
						}
						else if(count==1){
							array[i][j]=-1;
							g.setColor(Color.WHITE);
							g.fillOval(x-Config.CHESS_SIZE/2, y-Config.CHESS_SIZE/2, Config.CHESS_SIZE, Config.CHESS_SIZE);
							count--;
						}

 最后的监听机制  实现了画棋子 

  这样一个垃圾的五子棋游戏就诞生了。。。。。。

而且还只是人人的

接下来的人机  我还没有想法

猜你喜欢

转载自137930562-qq-com.iteye.com/blog/1722539