编写的五子棋程序 输入坐标后char数组的对应元素不改变 导致棋子不能建立
发表在Java视频课程答疑 2018-12-14 悬赏:7 学分
是否精华
版块置顶:


import java.util.*;

public class Gobang {

public static void main(String[] args) {

/*创建游戏*/

Scanner sc=new Scanner(System.in);

boolean finish=false;

int flagnum=1;

char flagch;

int x=0,y=0;

  /*生成棋盘*/

game:while(!finish) {

  char checkerboard[][]=new char[15][15];

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

Arrays.fill(checkerboard[i],'-');

}

System.out.println("############################################");

System.out.println(" 1  2  3  4  5  6  7  8  9  10 11 12 13 14 15");

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

System.out.println((char)(i+65)+" ");

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

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

  } System.out.println();

}

System.out.println("############################################");

/*判断当前下棋者*/

if(flagnum==1) {

flagch='*';

System.out.println("请*输入棋子坐标");

}else {

flagch='o';

System.out.println("请o输入棋子坐标");

}  

/*输入棋子坐标*/

String str=sc.nextLine();

char ch=str.toUpperCase().charAt(0);

x=(int)ch-65;

y=Integer.parseInt(str.substring(1))-1;

/*判断坐标是否在棋盘内*/

if(x<0||x>14||y<0||y>14) {

System.out.println("***输入的坐标有误,请重新输入***");

continue;

}

/*判断是否有棋子*/

if(checkerboard[x][y]=='-'){

checkerboard [x][y]=flagch;//!!!!!!!!!!!!

}else {

System.out.println("位置上已有其他棋子,请重新输入"); 

continue;

}

/*胜利条件1*/

if(y+4<=14){if(checkerboard[x][y+1]==flagch

&&checkerboard[x][y+2]==flagch

&&checkerboard[x][y+3]==flagch

&&checkerboard[x][y+4]==flagch) {

finish=true;

break game;

}}

/*胜利条件2*/

if(y-4>=0){if(checkerboard[x][y-1]==flagch

&&checkerboard[x][y-2]==flagch

&&checkerboard[x][y-3]==flagch

&&checkerboard[x][y-4]==flagch) {

finish=true;

break game;

}}

/*胜利条件3*/

if(x-4>=0){if(checkerboard[x-1][y]==flagch

&&checkerboard[x-2][y]==flagch

&&checkerboard[x-3][y]==flagch

&&checkerboard[x-4][y]==flagch) {

finish=true;

break game;

}}

/*胜利条件4*/

if(x+4<=14){if(checkerboard[x+1][y]==flagch

&&checkerboard[x+2][y]==flagch

&&checkerboard[x+3][y]==flagch

&&checkerboard[x+4][y]==flagch) {

finish=true;

break game;

}}

/*胜利条件5*/

if(x-4>=0&&y-4>=0){if(checkerboard[x-1][y-1]==flagch

&&checkerboard[x-2][y-2]==flagch

&&checkerboard[x-3][y-3]==flagch

&&checkerboard[x-4][y-4]==flagch) {

finish=true;

break game;

}}

/*胜利条件6*/

if(x+4<=14&&y-4>=0){if(checkerboard[x+1][y-1]==flagch

&&checkerboard[x+2][y-2]==flagch

&&checkerboard[x+3][y-3]==flagch

&&checkerboard[x+4][y-4]==flagch) {

finish=true;

break game;

}}

/*胜利条件7*/

if(x-4>=0&&y+4<=14){if(checkerboard[x-1][y+1]==flagch

&&checkerboard[x-2][y+2]==flagch

&&checkerboard[x-3][y+3]==flagch

&&checkerboard[x-4][y+4]==flagch) {

finish=true;

break game;

}}

/*胜利条件8*/

if(x+4<=14&&y+4<=14){if(checkerboard[x+1][y+1]==flagch

&&checkerboard[x+2][y+2]==flagch

&&checkerboard[x+3][y+3]==flagch

&&checkerboard[x+4][y+4]==flagch) {

finish=true;

break game;

}}

/*更换玩家*/

   flagnum*=-1;

}

/*游戏结束*/

if(flagnum==1) {

System.out.println("*玩家获胜");

}else {

System.out.println("o玩家获胜");

      }}}



QQ图片20181214200840.png


分享到:
精彩评论 2
根号申
学分:4736 LV12
TA的每日心情
2021-07-16 23:48:46
2018-12-15
沙发
  1. 参考源码。

  2. 你是不是每次输出时都把原数组覆盖了?

GLACE
学分:45 LV2
2018-12-16
板凳
解决了。谢谢老师的解答
首页上一页 1 下一页尾页 2 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照