日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Java實現連連看算法

瀏覽:150日期:2022-08-11 10:14:51

連連看是個經典的小游戲,規則是:兩圖案相同的方塊在2折以內的線連接下可以消除。里面的算法還是非常有趣,今天來研究一下。

初始化棋盤

假設有一個8*8的棋盤,我們要將其擴充至10*10,為什么?因為這樣外圍的連接就可以不用越界了。

Java實現連連看算法

消除基本條件

判斷是否具備消除的基本條件有 3 個

兩個方塊不能是同一個坐標 兩個方塊必須是同種類型(圖案) 兩個方塊中不能有任何一個已經消除過的(消除過后的值用 mark 表示)

// 判斷是否具備消除的基本條件:兩個方塊不能是同一個坐標;兩個方塊必須是同種類型;兩個方塊中不能有任何一個已經消除過的public static boolean basicCondition(Point a, Point b) { return !a.equals(b) && board[a.x][a.y] == board[b.x][b.y] && !isNull(a) && !isNull(b);}// 判斷格子是否為空或已經被消除public static boolean isNull(Point c) { return board[c.x][c.y] == 0 || board[c.x][c.y] == mark;}0折消除

能0折消除,說明兩個方塊一定在同一直線上;它們可能是同一水平直線,也可能是同一垂直直線

Java實現連連看算法

Java實現連連看算法

如果兩個方塊的相對位置滿足其中之一,并且我們再去判斷連線經過的方塊是否為空就行了。

// 判斷同一直線能否相連public static boolean matchLine(Point a, Point b) { // 水平 if (a.x == b.x) {int minY = Math.min(a.y, b.y), maxY = Math.max(a.y, b.y);for (int i = minY + 1; i < maxY; i++) { if (!isNull(new Point(a.x, i))) return false;}return true; } // 垂直 else if (a.y == b.y) {int minX = Math.min(a.x, b.x), maxX = Math.max(a.x, b.x);for (int i = minX + 1; i < maxX; i++) { if (!isNull(new Point(i, a.y))) return false;}return true; } // 不在水平或垂直上 return false;}1折消除

1折消除也就2種情況,就是上折和下折,這樣可以知道折點是(a.x, b.y)和(b.x, a.y) ;即判斷a點到折點能否0折消除,且b點到折點能否0折消除,且折點處為空

Java實現連連看算法

// 判斷 1 折能否相連:拐角點 c1 和 c2 與 a b 點能相連并且拐角點為空public static boolean matchOneTurn(Point a, Point b) { Point c1 = new Point(a.x, b.y); Point c2 = new Point(b.x, a.y); return matchLine(a, c1) && matchLine(b, c1) && isNull(c1) || matchLine(a, c2) && matchLine(b, c2) && isNull(c2);}2折消除

2折消除的邏輯稍微麻煩了一點點,即掃描 a 點所在的行和列,找一點 c ,使得 a 與 c 能夠0折消除且 b 與 c 能1折消除;掃描 b 點所在的行和列,找一點 c ,使得 b 與 c 能夠0折消除且 a 與 c 能1折消除,當然,c 點不能與 a b 點重合,也必須為空。

Java實現連連看算法

// 判斷 2 折能否相連:掃描 a 所在的行和列,找一點 c 使之與 a 直線匹配,與 b 1 折匹配;掃描 b 所在的行和列,找一點 c 使之與 b 直線匹配,與 a 1 折匹配public static boolean matchTwoTurn(Point a, Point b) { // 掃描 a b 所在的行 for (int i = 0; i < c; i++) {Point c1 = new Point(a.x, i);Point c2 = new Point(b.x, i);if (i != a.y && matchLine(c1, a) && matchOneTurn(c1, b) && isNull(c1)|| i != b.y && matchLine(c2, b) && matchOneTurn(c2, a) && isNull(c2)) return true; } // 掃描 a b 所在的列 for (int i = 0; i < r; i++) {Point c1 = new Point(i, a.y);Point c2 = new Point(i, b.y);if (i != a.x && matchLine(c1, a) && matchOneTurn(c1, b) && isNull(c1)|| i != b.x && matchLine(c2, b) && matchOneTurn(c2, a) && isNull(c2)) return true; } // 不存在這樣的 c 點 return false;}

將上述所有判斷整合,就完成了一對方塊完整的消除判斷

// 整合判斷public static boolean match(Point a, Point b) { return basicCondition(a, b) && (matchLine(a, b) || matchOneTurn(a, b) || matchTwoTurn(a, b));}

關鍵算法解決了,相信寫一個連連看游戲的障礙被打破了,是不是躍躍欲試了呢?

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
激情综合激情| 日本午夜免费一区二区| 欧美国产另类| 91av亚洲| 免费人成在线不卡| 国产精品日本一区二区不卡视频 | 福利一区二区三区视频在线观看| 9999国产精品| 国产手机视频一区二区| 久久国产精品色av免费看| 国产成人77亚洲精品www| 国产精品sss在线观看av| 久久激情五月婷婷| 91亚洲人成网污www| 亚洲成人免费| 日韩高清电影一区| 日韩精品一卡| 国产精品毛片久久久| 91精品综合| 国产精品1luya在线播放| 鲁大师影院一区二区三区| 精品亚洲成人| 日韩不卡一区二区| 天堂网在线观看国产精品| 国产精品17p| 午夜在线精品偷拍| 久久精品超碰| 午夜亚洲精品| 在线天堂中文资源最新版| 天堂av在线一区| 日本欧美国产| 国产麻豆精品| 中文字幕日韩亚洲| 久久久国产亚洲精品| 国产精品亚洲产品| 久久亚洲视频| 欧美大黑bbbbbbbbb在线| 日韩成人a**站| 国产麻豆一区| 欧美亚洲三级| 久久最新视频| 欧美一级精品| 日日夜夜免费精品视频| 自由日本语亚洲人高潮| 中文字幕系列一区| 日韩一区二区中文| av中文字幕在线观看第一页| 精品视频在线一区二区在线| 国产精品久久| 国产欧美日韩精品高清二区综合区 | 99成人在线| 99精品电影| аⅴ资源天堂资源库在线| 国产一区二区三区久久| 欧美日韩视频免费观看| 欧美高清一区| 中文字幕系列一区| 99免费精品| 在线综合亚洲| 影音先锋久久精品| 日本午夜免费一区二区| 国产精品毛片久久久| 欧美日本久久| 欧美日韩视频网站| 亚洲电影在线一区二区三区| 欧美.日韩.国产.一区.二区| 欧美成人日韩| 亚州精品视频| 老色鬼精品视频在线观看播放| 久久久久伊人| 欧美日中文字幕| 亚洲精品亚洲人成在线观看| 国产精品一线天粉嫩av| 亚洲三级av| 久久久91麻豆精品国产一区| 国产极品久久久久久久久波多结野 | 精品视频高潮| 国产一区亚洲| 青青草国产成人99久久| 国内精品伊人| 午夜一区在线| sm捆绑调教国产免费网站在线观看| 红桃视频国产一区| 国产精品xvideos88| 欧美99久久| 国产激情久久| 99日韩精品| 精品黄色一级片| 亚洲区第一页| 久久免费高清| 久久国产精品色av免费看| 精品美女在线视频| 好吊一区二区三区| 国产不卡精品| 日韩国产精品久久久| 欧美 日韩 国产精品免费观看| 欧美一区成人| 男人的天堂亚洲一区| 视频福利一区| 精品国产99| 日本成人中文字幕| 免费日韩视频| 亚洲欧洲日本mm| 国产一区二区三区久久久久久久久| 亚洲精品看片| 欧美一区二区三区高清视频| 国产免费播放一区二区| 色综合视频一区二区三区日韩 | 久久精品超碰| 国产亚洲一区二区手机在线观看| 国产精品九九| 日本精品久久| 日韩三级精品| 亚洲精品无播放器在线播放| 在线亚洲成人| 在线一区视频| 日韩专区欧美专区| 亚洲精选91| 欧美啪啪一区| 国产精品宾馆| 精品一区二区三区亚洲| 国产一区丝袜| 日本韩国欧美超级黄在线观看| 青青国产精品| 日韩中文av| 国产精品videossex| 成人午夜毛片| 久久免费黄色| 免播放器亚洲一区| 蜜臀av在线播放一区二区三区| 久久xxxx精品视频| 亚洲3区在线| 麻豆91精品91久久久的内涵| 国产一区不卡| 99精品美女| 99视频一区| 国产精品久久久久久久久久妞妞| 免费在线成人| 国产夫妻在线| 久久婷婷丁香| 日韩一区二区三免费高清在线观看| 奇米狠狠一区二区三区| 91欧美在线| 香蕉精品视频在线观看| 日韩不卡一二三区| 成人免费电影网址| 亚洲精品国产偷自在线观看| 午夜国产精品视频免费体验区| 天堂av一区| 黄色aa久久| 日韩在线一区二区| 欧美成人一二区| 黄色日韩精品| 正在播放日韩精品| 男女激情视频一区| 精品免费av| 日韩国产在线观看| 怡红院精品视频在线观看极品| 国产精品麻豆成人av电影艾秋| 日韩午夜av在线| 久久精品国产99国产| 国产视频久久| 欧美日韩国产观看视频| 日韩精选在线| 亚洲福利国产| 久久伊人国产| 日韩一区二区三区高清在线观看| 99视频精品全部免费在线视频| 欧美国产极品| 91精品成人| 欧洲av不卡| 欧美国产日本| 亚洲精品自拍| 中文无码久久精品| 国产专区一区| 秋霞国产精品| 日韩三区免费| 夜鲁夜鲁夜鲁视频在线播放| 麻豆精品在线播放| 国产日韩免费| 国产欧美综合一区二区三区| 亚洲精品极品| 美国三级日本三级久久99| 99久久www免费| 日韩一区二区在线免费| 成人亚洲一区二区| 激情视频网站在线播放色| 综合日韩av| 亚洲黑丝一区二区| 亚洲福利精品| 狠狠干成人综合网| 亚洲一区二区免费在线观看| 亚洲三级在线| 国产精品亚洲二区| 久久中文精品| 日韩免费小视频| 野花国产精品入口| 日韩精品成人| 精品久久福利| 97精品国产|