Java五子棋

杰克尼 2024-10-20 09:35:01 阅读 97

目录

一:案例要求:

二:代码:

三:结果:


一:案例要求:

实现一个控制台下五子棋的程序。用一个二维数组模拟一个15*15路的五子棋棋盘,把每个元素赋值位“┼”可以画出棋盘, “○”代表该交叉点下了一颗白棋子,“●”代表该交叉点下了一颗黑棋子。每次用户输入要下棋的坐标,然后程序显示出下完后的棋盘,默认黑子先行。(选做)

二:代码:

<code>package ceshi;

import java.util.Scanner;

public class test {

static Scanner sc =new Scanner(System.in);

public static void main(String[] args) {

char[][] qipan=new char[15][15];

origin(qipan);//初始化

menu(qipan);//打印棋盘

int flag=1;

int a=-10;

int [] a1;

char s;

while (true) {

a1=xia(qipan, flag);//下棋操作(flag)决定下黑棋还是白棋

s=flag==1?'●':'○';

a=judge(qipan,a1,s);//判断下棋位置是否已有棋子和是否获胜

if(a==1){

System.out.println("黑棋获胜");break;

}

if(a==-1){

System.out.println("白棋获胜");break;

}

flag*=-1;

}

}

private static int judge(char[][] qipan,int[] a1,char s) {//判断下棋位置是否已有棋子和是否获胜

int n=0,n1=1;

int f1=-1,f2=-1;

int sizelie=1,sizehang=1,sizexie=1,sizexie1=1;

int i=a1[0];

int j=a1[1];

while(n<5){//列

if(i<=0){

f1=0;

} else if (i==14) {

f2=0;

}

if(f1!=0){

if(qipan[i+n1][j]==s){

sizelie++;

}else{

f1=0;

}

}

if(f2!=0){

if(qipan[i-n1][j]==s){

sizelie++;

}else{

f2=0;

}

}

if(sizelie>=5){

return 1;

}

n++;n1++;

}

n=0;n1=1;

f1=f2=-1;

while(n<5){//行

if(j<=0){

f1=0;

} else if (j==14) {

f2=0;

}

if(f1!=0){

if(qipan[i][j-n1]==s){

sizehang++;

}else{

f1=0;

}

}

if(f2!=0){

if(qipan[i][j+n1]==s){

sizehang++;

}else{

f2=0;

}

}

if(sizehang>=5){

return 1;

}

n++;n1++;

}

n=0;n1=1;

f1=f2=-1;

while(n<5){//斜着

if(j<=0||i==0){

f1=0;

} else if (j==14||i==14) {

f2=0;

}

if(f1!=0){

if(qipan[i-n1][j-n1]==s){

sizexie++;

}else{

f1=0;

}

}

if(f2!=0){

if(qipan[i+n1][j+n1]==s){

sizexie++;

}else{

f2=0;

}

}

if(sizexie>=5){

return 1;

}

n++;n1++;

}

n=0;n1=1;

f1=f2=-1;

while(n<5){//斜着fan

if(j==14||i==0){//右上

f1=0;

} else if (j==0||i==14) {

f2=0;

}

if(f1!=0){

if(qipan[i-n1][j+n1]==s){

sizexie1++;

}else{

f1=0;

}

}

if(f2!=0){

if(qipan[i+n1][j-n1]==s){

sizexie1++;

}else{

f2=0;

}

}

if(sizexie1>=5){

return 1;

}

n++;n1++;

}

return 0;

}

private static int[] xia(char[][] qipan,int flag) {//下棋操作(flag)决定下黑棋还是白棋

char s=flag==1?'●':'○';

if(s=='●'){

System.out.print("请选择'●'的坐标:");

}else {

System.out.print("请选择'○'的坐标:");

}

int x=0,y=0;

while (true) {

x=sc.nextInt();

y=sc.nextInt();

if(qipan[x][y]!='┼'){

System.out.println("该位置已有棋子,请重新输入:");

}else{

break;

}

}

qipan[x][y]=s;

menu(qipan);

int[] a={x,y};

return a;

}

private static void menu(char[][] qipan) {

System.out.print(" ");

for (int i = 0; i < 15; i++) {

System.out.print((i+1)+" ");

}

System.out.println();

for(int i=0;i<15;i++){

if(i<9)

System.out.print(i+1+" ");

else

System.out.print(i+1+" ");

for(int j=0;j<15;j++){

System.out.print(qipan[i][j]+" ");

}

System.out.println();

}

}

private static void origin(char[][] qipan) {//初始化

for(int i=0;i<15;i++){

for(int j=0;j<15;j++){

qipan[i][j]='┼';

}

}

}

}

三:结果:



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。