java实现简单的五子棋(样式简陋,但具备游戏的基本规则)

package com.softeem.array2;


import java.util.Scanner;


/**
 * 五子棋,棋盘,下棋,坐标(coordinate),判断
 * @author Administrator
 *
 */
public class Checkerboard {
public static void checkerboard(char[][] array){
//显示棋盘
for(int i=0;i<array.length;i++){
for(int j=0;j<array[i].length;j++){
array[i][j]='+';
System.out.print(" "+array[i][j]);
}
System.out.println();
}
}
//判断
public static boolean judge(char[][] array){
for(int i=0;i<array.length;i++){
for(int j=0;j<array[i].length;j++){
int num=1;
if(array[i][j]=='●'){
//判断棋子连接:横(-)
for(int m=j+1;m<=j+4;m++){
if(array[i][m]=='●'){
num++;
if(num==5){
System.out.println("黑棋获胜!");
return true;
}
}else{
num=1;
break;
}
}
//判断棋子连接:竖(|)
for(int m=i+1;m<=i+4;m++){
if(array[m][j]=='●'){
num++;
if(num==5){
System.out.println("黑棋获胜!");
return true;
}
}else{
num=1;
break;
}
}
//判断棋子连接:斜杠(\)
for(int m=1;m<=4;m++){
if(array[i+m][j+m]=='●'){
num++;
if(num==5){
System.out.println("黑棋获胜!");
return true;
}
}else{
num=1;
break;
}
}
//判断棋子连接:反斜杠(/)
if(j>=4){
for(int m=1;m<=4;m++){
if(array[i+m][j-m]=='●'){
num++;
if(num==5){
System.out.println("黑棋获胜!");
return true;
}
}else{
num=1;
break;
}
}
}
}
if(array[i][j]=='○'){
//判断棋子连接:横(-)
for(int m=j+1;m<=j+4;m++){
if(array[i][m]=='○'){
num++;
if(num==5){
System.out.println("白棋获胜!");
return true;
}
}else{
num=1;
break;
}
}
//判断棋子连接:竖(|)
for(int m=i+1;m<=i+4;m++){
if(array[m][j]=='○'){
num++;
if(num==5){
System.out.println("白棋获胜!");
return true;
}
}else{
num=1;
break;
}
}
//判断棋子连接:斜杠(\)
for(int m=1;m<=4;m++){
if(array[i+m][j+m]=='○'){
num++;
if(num==5){
System.out.println("白棋获胜!");
return true;
}
}else{
num=1;
break;
}
}
//判断棋子连接:反斜杠(/)
if(j>=4){
for(int m=1;m<=4;m++){
if(array[i+m][j-m]=='○'){
num++;
if(num==5){
System.out.println("白棋获胜!");
return true;
}
}else{
num=1;
break;
}
}
}
}
}
}
return false;
}
//下棋
public static void playChess(){
char[][] array=new char[20][20];
checkerboard(array);
int[] coordinate=new int[2];
boolean sign=true;
int num=array.length*array[0].length;
Scanner sc=new Scanner(System.in);
for(int i=0;true;i++){
if(sign==true){
System.out.print("请黑棋落子,坐标为:");
for(int j=0;j<coordinate.length;j++){
coordinate[j]=sc.nextInt();
}
if(1<=coordinate[0]*coordinate[1] &
coordinate[0]*coordinate[1]<=array.length*array[i].length){
if(array[coordinate[0]-1][coordinate[1]-1]=='+'){
array[coordinate[0]-1][coordinate[1]-1]='●';
sign=false;
num--;
}else{
System.out.println("输入坐标无效,请重新输入:");
continue;
}
}else{
System.out.println("输入坐标无效,请重新输入:");
continue;
}
}else{
System.out.print("请白棋落子,坐标为:");
for(int j=0;j<coordinate.length;j++){
coordinate[j]=sc.nextInt();
}
if(1<=coordinate[0]*coordinate[1] &
coordinate[0]*coordinate[1]<=array.length*array[i].length){
if(array[coordinate[0]-1][coordinate[1]-1]=='+'){
array[coordinate[0]-1][coordinate[1]-1]='○';
sign=true;
num--;
}else{
System.out.println("输入坐标无效,请重新输入:");
continue;
}
}else{
System.out.println("输入坐标无效,请重新输入:");
continue;
}
}
for(int m=0;m<array.length;m++){
for(int n=0;n<array[m].length;n++){
System.out.print(" "+array[m][n]);
}
System.out.println();
}
if(num==0){
System.out.println("游戏结束!");
break;
}
if(judge(array)==true){
System.out.println("游戏结束!");
break;
}
}
}
public static void main(String[] args) {
playChess();
}
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
java五子棋 五子棋 java 五子棋代码直接和电脑下对战 Public class FiveChessAI { public int data_a[][] = new int[5][3];// 用于储存进攻值 public int data_d[][] = new int[5][3];// 用于储存防守值 FiveChessAI() { // 进攻值的初始化 data_a[1][1] = 2; data_a[1][2] = 3; data_a[2][1] = 10; data_a[2][2] = 110; data_a[3][1] = 2500; data_a[3][2] = 3000; data_a[4][1] = 99999; data_a[4][2] = 99999; // 防守值的初始化 data_d[1][1] = 1; data_d[1][2] = 2; data_d[2][1] = 1; data_d[2][2] = 100; data_d[3][1] = 100; data_d[3][2] = 500; data_d[4][1] = 20000; data_d[4][2] = 50000; } public FiveChessMap g1 = new FiveChessMap(); public int x, y; void find()// 查找最大值 { int max = 0; for (int i = 0; i < 15; ++i) { for (int j = 0; j < 15; ++j) { if (max < g1.data[i][j]) { max = g1.data[i][j]; } } } for (int i = 0; i < 15; ++i) { for (int j = 0; j < 15; ++j) { if (max == g1.data[i][j]) { x = i; y = j; return; } } } } int getx()// 返回x坐标值 { return x; } int gety()// 返回y坐标值 { return y; } boolean judge_result(int x, int y, int who, FiveChessMap gm)// 判断胜负 { int m, n, i, lianzi = 0; for (m = -1; m <= 1; m++) for (n = -1; n <= 1; n++) { if (m != 0 || n != 0) { for (i = 1; i <= 4; i++) { if (x + i * m >= 0 && x + i * m < 15 && y + i * n >= 0 && y + i * n < 15 && gm.data[x + i * m][y + i * n] == who) { lianzi++; } else { break; } } for (i = -1; i >= -4; i--) { if (x + i * m >= 0 && x + i * m < 15 && y + i * n >= 0 && y + i * n < 15 && gm.data[x + i * m][y + i * n] == who) { lianzi++; } else { break; } } if (lianzi >= 4) { return true; } else { lianzi = 0; } } } return false; }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星星-相惜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值