慶祝六一 用java實現(xiàn)的連連看練手小游戲
?? 游戲介紹
??
王者連連看
游戲的目標是通過消除相同的圖案來得分并進入更高級別的挑戰(zhàn)。
??游戲分為四個難度
??可以自由選擇也可以依次闖關(guān)。
??每次時間倒計時100秒 ,你需要在有效時間內(nèi)連完所有的即為過關(guān)。
??ps:圖片用的王者榮耀的角色看看你能認出來幾個?????????
??基本規(guī)則:
- 游戲區(qū)域中有許多不同形狀的圖案,玩家需要通過點擊相同的圖案來消除它們。
- 當兩個相同的圖案被消除時,它們會消失。
- 需要在規(guī)定的時間內(nèi)完成每一關(guān)的任務目標,否則游戲失敗。
- 在游戲中,有些圖案只能在特定的位置出現(xiàn),需要注意這些限制條件。
- 隨著游戲的進行,難度會逐漸增加,需要更高的反應速度和策略能力才能通過更高級別的挑戰(zhàn)。
連連看是一款比較考驗玩家眼力和反應速度的益智游戲,要想獲勝需要具備以下條件:
- 快速的反應能力:在游戲中,需要迅速找出相同的圖案并消除它們。因此,快速而準確的反應能力是獲勝的關(guān)鍵之一。
- 良好的記憶力:連連看中有些圖案的位置可能很相似,需要通過記憶力來辨別它們之間的差異。
- 細心的觀察力:連連看中的圖案有時會隱藏在其他圖案的背后,需要仔細觀察才能發(fā)現(xiàn)它們的存在。
- 策略性的思考能力:在游戲中,不僅要盡快消除圖案,還要合理地利用時間和空間,避免出現(xiàn)無用的浪費。
綜上所述,如果想要在連連看游戲中獲勝,就需要具備快速反應、良好記憶、細心觀察和策略思考等多種能力。
?? 核心
??核心用到的就是一些連線消除的算法,定時器,按鈕的監(jiān)聽還有JFrame 可視化程序界面。
??Java算法是指在Java語言中實現(xiàn)的各種計算方法和數(shù)據(jù)結(jié)構(gòu)。
??Java定時器是一種可以按照指定時間間隔執(zhí)行特定任務的機制。它可以在程序運行時定期觸發(fā)某個操作,例如:每隔一段時間執(zhí)行一次某個方法、每隔一定時間向服務器發(fā)送一次數(shù)據(jù)等。
??監(jiān)聽器(Listener)是一種在面向?qū)ο缶幊讨谐S玫母拍睿糜诒O(jiān)聽某個對象或事件的發(fā)生,并在特定條件下做出相應的響應。具體來說,監(jiān)聽器可以被定義為一個類的方法,該方法會在一個特定的對象或事件上被調(diào)用,從而執(zhí)行一些自定義的行為。
??JFrame 是 Java Swing
框架中的一個類,用于創(chuàng)建圖形用戶界面(GUI)窗口。它繼承自Component 類,可以顯示出包含其他組件的容器。JFrame
可以包含各種組件,如按鈕、文本框、標簽等,并且可以設置它們的布局方式和位置。通過 JFrame,創(chuàng)建一個可視化的程序界面。
提醒 消除的部分邏輯:
/**
* @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;
}
重新排列的部分邏輯:
隨機組合排列:文章來源:http://www.zghlxwxcb.cn/news/detail-484213.html
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);
}
}
?????總結(jié):
??六一了,你家的熊孩子出來鬧騰了沒?應應景
??簡單的寫個王者連連看鍛煉(折磨)一下熊孩子 省的鬧騰。
??不管怎么說 還是祝兒童們六一快樂!??????文章來源地址http://www.zghlxwxcb.cn/news/detail-484213.html
到了這里,關(guān)于六一兒童節(jié)-王者連連看的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!