庆祝六一 用java实现的连连看练手小游戏
王者连连看
- 🤣 游戏介绍
- 😜 核心
- 😮💨总结:
🤣 游戏介绍
王者连连看
游戏的目标是通过消除相同的图案来得分并进入更高级别的挑战。
游戏分为四个难度
可以自由选择也可以依次闯关。
每次时间倒计时100秒 ,你需要在有效时间内连完所有的即为过关。
ps:图片用的王者荣耀的角色看看你能认出来几个?👣👣👣👣
基本规则:
- 游戏区域中有许多不同形状的图案,玩家需要通过点击相同的图案来消除它们。
- 当两个相同的图案被消除时,它们会消失。
- 需要在规定的时间内完成每一关的任务目标,否则游戏失败。
- 在游戏中,有些图案只能在特定的位置出现,需要注意这些限制条件。
- 随着游戏的进行,难度会逐渐增加,需要更高的反应速度和策略能力才能通过更高级别的挑战。
连连看是一款比较考验玩家眼力和反应速度的益智游戏,要想获胜需要具备以下条件:
- 快速的反应能力:在游戏中,需要迅速找出相同的图案并消除它们。因此,快速而准确的反应能力是获胜的关键之一。
- 良好的记忆力:连连看中有些图案的位置可能很相似,需要通过记忆力来辨别它们之间的差异。
- 细心的观察力:连连看中的图案有时会隐藏在其他图案的背后,需要仔细观察才能发现它们的存在。
- 策略性的思考能力:在游戏中,不仅要尽快消除图案,还要合理地利用时间和空间,避免出现无用的浪费。
综上所述,如果想要在连连看游戏中获胜,就需要具备快速反应、良好记忆、细心观察和策略思考等多种能力。
😜 核心
核心用到的就是一些连线消除的算法,定时器,按钮的监听还有JFrame 可视化程序界面。
Java算法是指在Java语言中实现的各种计算方法和数据结构。
Java定时器是一种可以按照指定时间间隔执行特定任务的机制。它可以在程序运行时定期触发某个操作,例如:每隔一段时间执行一次某个方法、每隔一定时间向服务器发送一次数据等。
监听器(Listener)是一种在面向对象编程中常用的概念,它用于监听某个对象或事件的发生,并在特定条件下做出相应的响应。具体来说,监听器可以被定义为一个类的方法,该方法会在一个特定的对象或事件上被调用,从而执行一些自定义的行为。
JFrame 是 Java Swing
框架中的一个类,用于创建图形用户界面(GUI)窗口。它继承自Component 类,可以显示出包含其他组件的容器。JFrame
可以包含各种组件,如按钮、文本框、标签等,并且可以设置它们的布局方式和位置。通过 JFrame,创建一个可视化的程序界面。
提醒 消除的部分逻辑:
/*** @Author @zzh* @Description //提醒逻辑处理* @Date 10:12 2023/6/1* @return void**/public static void showHint() {List<Cell> list = GameTool.getEliMinCell();if (list.get(0) == null || list.get(1) == null) {JOptionPane.showMessageDialog(Cache.ui, "没有可以消除的啦!!!");} else {Thread t = new HintShowThread(list.get(0), list.get(1));t.start();}}/*** @Author @zzh* @Description //消除逻辑处理* @Date 10:49 2023/6/1* @return void**/
public static List<Cell> getEliMinCell() {List<Cell> list = new ArrayList<Cell>();Cell fcell = null;Cell scell = null;Cell[][] cells = Cache.cells;Loop:for (int i = 0; i < cells.length; i++) {for (int j = 0; j < cells[0].length; j++) {if (cells[i][j] == null) {continue;}fcell = cells[i][j];for (int m = 0; m < cells.length; m++) {for (int n = 0; n < cells[0].length; n++) {if (cells[m][n] == null) {continue;}if (cells[m][n].getIcon() != fcell.getIcon()) {continue;}if (cells[m][n] == fcell) {continue;}if (isCouldDelete(fcell, cells[m][n])) {scell = cells[m][n];break Loop;}}}}}list.add(fcell);list.add(scell);return list;}
重新排列的部分逻辑:
随机组合排列:
public static void initRandomCells() {List<Cell> cells = Cache.tempCells;List<ImageIcon> allImages = getAllImage();while(cells.size() != 0) {Random r = new Random();Cell c1 = cells.get(0);Cell c2 = null;while (c2 == null || c1 == c2) {c2 = cells.get(r.nextInt(cells.size()));}Icon ic = allImages.get(r.nextInt(Const.imageFileSum));c1.setIcon(ic);c2.setIcon(ic);Cache.tempCells.remove(c1);Cache.tempCells.remove(c2);}}
😮💨总结:
六一了,你家的熊孩子出来闹腾了没?应应景
简单的写个王者连连看锻炼(折磨)一下熊孩子 省的闹腾。
不管怎么说 还是祝儿童们六一快乐!😆😆😆