韩国美女连连看核心算法
来源:互联网 发布:linux x86 x64区别 编辑:程序博客网 时间:2024/06/05 18:49
精选的韩国美女,看着一个个沉鱼落雁,闭月羞花之貌的美人,着实令人心神俱醉,目不暇接。“媚眼含羞合,丹唇逐笑开”,“俊眉修眼,顾盼神飞”,如此一个小游戏,却让你赏尽天下美人,岂不快哉。
一饱眼福之余,也让人好奇这背后的逻辑。欲知背后的算法如何,且听我细细分析。
大神说,talk is cheap, show me the code.
一饱眼福之余,也让人好奇这背后的逻辑。欲知背后的算法如何,且听我细细分析。
大神说,talk is cheap, show me the code.
这个世界是由代码构成的,一切基于code。
local LinkManager = {}local LevelMap = require("src.app.data.LevelMap")local itemsArray = nillocal gameScene = nilfunction LinkManager:init(scene) gameScene = scene itemsArray = gameScene.itemsArrayendfunction LinkManager:canLink(item1, item2) if item1:getID() ~= item2:getID() then return false end local r1, c1 = item1:getRow(), item1:getCol() local r2, c2 = item2:getRow(), item2:getCol() if self:canLinkWithNoCorner(r1, c1, r2, c2) then return true, {{r1, c1}, {r2, c2}} end local b, t = self:canLinkWith1Corner(r1, c1, r2, c2) if b then return true, {{r1, c1}, t, {r2, c2}} end b, t = self:canLinkWith2Corner(r1, c1, r2, c2) if b then return true, {{r1, c1}, t[1], t[2], {r2, c2}} end return falseendfunction LinkManager:isWin() local sz = 0; for k, v in pairs(itemsArray) do sz = 1 end return sz == 0endfunction LinkManager:canPass(row, col) if row < 0 or row > LevelMap.maxRow-1 then return true end if col < 0 or col > LevelMap.maxCol-1 then return true end return gameScene:getItem(row, col) == nilendfunction LinkManager:canLinkWithNoCorner(r1, c1, r2, c2) if r1 ~= r2 and c1 ~= c2 then return false end if r1 == r2 then local dc = c1 > c2 and -1 or 1 local c = c1 + dc while (c ~= c2) do if not self:canPass(r1, c) then return false end c = c + dc end else local dr = r1 > r2 and -1 or 1 local r = r1 + dr while r ~= r2 do if not self:canPass(r, c1) then return false end r = r + dr end end return trueendfunction LinkManager:canLinkWith1Corner(r1, c1, r2, c2) local bpass = false if r1 == r2 or c1 == c2 then return false end if self:canPass(r1, c2) then bpass = self:canLinkWithNoCorner(r1, c1, r1, c2) and self:canLinkWithNoCorner(r1, c2, r2, c2) end if bpass then return true, {r1, c2} end if self:canPass(r2, c1) then bpass = self:canLinkWithNoCorner(r1, c1, r2, c1) and self:canLinkWithNoCorner(r2, c1, r2, c2) end if bpass then return true, {r2, c1} end return falseendfunction LinkManager:canLinkWith2Corner(r1, c1, r2, c2) local tempr = r1 while tempr ~= -2 do tempr = tempr - 1 if self:canPass(tempr, c1) then local b, t = self:canLinkWith1Corner(tempr, c1, r2, c2) if b then return true, {{tempr, c1}, {t[1], t[2]}} end else break end end tempr = r1 while tempr ~= LevelMap.maxRow+2 do tempr = tempr + 1 if self:canPass(tempr, c1) then local b, t = self:canLinkWith1Corner(tempr, c1, r2, c2) if b then return true, {{tempr, c1}, {t[1], t[2]}} end else break end end local tempc = c1 while tempc ~= -2 do tempc = tempc - 1 if self:canPass(r1, tempc) then local b, t = self:canLinkWith1Corner(r1, tempc, r2, c2) if b then return true, {{r1, tempc}, {t[1], t[2]}} end else break end end tempc = c1 while tempc ~= LevelMap.maxCol+2 do tempc = tempc + 1 if self:canPass(r1, tempc) then local b, t = self:canLinkWith1Corner(r1, tempc, r2, c2) if b then return true, {{r1, tempc}, {t[1], t[2]}} end else break end end return falseendreturn LinkManager
0 0
- 韩国美女连连看核心算法
- 连连看核心算法
- 连连看核心算法简介
- 连连看核心算法代码
- 连连看游戏的核心算法
- 连连看核心算法(AS3)
- [Flex] 连连看核心算法详解
- 连连看:核心代码分析
- "连连看"算法笔记
- 连连看算法
- 《连连看》的算法!
- 连连看消除算法
- 连连看算法
- 关于连连看算法
- 连连看算法
- 连连看算法
- 连连看算法
- 连连看算法笔记
- 从1到n整数中1出现的次数(有疑问)
- 【UIKit-110-7】#import <UIKit/UITableView.h>提前注册
- Xcode 6.3.1Mac版 V6.4.Beta3免费下载
- yum提示another app is currently holding the yum lock;waiting for it to exit
- C语言中可变长参数使用
- 韩国美女连连看核心算法
- 单例模式建立工具类
- 新手必须知道的13个Xcode小技巧
- hiho一下 第五十九周
- hdu 5486 Difference of Clustering 2015合肥网络赛 并查集 离散化 悲伤的题
- 新版本Xcode 6的视图调试详解
- Linux阻塞和非阻塞读终端
- 如何改变Xcode字体大小?
- 电脑中常用的快捷键