赞
踩
//Method类 public class Method { //棋盘 public void Backgammon(String[][] checkerboard) { int count1 = 1; int count2 = 1; for (int i = 0; i < checkerboard.length; i++) { for (int j = 0; j < checkerboard[i].length; j++) { if (j == 0 && i == 0) { checkerboard[i][j] = " "; continue; } if (j == 0) { checkerboard[i][j] =Integer.toHexString(count1); count1++; continue; } if (i == 0) { checkerboard[i][j] =Integer.toHexString(count2); count2++; continue; } checkerboard[i][j] = "□"; } } printBackgammon(checkerboard); } //打印棋盘 public void printBackgammon(String[][] checkerboard) { for (int i = 0; i < checkerboard.length; i++) { for (int j = 0; j < checkerboard[i].length; j++) { System.out.print(checkerboard[i][j] + " "); } System.out.println(); } } //判断胜负 public boolean isVictory(String[][] checkerboard) { boolean isVictory = false; //横着走 for (int i = 0; i < checkerboard.length; i++) { for (int j = 0; j < checkerboard[i].length; j++) { if (j == 12) { break; } if(! checkerboard[i][j].equals("□") && (checkerboard[i][j].equals(checkerboard[i][j + 1]) && checkerboard[i][j].equals(checkerboard[i][j + 2]) && checkerboard[i][j].equals(checkerboard[i][j + 3]) && checkerboard[i][j].equals(checkerboard[i][j + 4]))) isVictory = true; } } //竖着走 for (int i = 0; i < checkerboard.length; i++) { for (int j = 0; j < checkerboard[i].length; j++) { if (j == 12) { break; } if(! checkerboard[j][i].equals("□") && (checkerboard[j][i].equals(checkerboard[j + 1][i]) && checkerboard[j][i].equals(checkerboard[j + 2][i]) && checkerboard[j][i].equals(checkerboard[j + 3][i]) && checkerboard[j][i].equals(checkerboard[j + 4][i]))) isVictory = true; } } //斜着走情况一 for (int i = 0; i < checkerboard.length; i++) { if (i == 12) { break; } for (int j = 0; j < checkerboard[i].length; j++) { if (j == 12) { break; } if(! checkerboard[i][j].equals("□") && (checkerboard[i][j].equals(checkerboard[i + 1][j + 1]) && checkerboard[i][j].equals(checkerboard[i + 2][j + 2]) && checkerboard[i][j].equals(checkerboard[i + 3][j + 3]) && checkerboard[i][j].equals(checkerboard[i + 4][j + 4]))) isVictory = true; } } //斜着走情况二 for (int i = 0; i < checkerboard.length; i++) { if (i == 12) { break; } for (int j = checkerboard[i].length - 1; j >= 0; j--) { if (j == 4) { break; } //System.out.println("i:" + i + "j:" + j); if(! checkerboard[i][j].equals("□") && (checkerboard[i][j].equals(checkerboard[i + 1][j - 1]) && checkerboard[i][j].equals(checkerboard[i + 2][j - 2]) && checkerboard[i][j].equals(checkerboard[i + 3][j - 3]) && checkerboard[i][j].equals(checkerboard[i + 4][j - 4]))) isVictory = true; } } return isVictory; } } //Main方法 import java.util.Scanner; public class TestMain { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String[][] checkerboard = new String[16][16]; Method method = new Method(); System.out.println("---------------欢迎来到弱智版五子棋游戏---------------"); method.Backgammon(checkerboard); int count = 0; String blackAndWhite = "黑方"; while (true) { count++; int i = 0; int j = 0; if (count % 2 == 1) { blackAndWhite = "黑方"; System.out.println(blackAndWhite + "请选择落子位置"); }else { blackAndWhite = "白方"; System.out.println(blackAndWhite + "请选择落子位置"); } String NAS = scanner.next(); String EAW = scanner.next(); if (NAS.equals("a")) { i = 10; }else if (NAS.equals("b")) { i = 11; }else if (NAS.equals("c")) { i = 12; }else if (NAS.equals("d")) { i = 13; }else if (NAS.equals("e")) { i = 14; }else if (NAS.equals("f")) { i = 15; }else { i = Integer.parseInt(NAS); } if (EAW.equals("a")) { j = 10; }else if (EAW.equals("b")) { j = 11; }else if (EAW.equals("c")) { j = 12; }else if (EAW.equals("d")) { j = 13; }else if (EAW.equals("e")) { j = 14; }else if (EAW.equals("f")) { j = 15; }else { j = Integer.parseInt(EAW); } if (count % 2 == 1) { checkerboard[i][j] = "●"; }else { checkerboard[i][j] = "○"; } method.printBackgammon(checkerboard); if (method.isVictory(checkerboard)) { if (count % 2 == 1) { System.out.println(); System.out.println("对局结束"); System.out.println("黑方胜"); }else { System.out.println("白方胜"); } scanner.close(); break; } } } }
此代码判断胜利的条件效率较低下,是每一次都去数组里面找五个相同的字符串,而非根据落子位置去找。
注意:如果在相同位置连续下棋,会覆盖掉你先前所下的棋子。
欢迎各位交流代码
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。