尚未完善,代码部分还未发布

前言

连连看小游戏自己之前在学校Android结课设计中已经做过了
但是代码找不到了,正好最近也学习了很多新知识,想着重新做一下
同时我的好兄弟们正好没有事情做,就把连连看刷map的想法当做一个题告诉了他们 (稍微折磨一下)
Android结课设计中,我制作了 连连看、井字棋、猜数字、黑白棋四个小游戏,之后也会慢慢重写


思路

之前做的程序预览图

D98A20F3FD647EFC13F1CC7712F09349.png
376645D32C112E6AD052254A0A1BB2EB.png

具体思路

简单来说就是,一共有5x2个东西,5种东西,每一个东西存在2个(必须)
然后随机安排位置,到最后还要进行点击,然后进行是否匹配或其他等操作
由于JAVA目前学的知识只用到了控制台,所以比较局限,实现简单内容即可
点击事件暂时由输入功能来顶替 (输入具体的第几行第几列来当做点击)

首先要随机刷一个map,也就是连连看的棋盘
然后输入坐标后,将会选中当前坐标的东西,再继续去选择第二个东西
若互相匹配,则消除;否则,将刚才选中的东西取消选中状态
当所有item被消除后,游戏结束,提示是否继续游戏


代码

刷一个MAP (游戏棋盘)

public class MapGenerator {

    private MapGenerator() { }

    public static class SingletonHolder{
        private static final MapGenerator INSTANCE = new MapGenerator();
    }

    public static MapGenerator getInstance() {
        return SingletonHolder.INSTANCE;
    }

    public int[] getMap() {
        Random random = new Random();

        int[] nums = new int[]{1,1,2,2,3,3,4,4,5,5};
        int[] map = new int[10];

        for (int i = 0; i < map.length; i++) {
            int randomNumber = random.nextInt(nums.length);
            map[i] = nums[randomNumber];
            nums[randomNumber] = nums[nums.length-1];
            nums = decreaseArray(nums);
        }

        for (int i = 0; i < map.length; i++) {
            if (i == map.length/2) {
                System.out.println();
            }
            System.out.print(map[i]+" ");
        }


        return map;
    }

    public int[] decreaseArray(int[] nums) {
        return Arrays.copyOf(nums,nums.length-1);
    }

}

咕咕咕~


总结

刷棋盘可以创建一个一维数组,然后取随机的index角标,然后前移后面的数据
除了运用数组,也可以用链表实现,这样前移数据更简单一些,只是查找某个具体的位置还是要从0开始
上面的方式已作废,取消掉原有的数据前移的想法,直接将nums[nums.length-1]的值赋给nums[index]
然后也不用创建新数组存值、最后再赋值,直接用Arrays.copyOf代替,return该值即可
在选中一个物品后,变成选中状态,麻烦的点不在于匹配成功,而是匹配失败
匹配失败要把选中状态取消掉,然后把值也回溯,需要记录一个backup

我们应当相信我们每个人都能做成一点事情
而当我们发现这点事情是什么的时候,我们就要坚持下去。 ——居里夫人
最后修改:2023 年 01 月 09 日
如果觉得我的文章对你有用,请随意赞赏