惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Apple Machine Learning Research
Apple Machine Learning Research
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
G
Google Developers Blog
博客园 - 司徒正美
J
Java Code Geeks
aimingoo的专栏
aimingoo的专栏
A
About on SuperTechFans
博客园 - 三生石上(FineUI控件)
WordPress大学
WordPress大学
T
The Blog of Author Tim Ferriss
D
Docker
大猫的无限游戏
大猫的无限游戏
D
DataBreaches.Net
腾讯CDC
V
Visual Studio Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
C
Check Point Blog
M
MIT News - Artificial intelligence
Jina AI
Jina AI
I
InfoQ
雷峰网
雷峰网
The Cloudflare Blog
美团技术团队
Engineering at Meta
Engineering at Meta

博客园 - 冷风.net

開放幾個原來寫的js代碼,供大家娛樂一下 使用JS寫的第一個游戲[俄羅斯方塊] 假如現在讓你去說服客戶使用asp.net2.0開發系統,你會怎麼說服呢? 對象化javascript日期控件 - 冷风.net - 博客园 工作排程 防止圖片在WEB頁面上下載 - 冷风.net - 博客园 今天從新整理的大小寫數據轉換 - 冷风.net - 博客园 常用的XPATH說明 XmlHttp在DoNet中的完全应用---前/后台完成分离篇 系统用户权限与角色分析 学习设计模式之Composite 模式 改進Richer的WEB頁面進度條! 学习设计模式之Bridge模式 学习设计模式之生成器(Builder Pattern)模式 再谈Abstract Factory模式来实现数据库操作的类 Factory Method来实现数据库操作的类 不周表結構合併問題 今天下午困惑的問題,終於TMD搞出來了 利用線程實現錠時執行的運行模型
以OO的思想利用JS來實現五子棋
冷风.net · 2009-09-29 · via 博客园 - 冷风.net

下載地址:https://files.cnblogs.com/helimin19/Gobang.rar

先說下我認為的五子棋的實現原理: 判斷橫向、樅向、斜線方同、反斜線方向 四個方向中是否存在連續五個一樣的棋子。

現在我們以OO的思想來分析期實現原理:

五子棋的基本就是棋盤,怎個棋盤又是由一個一個的格子組成,所以我們得到了兩個對象:棋盤、棋盤格子

我們先分析一下五子棋的基本單元(棋盤格子的)屬性與方法:

屬性:
 1.  單元格都有其大小,所以我們可以設定屬性寬與高來指定
 2.  當單元格放在棋盤中後,其單8個方向的單元格我們分別使用:Top,Bottom,Left,Right,TopRight,BottomRight,BottomLeft,TopLeft來表示
 3.  其8個方向上與自己相同的棋子數我們分別使用:TopNumber、RightNumber、BottomNumber、LeftNumber、TopRightNumber、BottomRightNumber、BottomLeftNumber、TopLeftNumber來表示
 4.  單元格是否存放棋子我們使用Player來表示,如我們使用1表示此單元格存放的是白子,2表示存放的是黑子,0表示沒有存放棋子

  5. 當單元格放在棋盤中後,我們使用RowIndex,CelIndex來表示單元格在棋盤中的橫與樅向的索引

事件:

 當我們在單元格中單擊的時候,會在單元格中添加對應的棋子,並且設定其8個方同的棋子數與修改對應的8個方向單元格的棋子數(這里是關鍵)

至於棋盤的對象就很簡單了這里不用講了,代碼一看就清楚了

最後創建一個游戲對象

創建游戲對象要注意一點就是我們看到的棋盤與實際控制的棋盤是不一樣的

實現控制棋盤就是我們可以在上面下棋的棋盤(我們下棋是下在格子中的)

看到的棋盤:為了使看起來下的棋是在網格線上,這里我們添加了一個看到的棋盤,其顯示效果與實現控制的棋盤相差半個單元格