A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

我的主要思想是实现一个类似连连看的小游戏 代码如下:由于刚上基础班4天 看不出哪里有问题  请各位前辈指教
import java.util.*;
class Connerct {
        public static void main(String[] args){
                Scanner in = new Scanner(System.in);
                Game g = new Game();
                g.ini();
                g.print_1();
                System.out.println("因时间有限 本程序每一行的六个数字都不相同");
                while(true) {
                        int i,j,k,l;
                        System.out.println("请输入你选择的第一个坐标(用Enter分隔 输入错误时游戏结束):");
                        i = in.nextInt();
                        j = in.nextInt();
                        if(g.play(i-1,j-1)) {
                                continue;
                        }
                        System.out.println("请输入你选择的第二个坐标(用Enter分隔 输入错误时游戏结束):");
                        k = in.nextInt();
                        l = in.nextInt();
                        /*if(i == k && j == l) {                                //语句作用重复
                                System.out.println("输入坐标相同,请重新输入");
                                continue;
                        }*/
                        if(g.play(k-1,l-1)) {
                                continue;
                        }
                        g.judge(i-1,j-1,k-1,l-1);
                        g.print_2();
                        if(g.win()) {
                                System.out.println("恭喜你过关了");
                                return;
                        }

                }
        }
}


class Game {
        Random random = new Random();
        static Scanner in = new Scanner(System.in);
        public Game() {
        }
        static {
                System.out.println("请选择操作难度:");
        }
        int a =2 * in.nextInt();
        int[][] arr = new int[a][6];
        String[][] string = new String[a][6];

        public void ini() {
                for(int k = 0;k < arr.length;k++) {
                for (int i = 0;i<arr[k].length ;i++ ) {
                        arr[k][i] = random.nextInt(6);
                        for(int j = 0;j<i;j++ ) {
                                if(arr[k][j] == arr[k][i]) {
                                        i--;
                                }
                        }
                }
        }
}

        public void print_1() {                                                                //用于String数组的初始化
                System.out.println("\t一\t二\t三\t四\t五\t六\t");
                for(int i = 0;i < string.length;i++) {
                        System.out.print(i+1+"\t");
                        for(int j = 0;j < string[i].length;j++) {
                                string[i][j] = "?";
                                System.out.print(string[i][j]+"\t");
                                //System.out.print(arr[i][j]+"\t");                        输出数组值
                        }
                        System.out.println("\n");
                }

        }
        public void print_2() {                                                                //用于输出显示后的String数组
        System.out.println("\t一\t二\t三\t四\t五\t六\t");
        for(int i = 0;i < string.length;i++) {
                System.out.print(i+1+"\t");
                for(int j = 0;j < string[i].length;j++) {
                        System.out.print(string[i][j]+"\t");
                        //System.out.print(arr[i][j]+"\t");                        输出数组值
                }
                System.out.println("\n");
        }

}
        public boolean play(int a,int b) {                                        //对选中的数字给予String数组中相同位置的替换
                if(string[a][b] !="?") {
                        System.out.println("该位置数字已显示");
                        return true;
                }else {
                        int temp = arr[a][b];                                                //temp变量可以不定义
                        string[a][b] = String.valueOf(temp);                //String.valueOf() 暂时未学到
                        print_2();
                        return false;
                }
        }

        public void judge(int a,int b,int c,int d) {        //用于判断数字是否相等  如果不相等 把String中相同位置的内容重新改成"?"
                if(arr[a][b] ==arr[c][d]) {
                }else {
                        string[a][b] = "?";
                        string[c][d] = "?";
                }
        }

        public boolean win() {                                                        //用于String数组中是否还有"?"  
                for(int i = 0;i < arr.length; i ++) {
                        for (int j = 0;j < arr[i].length ; j ++ ) {
                                if(string[i][j] == "?") {
                                        return false;
                                }else {
                                        continue;
                                }
                        }
                }
                return true;
        }
}





9 个回复

倒序浏览
代码第五行应该是Scanner sc
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
shu307856810 发表于 2016-10-31 22:21
代码第五行应该是Scanner sc

sc和in一样  都只是一个标识符  只要合法就行吧/...
回复 使用道具 举报
ylz1997 发表于 2016-10-31 22:28
sc和in一样  都只是一个标识符  只要合法就行吧/...

哦哦 是我才疏学浅
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
回复 使用道具 举报
刚进黑马四天,这么吊,学长我表示不想活了
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
牛犇,赞,向楼主学校
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
回复 使用道具 举报
efkllx 发表于 2016-10-31 23:40
不能用in命名的

为啥啊?我开始一直这样用的啊。。
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
shu307856810 发表于 2016-10-31 23:16
哦哦 是我才疏学浅

兄弟  我的过。。
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马