java五子棋(面向对象)
大体步骤:
- 设置棋盘属性:长度,黑子与白子的代表符号
- 初始化棋盘
- 打印棋盘
- 判断坐标是否超出棋盘范围
- 判断坐标上是否有棋子
- 落子:落子时,若落子失败,可利用状态码查看失败原因
编码思想:
通过五子棋案例熟悉 私有化成员变量
private - 私有化
作用:
修饰属性:私有化属性,不能让外界使用
- 修饰方法:私有化方法,不能让外界使用
package com.dream.test01;
public class GoBang {
private int length = 20;//棋盘长度
private String[][] goBang = new String[length][length];//棋盘的容器
//棋盘符号
private String add = "╋";
private String black = "■";
private String white = "○";
private String[] nums = {"⒈","⒉","⒊","⒋","⒌","⒍","⒎","⒏","⒐","⒑","⒒","⒓","⒔","⒕","⒖","⒗","⒘","⒙","⒚","⒛"};
public GoBang() {
init();
printGoBang();
}
//初始化棋盘
private void init(){
for (int i = 0; i < goBang.length; i++) {
for (int j = 0; j < goBang[i].length; j++) {
if(j == length-1){
goBang[i][j] = nums[i];
}else if(i == length-1){
goBang[i][j] = nums[j];
}else{
goBang[i][j] = add;
}
}
}
}
//打印棋盘
public void printGoBang(){
for (String[] strings : goBang) {
for (String string : strings) {
System.out.print(string);
}
System.out.println();
}
}
//判断坐标是否超出棋盘范围
private boolean isIndexOutOfGoBang(int x,int y){
if(x < 0 || x > length-2 || y < 0 || y > length-2){
return false;
}
return true;
}
//判断坐标上是否有棋子
private boolean isGoBang(int x,int y){
if(!goBang[x][y].equals(add)){
return false;
}
return true;
}
/**
* 落子
* @param x x坐标
* @param y y坐标
* @param flag true-黑子 false-白子
* @return -1:落子失败 - 坐标超出棋盘范围
* -2:落子失败 - 坐标上有棋子
* 1:落子成功
*/
public int play(int x,int y,boolean flag){
if(!isIndexOutOfGoBang(x, y)){
return -1;
}
if(!isGoBang(x, y)){
return -2;
}
goBang[x][y] = (flag)?black:white;
return 1;
}
}
package com.dream.test01;
import java.util.Scanner;
public class Test01 {
public static void main(String[] args) {
GoBang goBang = new GoBang();
Scanner scan = new Scanner(System.in);
boolean flag = true;//true-黑子 false-白子
while(true){
System.out.println("请" + ((flag)?"黑":"白") + "子输入坐标:");
int x = scan.nextInt()-1;
int y = scan.nextInt()-1;
//落子
int play = goBang.play(x, y, flag);
if(play == -1){
System.out.println("坐标超出棋盘范围,请重新输入...");
continue;
}else if(play == -2){
System.out.println("坐标上有棋子,请重新输入...");
continue;
}
//置反
flag = !flag;
//打印棋盘
goBang.printGoBang();
}
}
}