失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > JAVA单机五子棋小游戏(双人对战版)

JAVA单机五子棋小游戏(双人对战版)

时间:2019-05-06 04:19:21

相关推荐

JAVA单机五子棋小游戏(双人对战版)

此代码为简单双人对战五子棋程序,不涉及算法游戏策略。

具有轮流出手,判断输赢,判断输入是否合法功能。

运行效果如图:

import java.io.*;public class Gobang{// 定义棋盘的大小private static int BOARD_SIZE = 15;// 定义一个二维数组来充当棋盘private String[][] board;int getsize(){return Gobang.BOARD_SIZE;}public void initBoard(){// 初始化棋盘数组board = new String[BOARD_SIZE][BOARD_SIZE];// 把每个元素赋为"╋",用于在控制台画出棋盘for (int i = 0 ; i < BOARD_SIZE ; i++){for ( int j = 0 ; j < BOARD_SIZE ; j++){board[i][j] = "╋";}}}// 在控制台输出棋盘的方法public void printBoard(){// 打印每个数组元素System.out.println(" 1 2 3 4 5 6 7 8 9 A B C D E F");for (int i = 0 ; i < BOARD_SIZE ; i++){System.out.print(Integer.toHexString(i+1).toUpperCase());for ( int j = 0 ; j < BOARD_SIZE ; j++){// 打印数组元素后不换行System.out.print(board[i][j]);}// 每打印完一行数组元素后输出一个换行符System.out.print("\n");}}public static int GameOver(String[][] a,intM,int N){for(int i=0;i<M;i++){//横着for(int j=0;j<N-4;j++){if(a[i][j]=="●" && a[i][j+1]=="●" && a[i][j+2]=="●" && a[i][j+3]=="●" && a[i][j+4]=="●")return 1;else if(a[i][j]=="○" && a[i][j+1]=="○" && a[i][j+2]=="○" && a[i][j+3]=="○" && a[i][j+4]=="○")return 2;}}for(int j=0;j<N;j++){//竖着for(int i=0;i<M-4;i++){if(a[i][j]=="●" && a[i+1][j]=="●" && a[i+2][j]=="●" && a[i+3][j]=="●" && a[i+4][j]=="●")return 1;else if(a[i][j]=="○" && a[i+1][j]=="○" && a[i+2][j]=="○" && a[i+3][j]=="○" && a[i+4][j]=="○")return 2;}}for(int i=0;i<M-4;i++){for(int j=0;j<N-4;j++){if(a[i][j]=="●" && a[i+1][j+1]=="●" && a[i+2][j+2]=="●" && a[i+3][j+3]=="●" && a[i+4][j+4]=="●")return 1;else if(a[i][j]=="○" && a[i+1][j+1]=="○" && a[i+2][j+2]=="○" && a[i+3][j+3]=="○" && a[i+4][j+4]=="○")return 2;}}for(int i=M-1;i>3;i--){for(int j=N-1;j>3;j--){if(a[i][j]=="●" && a[i-1][j-1]=="●" && a[i-2][j-2]=="●" && a[i-3][j-3]=="●" && a[i-4][j-4]=="●")return 1;else if(a[i][j]=="○" && a[i-1][j-1]=="○" && a[i-2][j-2]=="○" && a[i-3][j-3]=="○" && a[i-4][j-4]=="○")return 2;}}return 0;}public static void main(String[] args) throws Exception{boolean b = false;Gobang gb = new Gobang();gb.initBoard();gb.printBoard();System.out.print("请白手输入坐标,应以x,y的格式:");// 这是用于获取键盘输入的方法BufferedReader br = new BufferedReader(new InputStreamReader(System.in));String inputStr = null;// br.readLine():每当在键盘上输入一行内容按回车,用户刚输入的内容将被br读取到。while ((inputStr = br.readLine()) != null){// 将用户输入的字符串以逗号(,)作为分隔符,分隔成2个字符串try{String[] posStrArr = inputStr.split(",");// 将2个字符串转换成用户下棋的座标int xPos = Integer.parseInt(posStrArr[0]);int yPos = Integer.parseInt(posStrArr[1]);if(gb.board[yPos - 1][xPos - 1].compareToIgnoreCase("╋") != 0){System.out.print("该位置已有棋子,请重新输入:");continue;}// 把对应的数组元素赋为"●"○。if(b == false){gb.board[yPos - 1][xPos - 1] = "●";b = true;}else{gb.board[yPos - 1][xPos - 1] = "○";b = false;}gb.printBoard();}catch (Exception e){System.out.println("您输入的格式有误!请重新输入!");}if(gb.GameOver(gb.board,gb.getsize(),gb.getsize())==1) {System.out.println("游戏结束, ● 胜!");}else if(gb.GameOver(gb.board,gb.getsize(),gb.getsize())==2) {System.out.println("游戏结束, ○ 胜!");}else {if(b == false)System.out.print("请白手输入坐标,应以x,y的格式:");elseSystem.out.print("请黑手输入坐标,应以x,y的格式:");}}}}

如果觉得《JAVA单机五子棋小游戏(双人对战版)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。