五子棋简单实现

package classwork;

import javax.sound.midi.Soundbank;

import java.util.Arrays;

import java.util.Scanner;

public class Dome2 {

static String[][] Qp=new String[15][15]; static String[] num = {"⒈","⒉","⒊","⒋","⒌","⒍","⒎","⒏","⒐","⒑","⒒","⒓","⒔","⒕","⒖"};

static String line = "十";

static String white = "☆";

static String black = "★";

public static void main(String[] args) {

in();

get();

start();

}

  public static void in(){

for (int i = 0; i < Qp.length; i++) {

for (int j = 0; j < Qp[i].length; j++) {

if (j == Qp[i].length - 1) {

Qp[i][j] = num[i];

}

else {

Qp[i][j] = line;

}

if (i == Qp.length - 1) {

Qp[i][j]=num[j];

} } } }

public static void get(){

for (int i = 0; i < Qp.length; i++) {

for (int j = 0; j < Qp[i].length; j++) { System.out.print(Qp[i][j]);

} System.out.println();

} }

public static void start(){

Scanner sc = new Scanner(System.in); boolean flag = true;

OUT:while(true){

if (flag==true) {

System.out.println("请输入黑棋子坐标:"); int m = sc.nextInt()-1;

int n = sc.nextInt()-1;

boolean c= check(m,n);

if (c==true) {

Qp[m][n]=black;

get();

boolean v=win(m,n,black);

if(v==true){

System.out.println("黑子胜");

break OUT;

} else{

flag = false;

} }else {

System.out.println("输入有误重新输入"); } }else {

System.out.println("请输入白棋子坐标:"); int m = sc.nextInt()-1;

int n = sc.nextInt()-1;

boolean c= check(m,n);

if (c==true) {

Qp[m][n]=white; get();

boolean v=win(m,n,white);

if(v==true){

System.out.println("白子胜");

break OUT;

} else{

flag = true;

} }else {

System.out.println("输入有误重新输入");

} } } }

  public static boolean check(int m,int n){

if ((m> Qp.length-1||m<0)||(n> Qp.length-1||n<0)) {

System.out.println("棋子越界");

// System.out.println("错误");

return false;

} if(Qp[m][n].equals(black)||Qp[m][n].equals(white)) {

System.out.println("位置重复");

// System.out.println("错误");

return false;

}

//System.out.println("正确");

return true;

}

public static int lrWin(int m,int n,String qz) { int count = 0;

for (int i = n-1; i>=0; i--) {

if (Qp[m][i].equals(qz)) {

count++;

//System.out.println(count+"右");

}else {

break;

} }

for (int j=n+1;j< Qp.length-1;j++){

if (Qp[m][j].equals(qz)) {

count++;

// System.out.println(count+"左");

}else {

break;

} }

count++;

//System.out.println("合计有"+count+"个左右连在一起");

return count; }

 public static int udWin(int m,int n,String qz){

int count = 0;

//向上 for(int i = m-1; i>=0;i--){

if (Qp[i][n].equals(qz)) {

count++;

//System.out.println(count+"上");

}else{

break; } }

//向下 for (int j=m+1;j< Qp.length-1;j++){

if (Qp[j][n].equals(qz)) {

count++;

//System.out.println(count+"下");

}else {

break;

} }

count++;

//System.out.println("合计有"+count+"个上下连着");

return count;

}

public static int lurdWin(int m,int n,String qz){

int count = 0;

for(int i = m-1,j=n-1; i>=0&&j>=0;i--,j--){

if (Qp[i][j].equals(qz)) {

count++;

//System.out.println(count+"左上");

}else{

break;

} }

for (int i=m+1,j=n+1;i<Qp.length-1&&j< Qp[i].length-1;i++,j++){

if (Qp[i][j].equals(qz)) {

count++;

// System.out.println(count+"右下");

}else {

break;

} } count++;

//System.out.println("合计有"+count+"个上左下右连着");

return count;

}

 public static int ldruWin(int m,int n,String qz){

int count = 0;

for(int i = m+1,j=n-1; i< Qp.length-1&&j>=0;i++,j--){

if (Qp[i][j].equals(qz)) {

count++;

//System.out.println(count+"左下");

}else{

break;

} }

for (int i=m-1,j=n+1;i>=0&&j< Qp[i].length-1;i--,j++){

if (Qp[i][j].equals(qz)) {

count++;

//System.out.println(count+"右上");

}else {

break;

} }

count++;

//System.out.println("合计有"+count+"个下左上右连着");

return count;

}

  public static boolean win(int m,int n,String qz){

if(lrWin(m,n,qz)>=5||udWin(m,n,qz)>=5||lurdWin(m,n,qz)>=5||ldruWin(m,n,qz)>=5) {

return true;

}

return false;

}

}

https://share.weiyun.com/LnXMtfOx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值