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

网友投稿 234 2022-12-20


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 {

http:// 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[poinhttp://t.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+"\t\t\t");

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;

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Spring @value和@PropertySource注解使用方法解析
下一篇:Java实现人机猜拳小游戏
相关文章

 发表评论

暂时没有评论,来抢沙发吧~