实现较为简单的五子棋游戏
- 输出17行17列的棋盘
- 黑方和自方落子
- 黑方和白方能够根据落子的内容在对应位置下@和o
- 判断黑方或者白方胜利,游戏结束
- 判断黑方或者白方重复落子的功能
代码
package day1019;
import java.util.Scanner;
public class Five_In_A_Row {
public static char[][] arr1 = new char[17][17];
public static Scanner sc = new Scanner(System.in);
public static int xa=0,xb=0,ya=0,yb=0,count=0;
public static boolean flag = true;
public static void Black(){
System.out.println("请黑方落子:");
String str1 = sc.next();
char x = str1.charAt(0);
char y = str1.charAt(1);
for(int i=0;i<17;i++){
if(arr1[i][0]==x)
xa = i;
}
for(int i=0;i<17;i++){
if(arr1[0][i]==y)
xb = i;
}
if(arr1[xa][xb]=='o'){
System.out.println("此处已有棋子,请重新下一个棋子!");
Black();
}
else
arr1[xa][xb] = '@';
for(int i=0;i<arr1.length;i++ ){
for(int j=0;j<arr1[i].length;j++){
System.out.print(arr1[i][j]);
}
System.out.println();
}
}
public static void White(){
System.out.println("请白方落子:");
String str1 = sc.next();
char x = str1.charAt(0);
char y = str1.charAt(1);
for(int i=0;i<17;i++){
if(arr1[i][0]==x)
ya = i;
}
for(int i=0;i<17;i++){
if(arr1[0][i]==y)
yb = i;
}
if(arr1[ya][yb]=='@'){
System.out.println("此处已有棋子,请重新下一个棋子!");
White();
}
else
arr1[ya][yb] = 'o';
for(int i=0;i<arr1.length;i++ ){
for(int j=0;j<arr1[i].length;j++){
System.out.print(arr1[i][j]);
}
System.out.println();
}
}
public static void BlackWin(int xa,int xb){
for(int i=1;i<xa;i++){
if(arr1[xa-i][xb]=='@'){
count++;
}
else
break;
if(count==5){
System.out.println("黑方获胜!");
flag = false;
}
}
count = 1;
for(int i=1;i<16-xa;i++){
if(arr1[xa+i][xb]=='@'){
count++;
}
else
break;
if(count==5){
System.out.println("黑方获胜!");
flag = false;
}
}
count = 1;
for(int i=1;i<xb;i++){
if(arr1[xa][xb-i]=='@'){
count++;
}
else
break;
if(count==5){
System.out.println("黑方获胜!");
flag = false;
}
}
count = 1;
for(int i=1;i<16-xb;i++){
if(arr1[xa][xb+i]=='@'){
count++;
System.out.println("--"+count);
}
else
break;
if(count==5){
System.out.println("黑方获胜!");
flag = false;
}
}
count = 1;
for(int i=1,j=1;i<xa&&j<xb;i++,j++){
if(arr1[xa-i][xb-i]=='@'){
count++;
}
else
break;
if(count==5){
System.out.println("黑方获胜!");
flag = false;
}
}
count = 1;
for(int i=1,j=1;i<=xa&&j<=16-xb;i++,j++){
if(arr1[xa-i][xb+i]=='@'){
count++;
}
else
break;
if(count==5){
System.out.println("黑方获胜!");
flag = false;
}
}
count = 1;
for(int i=1,j=1;i<=16-xa&&j<=xb;i++,j++){
if(arr1[xa+i][xb-i]=='@'){
count++;
}
else
break;
if(count==5){
System.out.println("黑方获胜!");
flag = false;
}
}
count = 1;
for(int i=1,j=1;i<=16-xa&&j<=16-xb;i++,j++){
if(arr1[xa+i][xb+i]=='@'){
count++;
}
else
break;
if(count==5){
System.out.println("黑方获胜!");
flag = false;
}
}
}
public static void WhiteWin(int ya,int yb){
for(int i=1;i<=ya;i++){
if(arr1[ya-i][yb]=='o'){
count++;
}
else
break;
if(count==5){
System.out.println("白方获胜!");
flag = false;
}
}
count = 1;
for(int i=1;i<=16-ya;i++){
if(arr1[ya+i][yb]=='o'){
count++;
}
else
break;
if(count==5){
System.out.println("白方获胜!");
flag = false;
}
}
count = 1;
for(int i=1;i<=yb;i++){
if(arr1[ya][yb-i]=='o'){
count++;
}
else
break;
if(count==5){
System.out.println("白方获胜!");
flag = false;
}
}
count = 1;
for(int i=1;i<=16-yb;i++){
if(arr1[ya][yb+i]=='o'){
count++;
}
else
break;
if(count==5){
System.out.println("白方获胜!");
flag = false;
}
}
count = 1;
for(int i=1,j=1;i<=ya&&j<=yb;i++,j++){
if(arr1[xa-i][yb-i]=='o'){
count++;
}
else
break;
if(count==5){
System.out.println("白方获胜!");
flag = false;
}
}
count = 1;
for(int i=1,j=1;i<=ya&&j<=16-yb;i++,j++){
if(arr1[ya-i][yb+i]=='o'){
count++;
}
else
break;
if(count==5){
System.out.println("白方获胜!");
flag = false;
}
}
count = 1;
for(int i=1,j=1;i<=16-ya&&j<=yb;i++,j++){
if(arr1[ya+i][yb-i]=='o'){
count++;
}
else
break;
if(count==5){
System.out.println("白方获胜!");
flag = false;
}
}
count = 1;
for(int i=1,j=1;i<=16-ya&&j<=16-yb;i++,j++){
if(arr1[ya+i][yb+i]=='o'){
count++;
}
else
break;
if(count==5){
System.out.println("白方获胜!");
flag = false;
}
}
}
public static void main(String[] args) {
arr1[0][0] = ' '; char hang = 'a',lie = 'a';
for(int i=1;i<17;i++){
arr1[0][i] = hang;
hang+=1;
}
for(int i=1;i<17;i++){
arr1[i][0] = lie;
lie+=1;
}
for(int i=1;i<17;i++ ){
for(int j=1;j<17;j++){
arr1[i][j] = 'x';
}
}
for(int i=0;i<arr1.length;i++ ){
for(int j=0;j<arr1[i].length;j++){
System.out.print(arr1[i][j]);
}
System.out.println();
}
while(flag){
Black();
BlackWin(xa,xb);
if(flag==false)
break;
White();
if(flag==false)
break;
}
}
}
运行结果