庆祝六一 用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);
}
}
😮💨总结:
六一了,你家的熊孩子出来闹腾了没?应应景
简单的写个王者连连看锻炼(折磨)一下熊孩子 省的闹腾。
不管怎么说 还是祝儿童们六一快乐!😆😆😆