“連連看”演算法筆記

來源:互聯網
上載者:User

這幾天都沒有更新blog,正在用休息時間編寫一個連連看的小遊戲,目前已經完成,還在測試階段,準備加如點背景音樂和效果.測試完成後再發布遊戲;

象連連看這類遊戲,就是最短路徑求解,演算法要求如下:

一個int 類型的2維數組,定義為
public const int TileRowCount = 19;
public const int TileColCount = 12;
int[,] Map = new int[TileRowCount,TileColCount];

Map[x,y] 的位置如果為 0 ,表示可以通過,如果為 1 表示障礙物

定義起點座標和終點座標,尋找可以通過的路徑;並返迴路徑經過的x/y位置,用100.

如 5 X 5 的矩陣:

0 0 0 0 0
0 0 0 0 0
0 0 1 0 0
0 0 1 0 0
0 0 0 0 0

設起點x/y座標為 0,0 ,終點座標為 3/3,那麼如(*表示起點,+表示終點)

* 0 0 0 0
0 0 0 0 0
0 0 1 0 0
0 0 1 + 0
0 0 0 0 0

最終路徑應該是:
0,0 1,0 2,0 3,0 3,1 3,2 3,3
繪製成圖的路徑應該是如下(路徑用.表示)
* . . . 0
0 0 0 . 0
0 0 1 . 0
0 0 1 + 0
0 0 0 0 0
這樣算1個折點.

也可以是
0,0 0,1 0,2 0,3 0,4 1,4 2,4 3,4 3,3
* 0 0 0 0
. 0 0 0 0
. 0 1 0 0
. 0 1 + 0
. . . . 0
這樣是2個折點

很明顯路徑1的方式要更優;

那麼查處路徑之後,還必須選擇最優路徑,並且要控制路徑的折點在0到2之間,這個是遊戲的規則.

關於理解連連看的演算法,可以看看這個文章,這種判斷式理論上來說是比較容易的,但我採用的是迷宮求解的演算法,最後是根據統計折點來判斷是否可以成功串連,這樣可以擴充難易度;

http://www.7880.com/Info/Article-3348a980.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.