第一步,初始化棋盘
第二步,写一个开始的函数
第三步,写下棋后改变棋盘布局函数
第四步,判断有棋子覆盖,越界情况
第五步,判断输赢
第六步,选择重开
棋子覆盖,越界情况
结束后重新开始
结束后退出情况
以下是代码,欢迎交流bug,优化改进
//棋盘
static String white ="☆";
static String black ="★";
static String PanDi ="十";
static String[][] QiPan=new String[15][15];
static String[]num={"⒈","⒉","⒊","⒋","⒌","⒍","⒎","⒏","⒐","⒑","⒒","⒓","⒔","⒕","⒖"};
//使用字符1.可以确保棋盘对齐
//启动五子棋
public static boolean start(){
Scanner scanner=new Scanner(System.in);
printQiPan();
System.out.println(" ");
System.out.println("请玩家1输入要下的位置(横纵坐标用空格隔开)");
if(innt()){//innt只返回true执行此语句
System.out.println("游戏结束");
System.out.println("若要重新开始请输入1");
System.out.println("若要退出请输入0");
int r=scanner.nextInt();
if(r==1){
return true;
}
else if(r==0){
return false;
}
}
return false;//应对无返回值报错情况,无意义
}
//五子棋初始化布局
public static void printQiPan(){
for(int i=0;i<=15;i++){
if(i==15){
for(int o=0;o<15;o++){
System.out.print(num[o]);
}
}
else {
for (int j = 0; j < 15; j++) {
System.out.print(PanDi);
}
}
if(i<15) {
System.out.print(num[i]);
System.out.print("\n");
}
}
}
//打印更新后的五子棋棋盘
public static void Wzq(String [][]qp){
for(int i=0;i<16;i++){
for(int j=0;j<16;j++) {
if ((i != 15) && (j != 15)) {
System.out.print(qp[i][j]);
}
}
System.out.print("\n");
}
}
//下棋过程
public static boolean innt(){
Scanner scanner=new Scanner(System.in);
String [][]set1=qp();//设置白棋下完的情况
String [][]set2=qp();//设置黑棋下完的情况
int x1=0,x2=-1,y1=0,y2=-1;
while(true) {
System.out.print("\n");
x1 = scanner.nextInt();//黑棋输入横坐标
y1 = scanner.nextInt();//黑棋输入纵坐标
while(exceed(x1,y1)){//判断越界
x1 = scanner.nextInt();
y1 = scanner.nextInt();
}
while(Wcover(x1,y1,set2)){
System.out.println("请重新输入");
x1 = scanner.nextInt();
y1 = scanner.nextInt();
while(exceed(x1,y1)){//重新输入后再判断越界
x1 = scanner.nextInt();
y1 = scanner.nextInt();
}
}
//这里写黑下棋
set1=setBlack(x1,y1,set2);//改变下完黑棋后的棋盘
Wzq(set1);//打印棋盘
if(winB(set1)){//判断输赢
return true;
}
System.out.print("轮到玩家2\n");
x2 = scanner.nextInt();
y2 = scanner.nextInt();
while (exceed(x2, y2)) {
x2 = scanner.nextInt();
y2 = scanner.nextInt();
}
while(Bcover(x2,y2,set1)){
System.out.println("请重新输入");
x2 = scanner.nextInt();
y2 = scanner.nextInt();
while (exceed(x2, y2)) {
x2 = scanner.nextInt();
y2 = scanner.nextInt();
}
}
//这里写白下棋
set2 = setWhite(x2, y2, set1);//改变下完白棋后的棋盘
Wzq(set2);//打印棋盘
if(winW(set2)){
return true;
};//判断输赢
System.out.print("\n");
System.out.print("轮到玩家1\n");
}
}
//判断输赢
public static boolean winB(String [][]qp){
for(int i=0;i<15;i++){
for(int j=0;j<15;j++){
if(qp[i][j]==black&&qp[i][j+1]==black&&qp[i][j+2]==black&&qp[i][j+3]==black&&qp[i][j+4]==black){
System.out.println("黑棋胜利了");
return true;
}
else if(qp[i][j]==black&&qp[i+1][j]==black&&qp[i+2][j]==black&&qp[i+3][j]==black&&qp[i+4][j]==black){
System.out.println("黑棋胜利了");
return true;
}
else if(qp[i][j]==black&&qp[i+1][j+1]==black&&qp[i+2][j+2]==black&&qp[i+3][j+3]==black&&qp[i+4][j+4]==black){
System.out.println("黑棋胜利了");
return true;
}
}
}
return false;
}
public static boolean winW(String [][]qp){
for(int i=0;i<15;i++){
for(int j=0;j<15;j++){
if(qp[i][j]==white&&qp[i][j+1]==white&&qp[i][j+2]==white&&qp[i][j+3]==white&&qp[i][j+4]==white){
System.out.println("白棋胜利了");
return true;
}
else if(qp[i][j]==white&&qp[i+1][j]==white&&qp[i+2][j]==white&&qp[i+3][j]==white&&qp[i+4][j]==white){
System.out.println("白棋胜利了");
return true;
}
else if(qp[i][j]==white&&qp[i+1][j+1]==white&&qp[i+2][j+2]==white&&qp[i+3][j+3]==white&&qp[i+4][j+4]==white){
System.out.println("白棋胜利了");
return true;
}
}
}
return false;
}
//判断白棋有没有覆盖黑棋
public static boolean Bcover(int x,int y,String [][]qp){
if(qp[x-1][y-1]==black||qp[x-1][y-1]== white){
return true;
}
else{
return false;
}
}
//判断黑棋覆盖白棋
public static boolean Wcover(int x,int y,String [][]qp){
if(qp[x-1][y-1]== white||qp[x-1][y-1]==black){
return true;
}
else{
return false;
}
}
//落子后改变棋盘的布局
public static String[][] setWhite(int x,int y,String [][]setqp){
setqp[x-1][y-1]=white;
return setqp;
}
public static String[][] setBlack(int x,int y,String [][]setqp){
setqp[x-1][y-1]=black;
return setqp;
}
//设置一个棋盘数组
public static String[][] qp(){
String [][]qqpp=new String[16][16];
for(int i=0;i<=15;i++){
if(i==15){
for(int o=0;o<15;o++){
qqpp[i][o]=num[o];
}
}
else {
for (int j = 0; j <= 15; j++) {
if(j<15) {
qqpp[i][j] = PanDi;
}
else{
qqpp[i][j] = num[i];
}
}
}
}
return qqpp;
}
//判断越界
public static boolean exceed(int x,int y){
if(x>15||x<=0||y>15||y<=0){//
System.out.println("棋盘容不下您了,请重新输入");
return true;
}
return false;
}
public static void main(String[] args) {
boolean x=true;
while(x){
x=start();
}
return;