入门实例代码展示-----五子棋(方法版)

admin2025-05-16 14:53:164718

五子棋(方法版)——末尾有完整代码

使用方法来写小项目,可以减少大量的代码冗余

1.先定义五子棋的属性:

即:

白棋符号、黑棋符号、棋盘符号、网格序号、棋盘宽度

public static final String BAI = "○";//白棋符号

public static final String HEI = "●";//黑棋符号

public static final String XX = "+";//棋盘符号

static String[] nums = {" ","⒈","⒉","⒊","⒋","⒌","⒍","⒎","⒏","⒐","⒑","⒒","⒓","⒔","⒕","⒖","⒗","⒘","⒙","⒚","⒛"};//网格序号

static int sum=16;//棋盘宽度

static String a[][]=new String[sum][sum];//定义数组,储存棋盘

2.写入需要使用到的方法

1.初始化,载入棋盘初始数据

//初始化,载入棋盘初始数据

public static void getGobang()

{

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

{

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

if(i==0) {

a[i][j]=nums[j];

}

else if(j==0&&i!=0) {

a[i][j]=nums[i];

}

else a[i][j]=XX;

}

}

}

2.判断落子位置是否符合规则

//判断落子位置是否符合规则

public static boolean islocation(boolean flag,int x,int y)

{

if(x<1||y<1||x>=15) {

System.out.print("坐标不存在\n");

return false;

}

else if(a[x][y]!=XX) {

System.out.print("坐标已被占用\n");

return false;

}

else return true;

}

3.确定落子颜色

//确定落子颜色

public static void printGobang(String[][] a) {

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

{

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

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

System.out.print("\n");

}

}

4.确定落子颜色

//确定落子颜色

public static void Move(boolean flag,int x,int y)

{

if(flag)

a[x][y]=HEI;

else

a[x][y]=BAI;

}

5.判断是否分出了胜负

//判断是否分出了胜负

public static boolean isVictory(int x,int y)

{

System.out.print("已输入"+a[x][y]);

System.out.print("\n");

int p=1;

int max=x,may=y;

while(max>=1&&a[x][y]==a[--max][may])

{

p++;

}

max=x;

while(max<15&&a[x][y]==a[++max][may])

p++;

max=x;

if(p>=5) return true;

else p=1;

//xxxxxxx

while(a[x][y]==a[max][--may]&&may>=1)

p++;

may=y;

while(a[x][y]==a[max][++may]&&may<15)

p++;

may=y;

if(p>=5) return true;

else p=1;

//yyyyyyyy

while(a[x][y]==a[--max][--may]&&max>=1&&may>=1)

p++;

max=x;

may=y;

while(a[x][y]==a[++max][++may]&&max<15&&may<15)

p++;

max=x;

may=y;

if(p>=5) return true;

else p=1;

//xxxxxyyyyy

while(a[x][y]==a[--max][++may]&&max>=1&&may<15)

p++;

max=x;

may=y;

while(a[x][y]==a[++max][--may]&&max<15&&may>=1)

p++;

max=x;

may=y;

if(p>=5) return true;

else p=1;

//yyyyyxxxxx

return false;

}

6.写入主方法,调用其他方法开始运行

public static void main(String[] args)

{

Scanner reader=new Scanner(System.in);

//初始化棋盘

getGobang();

System.out.print("游戏开始\n");

//打印棋盘

printGobang(a);

int x,y;//记录输入坐标

boolean flag=true;

while(true)

{

System.out.println("请"+(flag?"黑":"白")+"棋落子");

System.out.print("请输入落子坐标X,输入-1结束游戏");

x=reader.nextInt();

System.out.print("请输入落子坐标y,输入-1结束游戏");

y=reader.nextInt();

if(x==-1||y==-1) break;

if(islocation(flag,x,y)) {

Move(flag,x,y);

if(isVictory(x,y)) {

printGobang(a);

System.out.print(((flag)?"黑":"白")+"棋获胜!!游戏结束!\n");

break;

}

else {

flag=!flag;

printGobang(a);

}

}

else{

continue;

}

}

}

源码附上::

package com.Xu.bank;//包名,根据自己的包名修改或直接删掉

//XuWenXing

import java.util.Scanner;

public class Gobang

{

public static final String BAI = "○";

public static final String HEI = "●";

public static final String XX = "+";

static String[] nums = {" ","⒈","⒉","⒊","⒋","⒌","⒍","⒎","⒏","⒐","⒑","⒒","⒓","⒔","⒕","⒖","⒗","⒘","⒙","⒚","⒛"};

static int sum=16;

static String a[][]=new String[sum][sum];

boolean isBlack = true;

public static void main(String[] args)

{

Scanner reader=new Scanner(System.in);

//初始化棋盘

getGobang();

System.out.print("游戏开始\n");

//打印棋盘

printGobang(a);

int x,y;//记录输入坐标

boolean flag=true;

while(true)

{

System.out.println("请"+(flag?"黑":"白")+"棋落子");

System.out.print("请输入落子坐标X,输入-1结束游戏");

x=reader.nextInt();

System.out.print("请输入落子坐标y,输入-1结束游戏");

y=reader.nextInt();

if(x==-1||y==-1) break;

if(islocation(flag,x,y)) {

Move(flag,x,y);

if(isVictory(x,y)) {

printGobang(a);

System.out.print(((flag)?"黑":"白")+"棋获胜!!游戏结束!\n");

break;

}

else {

flag=!flag;

printGobang(a);

}

}

else{

continue;

}

}

}

//初始化,载入棋盘初始数据

public static void getGobang()

{

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

{

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

if(i==0) {

a[i][j]=nums[j];

}

else if(j==0&&i!=0) {

a[i][j]=nums[i];

}

else a[i][j]=XX;

}

}

}

//判断落子位置是否符合规则

public static boolean islocation(boolean flag,int x,int y)

{

if(x<1||y<1||x>=15) {

System.out.print("坐标不存在\n");

return false;

}

else if(a[x][y]!=XX) {

System.out.print("坐标已被占用\n");

return false;

}

else return true;

}

//刷新棋盘,打印棋盘

public static void printGobang(String[][] a) {

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

{

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

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

System.out.print("\n");

}

}

//确定落子颜色

public static void Move(boolean flag,int x,int y)

{

if(flag)

a[x][y]=HEI;

else

a[x][y]=BAI;

}

//判断是否分出了胜负

public static boolean isVictory(int x,int y)

{

System.out.print("已输入"+a[x][y]);

System.out.print("\n");

int p=1;

int max=x,may=y;

while(max>=1&&a[x][y]==a[--max][may])

{

p++;

}

max=x;

while(max<15&&a[x][y]==a[++max][may])

p++;

max=x;

if(p>=5) return true;

else p=1;

//xxxxxxx

while(a[x][y]==a[max][--may]&&may>=1)

p++;

may=y;

while(a[x][y]==a[max][++may]&&may<15)

p++;

may=y;

if(p>=5) return true;

else p=1;

//yyyyyyyy

while(a[x][y]==a[--max][--may]&&max>=1&&may>=1)

p++;

max=x;

may=y;

while(a[x][y]==a[++max][++may]&&max<15&&may<15)

p++;

max=x;

may=y;

if(p>=5) return true;

else p=1;

//xxxxxyyyyy

while(a[x][y]==a[--max][++may]&&max>=1&&may<15)

p++;

max=x;

may=y;

while(a[x][y]==a[++max][--may]&&max<15&&may>=1)

p++;

max=x;

may=y;

if(p>=5) return true;

else p=1;

//yyyyyxxxxx

return false;

}

}

整体代码展示 运行展示

创作不易,每天更新优质内容,各位路过给个关注。。。。