Java五子棋簡單實現(xiàn)代碼舉例
一:案例要求:
實現(xiàn)一個控制臺下五子棋的程序。用一個二維數(shù)組模擬一個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]='┼';
}
}
}
}
三:結(jié)果:

總結(jié)
到此這篇關(guān)于Java五子棋簡單實現(xiàn)的文章就介紹到這了,更多相關(guān)Java五子棋內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于JAVA經(jīng)典算法40題(超實用版)
本篇文章小編為大家介紹一下,關(guān)于JAVA經(jīng)典算法40題(超實用版),有需要的朋友可以參考一下2013-04-04
Java基礎(chǔ)教程之獲取操作系統(tǒng)及瀏覽器信息
最近在開發(fā)中需要從request中獲取操作系統(tǒng),瀏覽器及瀏覽器版本信息,所以下面這篇文章主要給的大家介紹了關(guān)于Java基礎(chǔ)教程之獲取操作系統(tǒng)及瀏覽器信息的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下2021-10-10
IDEA 連接數(shù)據(jù)庫的實現(xiàn)方法
這篇文章主要介紹了IDEA 連接數(shù)據(jù)庫的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
Java INPUTSTREAM如何實現(xiàn)重復(fù)使用
這篇文章主要介紹了Java INPUTSTREAM如何實現(xiàn)重復(fù)使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-10-10
SpringBoot實現(xiàn)接口返回數(shù)據(jù)脫敏的代碼示例
在當(dāng)今的信息化時代,數(shù)據(jù)安全尤為重要,接口返回數(shù)據(jù)脫敏是一種重要的數(shù)據(jù)保護手段,可以防止敏感信息通過接口返回給客戶端,本文旨在探討如何在SpringBoot應(yīng)用程序中實現(xiàn)接口返回數(shù)據(jù)脫敏,需要的朋友可以參考下2024-07-07

