介紹:使用Silverlight 2.0(c#) 開發一個連連看遊戲玩法:用滑鼠左鍵選取卡片,如果選取的兩張卡片間的連線不多於3 根直線,則選取的兩張卡片可消除
思路
1.卡片初始排列演算法:已知容器容量為x, 不重複的卡片數量為y, x >= y && x % 2 == 0, 首先在容器內隨機排列卡片,然後取出容器內相同的卡片個數為奇數的集合(集合內成員數量必為偶數個),最後將該集合一刀切,將集合右半部的卡片的依序複製到集合左半部。以上演算法保證了在一定隨機率的基礎上,不會出現相同的卡片個數為奇數的情況
2.無解演算法與重排演算法:在容器內存在的卡片中,兩兩計算是否存在可消路徑,如果沒有就是無解,需要重排。重排時,需要得到現存的卡片集合和卡片位置集合,在卡片集合中隨機取卡片(取出一個,原集合就要移除這一個),然後依次放到卡片位置集合內,從而達到將現存卡片重新排列的目的
3.兩點消去路徑的演算法以及取最優消去路徑的演算法:取玩家選的第一點的x 軸方向和y 軸方向上的所有無佔位符的座標集合(包括自己),名稱分別為x1s, y1s;取玩家選取的第二點的x 軸方向和y 軸方向上的所有無佔位符的座標集合(包括自己),名稱分別為x2s, y2s。先在x1s 和x2s 中找x 座標相等的兩點,然後找出該兩點與玩家選的兩點可組成一條連續的直線的集合,該集合就是可消路徑的集合,之後同理再在y1s和y2s 中找出可消路徑的集合。兩個集合合併就是玩家選取的兩點間的所有可消路徑的集合,該集合為空則兩點不可消,該集合內的最短路徑則為最優消去路徑,集合內的4 點連接線則為消去路徑的連接線
4.遊戲使用MVVM(Model - View - ViewModel)模式開發
展開