文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java编程实现五子棋人人对战代码示例

2023-05-30 20:08

关注

利用Java,在控制台操作下,编写的五子棋,作为复习二维数组,面向对象等基础知识。w表示白棋,b表示黑棋

Java编程实现五子棋人人对战代码示例

import java.util.Scanner;public class MainMethod {public static char[][] c = new char[10][10];public static void main(String[] args) {MainMethod mainMethod = new MainMethod();mainMethod.init();int i;boolean color;int[] point = new int[2];Scanner scanner = new Scanner(System.in);for (i = 1; i < 100; i++) {mainMethod.draw();// 绘制棋盘System.out.println("请输入坐标,范围为(0,0)到(9,9)");int x = scanner.nextInt();int y = scanner.nextInt();if (i % 2 == 1)color = true;elsecolor = false;point[0] = x;point[1] = y;if (mainMethod.paint(point, color) == false) {//System.out.println("下的位置不合理,请重新开始");break;}if (mainMethod.win() == 1) {mainMethod.draw();System.out.println("恭喜白棋赢!!");break;} else if (mainMethod.win() == -1) {mainMethod.draw();System.out.println("恭喜黑棋赢!!");break;}}if (i == 100)System.out.println("平局");}public char[][] init() {// 初始化棋盘for (int i = 0; i < c.length; i++) {for (int j = 0; j < c.length; j++) {c[i][j] = '+';}}return c;}public boolean paint(int[] point, boolean colr) {// 判断下的位置是否正确,若正确改变棋盘boolean b = true;int x = point[0];int y = point[1];if (inBoard(point) == false || c[x][y] == 'w' || c[x][y] == 'b' || x < 0) {b = false;return b;}else if (colr == true) {// 白棋下if (c[x][y] == '+') {c[x][y] = 'w';}}else if (colr == false) {// 黑棋下if (c[x][y] == '+') {c[x][y] = 'b';}}return b;}public boolean inBoard(int[] point) {// 判断point是否在棋盘上int x = point[0];int y = point[1];if (x < 0 || y < 0 || x >= c.length || y >= c.length)return false;elsereturn true;}public int win() {// 判断输赢,1表示白的赢,-1黑的赢,0暂无输赢int whoWin = 0;int[] point = new int[2];outer: while (true) {for (int i = 0; i < c.length; i++) {for (int j = 0; j < c.length; j++) {if (c[i][j] == 'w') {// 遍历数组,找到的第一个白棋point[0] = i;point[1] = j + 4;if (inBoard(point)) {// 如果存在向右数4个的棋盘if (c[i][j + 1] == 'w' && c[i][j + 2] == 'w' && c[i][j + 3] == 'w' && c[i][j + 4] == 'w') {whoWin = 1;break outer;}}point[0] = i + 4;point[1] = j + 4;if (inBoard(point)) {// 如果存在向右,向下数4个的棋盘if (c[i + 1][j + 1] == 'w' && c[i + 2][j + 2] == 'w' && c[i + 3][j + 3] == 'w'&& c[i + 4][j + 4] == 'w') {whoWin = 1;break outer;}}point[0] = i + 4;point[1] = j;if (inBoard(point)) {// 如果存在向下数4个的棋盘if (c[i + 1][j] == 'w' && c[i + 2][j] == 'w' && c[i + 3][j] == 'w' && c[i + 4][j] == 'w') {whoWin = 1;break outer;}}point[0] = i - 4;point[1] = j + 4;if (inBoard(point)) {// 如果存在向左,向下数4个的棋盘if (c[i - 1][j + 1] == 'w' && c[i - 2][j + 2] == 'w' && c[i - 3][j + 3] == 'w'&& c[i - 4][j + 4] == 'w') {whoWin = 1;break outer;}}} else if (c[i][j] == 'b') {point[0] = i;point[1] = j + 4;if (inBoard(point)) {// 如果存在向右数4个的棋盘if (c[i][j + 1] == 'b' && c[i][j + 2] == 'b' && c[i][j + 3] == 'b' && c[i][j + 4] == 'b') {whoWin = -1;break outer;}}point[0] = i + 4;point[1] = j + 4;if (inBoard(point)) {// 如果存在向右,向下数4个的棋盘if (c[i + 1][j + 1] == 'b' && c[i + 2][j + 2] == 'b' && c[i + 3][j + 3] == 'b'&& c[i + 4][j + 4] == 'b') {whoWin = -1;break outer;}}point[0] = i + 4;point[1] = j;if (inBoard(point)) {// 如果存在向下数4个的棋盘if (c[i + 1][j] == 'b' && c[i + 2][j] == 'b' && c[i + 3][j] == 'b' && c[i + 4][j] == 'b') {whoWin = -1;break outer;}}point[0] = i - 4;point[1] = j + 4;if (inBoard(point)) {// 如果存在向左,向下数4个的棋盘if (c[i - 1][j + 1] == 'b' && c[i - 2][j + 2] == 'b' && c[i - 3][j + 3] == 'b'&& c[i - 4][j + 4] == 'b') {whoWin = -1;break outer;}}}}}whoWin = 0;break outer;}return whoWin;}public void draw() {// 绘制棋盘for (int i = 0; i < c.length; i++) {for (int j = 0; j < c.length; j++) {System.out.print(c[i][j] + " ");}System.out.println();}}}

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 资料下载
  • 历年真题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯