栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java实现简单控制台五子棋游戏

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java实现简单控制台五子棋游戏

本文实例为大家分享了java实现简单控制台五子棋的具体代码,供大家参考,具体内容如下

GobangMain这个类是游戏的主方法,主要用于控制游戏的执行,值得注意的是输入的坐标的格式是3,4的样式,不能是其他的格式,也不能出现空格。

package com.qf.Gobang;

import java.util.Scanner;

import org.omg.CORBA.PUBLIC_MEMBER;

public class GobangMain {
  public static String white = "白色";
  public static String black = "黑色";
  public static boolean color=true;
  public static String spoint;//存储坐标
  public static void main(String[] args) {

    Gobang gobang = new Gobang();
    Scanner scanner=new Scanner(System.in);
    while(true){
      System.out.println("请"+(color?white:black)+"落子:");
      spoint=scanner.next();//获得坐标
      Point point=gobang.analysisPoint(spoint);//解析坐标,并返回坐标对象

      if(gobang.luoZi(point,color)){
 gobang.printMap();
 if(gobang.isWin(point,color)){
   System.out.println(""+(color?white:black)+"赢了!");
   break;
 }
 color=!color;
      }
    }

  }
}

Point类

public class Point {

  public Point(int x, int y) {
    super();
    this.x = x;
    this.y = y;
  }
  int x;
  int y;
}

Gobang 类是游戏类,主要包含游戏的判断游戏的结束等等。

package com.qf.Gobang;

import java.awt.Event;
import java.util.Scanner;

public class Gobang {
  public int n = 20;// 地图的规模
  public String color;// 确认是白方,还是黑方
  public String mark = "╋";
  public String white = "○";
  public String black = "●";
  public String[][] map = new String[n][n];;
  public String[] coordinate = { "⒈", "⒉", "⒊", "⒋", "⒌", "⒍", "⒎", "⒏", "⒐", "⒑", "⒒", "⒓", "⒔", "⒕", "⒖", "⒗", "⒘",
      "⒙", "⒚", "⒛" };

  public Gobang() {
    // 初始化地图
    init();
  }

  // 初始化地图
  public void init() {
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < n; j++) {
 if (i == n - 1) {
   map[i][j] = coordinate[j];
 } else if (j == n - 1) {
   map[i][j] = coordinate[i];
 } else {
   map[i][j] = mark;
 }
      }
    }
    printMap();
  }

  // 打印地图
  public void printMap() {
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < n; j++) {
 System.out.print(map[i][j]);
      }
      System.out.println();
    }
  }

  // 解析坐标
  public Point analysisPoint(String point) {
    String[] points = point.split(",");
    int x = Integer.parseInt(points[0]) - 1;
    int y = Integer.parseInt(points[1]) - 1;
    return new Point(x, y);
  }

  // 落子
  public boolean luoZi(Point point, Boolean color) {
    // 判断是否越界
    if (point.x < 0 || point.y > 18 || point.y < 0 || point.y > 18) {
      return false;
    }
    // 判断落子的地方有没有其他的子
    if (map[point.x][point.y] != mark) {
      return false;
    }
    map[point.x][point.y] = color ? white : black;
    return true;
  }

  // 判断是否输赢
  public boolean isWin(Point point, boolean color) {
    // 纵向
    int zxS = 0;// 纵向上
    for (int i = 0; i < 5; i++) {
      if (point.x - i < 0) {
 break;
      }
      if (map[point.x - i][point.y].equals(color ? white : black)) {
 zxS++;
      } else {
 break;
      }
    }
    int zxX = 0;// 纵向下
    for (int i = 1; i < 5; i++) {
      if (point.x + i > 18) {
 break;
      }
      if (map[point.x + i][point.y].equals(color ? white : black)) {
 zxX++;
      } else {
 break;
      }
    }
    // 横向
    int hxZ = 0;// 横向左
    for (int i = 0; i < 5; i++) {
      if (point.y - i < 0) {
 break;
      }
      if (map[point.x][point.y - i].equals(color ? white : black)) {
 hxZ++;
      } else {
 break;
      }
    }
    int hxY = 0;// 横向右
    for (int i = 1; i < 5; i++) {
      if (point.y + i > 18) {
 break;
      }
      if (map[point.x][point.y + i].equals(color ? white : black)) {
 hxY++;
      } else {
 break;
      }
    }
    // 正斜
    int zxxS = 0;// 正斜上
    for (int i = 0; i < 5; i++) {
      if (point.y + i > 18 || point.x - i < 0) {
 break;
      }
      if (map[point.x - i][point.y + i].equals(color ? white : black)) {
 zxxS++;
      } else {
 break;
      }
    }
    int zxxX = 0;// 正斜下
    for (int i = 1; i < 5; i++) {
      if (point.y - i < 0 || point.x + i > 18) {
 break;
      }
      if (map[point.x + i][point.y - i].equals(color ? white : black)) {
 zxxX++;
      } else {
 break;
      }
    }
    // 反斜
    int fxxS = 0;// 反斜上
    for (int i = 0; i < 5; i++) {
      if (point.y - i < 0 || point.x - i < 0) {
 break;
      }
      if (map[point.x - i][point.y - i].equals(color ? white : black)) {
 fxxS++;
      } else {
 break;
      }
    }
    int fxxX = 0;// 反斜下
    for (int i = 1; i < 5; i++) {
      if (point.y + i > 18 || point.x + i >18) {
 break;
      }
      if (map[point.x + i][point.y + i].equals(color ? white : black)) {
 fxxX++;
      } else {
 break;
      }
    }
    System.out.println();
    System.out.print("反斜上↖:" + fxxS+"t");
    System.out.print("纵向上↑:" + zxS+"t");
    System.out.print("正斜上↗:" + zxxS);
    System.out.println();
    System.out.print("横向左←:" + hxZ+"ttt");
    System.out.print("横向右→:" + hxY);
    System.out.println();
    System.out.print("正斜下↙:" + zxxX+"t");
    System.out.print("纵向下↓:" + zxX+"t");
    System.out.print("反斜下↘:" + fxxX);
    System.out.println();
    if (zxS + zxX > 4 || hxY + hxZ > 4 || zxxS + zxxX > 4 || fxxS + fxxX > 4) {
      return true;
    }
    return false;
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/136036.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号