本帖最后由 邵震 于 2013-5-3 08:50 编辑
- * 要求:制作一个五子棋小游戏。
- * 思路: 1 首先定义一个二维数组用于打印棋盘。
- * 2 利用键盘录入,输入两个不超过15的值,并替换到二维数组里。
- * 3 对用户输入的数值进行判断,是否重复,是否越界。
- */
- package TestDay26;
- import java.util.*;
- public class XiaoYouXi
- {
- public static void main(String[] args)
- {
- qipan();
- }
- private static void qipan()
- {
- int c=17;//用于定义棋盘的长,长度的拼音缩写。
- int k=17;//用于定义期盼的宽,宽度的拼音缩写。
- String [][] qiPan = new String [c][k];//定义一个二维数组,用于打印棋盘。
- String [] b = {"⑴","⑵","⑶","⑷","⑸","⑹","⑺","⑻","⑼","⑽","⑾","⑿","⒀","⒁","⒂"};
- //用于给二维数组进行赋值,w是外循环的拼音缩写。
- for(int w=0;w<c;w++)
- {
- int s=w-1;//用于打印棋盘竖边的角标,竖排角标的拼音缩写。
- int h=0;//用于打印棋盘横边的角标,横排角标的拼音缩写。
- for(int n=0;n<k;n++)//nXH是内循环的拼音缩写。
- {
- if(n==0 && w==0)
- {
- qiPan[w][n]="邵";
- }
- else if(n==k-1 && w==0)
- {
- qiPan[w][n]="震";
- }
- else if(n==0 && w==c-1)
- {
- qiPan[w][n]="出";
- }
- else if(n==k-1 && w==c-1)
- {
- qiPan[w][n]="品";
- }
- else if ((w==0 && n!=0 && n!=k-1)||(w==c-1 && n!=0 && n!=k-1))
- {
- qiPan[w][n]=b[h];
- h++;
- }
- else if (w!=0 && w!=c-1 && n==0 || n==k-1)
- {
- qiPan[w][n]=b[s];
- }
- else{
- qiPan[w][n]="╋";
- }
- }
- }
- for(int w=0;w<c;w++)//用于打印第一个棋盘。
- {
- for(int n=0;n<k;n++)
- {
- System.out.print(qiPan[w][n]);
- }
- System.out.println();
- }
- System.out.println("请输入1到15之间的数,包括1和15。");
- System.out.println("先输入横轴坐标,回车,再输入竖轴坐标。");
- String answer="huiqi";
- Scanner z =new Scanner(System.in); //zB是坐标的拼音缩写。
- int [] arr = new int [2];//这个数组用于保存两次输入的值,后面调用里面的值能组成坐标。
- while(answer.equals("huiqi"))//无限循环,直到游戏结束,或者手动结束。
- {
- arr[0]=z.nextInt();
- try
- {
- if(arr[0] <= b.length && arr[0] != 0)
- {
- arr[1]=z.nextInt();
- if(arr[1] <= b.length && arr[1] != 0)
- {
- if(qiPan[arr[0]][arr[1]]!="★")
- {
- qiPan[arr[0]][arr[1]]="★";
- for(int w=0;w<c;w++)
- {
- for(int n=0;n<k;n++)
- {
- System.out.print(qiPan[w][n]);
- }
- System.out.println();
- }
- }
- else
- {
- System.out.println("输入的坐标上有棋子,请重新输入。");
- }
- }
- else
- {
- System.out.println("输入错误,请输入1到15之间的数,包括1和15.");
- }
- }
- else
- {
- System.out.println("输入错误,请输入1到15之间的数,包括1和15.");
- }
- }
- catch(Exception e)
- {
- System.out.println("输入错误,请输入1到15之间的数,包括1和15.");
- continue;
- }
- }
- }
- }
复制代码 不知道为什么代码复制过来就是这样的 你们对付看吧。
附上源码
Java0426.zip
(1.19 KB, 下载次数: 32)
这是我自己打的一个五子棋的棋盘,现在可以实现打印棋盘,打印花边。判断是否落棋重复,是否坐标越界。
但是只能一个人玩,而且不能判断输赢。
现求高手帮忙弄一个悔棋的功能和交替输入。能判断输赢就更好了。
我的悔棋思路是在我把两次键盘录入的值赋给数组前进行判断,假如等于“悔棋”或者别的什么特定的单词的话就调用数组中的坐标从新打印╋。
我使用这个数组保存两次输入结果了0角标是横值1角标是数值。
int [] arr = new int [2];//这个数组用于保存两次输入的值,后面调用里面的值能组成坐标。
交替出牌的思路是在开始设定一个int型变量初始化为0然后每次输入后自增。输入时%2结果为0就输出第一种棋子结果为%就输出第二种棋子。
但是可能是不够严谨吧,每次都报错。
最后是判断输赢的思路
每次落子后进行判断以当前坐标为基准向 左 左上 上 右上四个方向进行判定与当前棋子颜色一样就继续判断。连续五个一样的就输出当前棋手赢,然后结束游戏。
假如不一样就方向开始判断也是连续五个一样的就判断赢。
最好写清楚你的想法 不然我怕我看不懂
求高手解答啊 |