首页 > 基础资料 博客日记
Java五子棋
2024-10-09 14:00:06基础资料围观86次
Java资料网推荐Java五子棋这篇文章给大家,欢迎收藏Java资料网享受知识的乐趣
目录
一:案例要求:
实现一个控制台下五子棋的程序。用一个二维数组模拟一个15*15路的五子棋棋盘,把每个元素赋值位“┼”可以画出棋盘, “○”代表该交叉点下了一颗白棋子,“●”代表该交叉点下了一颗黑棋子。每次用户输入要下棋的坐标,然后程序显示出下完后的棋盘,默认黑子先行。(选做)
二:代码:
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]='┼';
}
}
}
}
三:结果:
文章来源:https://blog.csdn.net/mrjieke6/article/details/142611838
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签: