首页
/
每日頭條
/
遊戲
/
c語言編程小遊戲都有什麼
c語言編程小遊戲都有什麼
更新时间:2025-12-16 18:01:44

這篇連連看教程我嘗試換一種方式,多講一些算法思路和編程思想,少貼一些代碼。

大家應該都玩過連連看,遊戲規則不多說了,我們先看看設計思路。

第一件事要根據遊戲玩法确定程序的數據結構,不同的數據結構決定了不同的算法設計,用錯了數據結構可能直接讓代碼複雜好幾倍。

連連看中玩家操作的數據是一個個的圖片,多個圖片組成一個棋盤式的矩陣界面。程序根據玩家的點擊位置計算兩個圖片的連接路線,這要求程序以最快、最簡單的方式獲得矩陣中每個格子的數據。

用二維數組表示遊戲中的矩陣界面比較合适,因為數組可以通過索引快速訪問數據,二維數組的兩個索引剛好對應矩陣界面的(x, y)坐标。例如:

c語言編程小遊戲都有什麼(C項目開發C)1

圖中矩陣數據在代碼中應該這樣表示:

c語言編程小遊戲都有什麼(C項目開發C)2

可以用不同的數字代表不同的圖片,比如:

c語言編程小遊戲都有什麼(C項目開發C)3

那麼上面的矩陣繪制的時候就會是這樣:

c語言編程小遊戲都有什麼(C項目開發C)4

0表示空格,不顯示圖片。初始化時的空格或消除後的空格,都會被設置為0。

c語言編程小遊戲都有什麼(C項目開發C)5

接下來要初始化數據,我打算用8種不一樣的圖片,每種6張,随機放入矩陣中,矩陣最外一圈是空的。這個算法可以用标準庫函數 std::random_shuffle 來完成。std::random_shuffle 用于把容器内的數據随機打亂,因此按順序把數據放入數組中,然後調用 std::random_shuffle 就可以完成初始化。

c語言編程小遊戲都有什麼(C項目開發C)6

斷點運行觀察數組數據,和我們設計的一樣:

c語言編程小遊戲都有什麼(C項目開發C)7

貼上圖片看起來還不錯:

c語言編程小遊戲都有什麼(C項目開發C)8

現在來分析遊戲玩法。這個遊戲的難點是兩個圖片連接的判定算法,要求連接線隻能轉折兩次。

我的第一反應這是一個尋路算法,要求找到轉折兩次以下的最短路徑。教科書上常見的廣度優先搜索、深度優先搜索、DijKstra算法或是遊戲中常用的A星算法,稍作修改加上兩次轉折的限制都能解決這個問題。

但是如果我用這些比較複雜的算法來教新手,顯然是在勸退。所以還是考慮找一找連線判定的算法有沒有簡單的規律。

多玩幾次遊戲,把不同種類的連線記錄下來,總結後可以發現總共有3種連線類型,分别是不轉折連接、轉折一次和轉折兩次。

還是從最簡單的情況開始考慮。這是解決難題的通用方法:從最簡單的情況開始考慮,再逐步增加複雜的條件。

最簡單的不轉折連接,有兩種情況,橫向連線和縱向連線:

c語言編程小遊戲都有什麼(C項目開發C)9

這兩種情況很容易處理,橫向、豎向依次檢查每個格子是否被阻擋即可。

c語言編程小遊戲都有什麼(C項目開發C)10

最後把這兩個合并就是不轉折的情況下:

c語言編程小遊戲都有什麼(C項目開發C)11

轉折一次:

c語言編程小遊戲都有什麼(C項目開發C)12

轉折一次的算法也是比較明顯的,像上圖中的兩種情況,找到綠色點的位置,如果這個點可以不轉折連到兩個紅色的圖片,那麼這兩個紅色的圖片就可以通過一次轉折連接。

綠點的位置是由兩個紅點決定的,隻有上圖中的兩種可能。

c語言編程小遊戲都有什麼(C項目開發C)13

轉折兩次的情況就多了,下圖同樣是連接紅色圖片,要繞過綠色圖片。

c語言編程小遊戲都有什麼(C項目開發C)14

轉折兩次的情況很多,這裡無法一一列舉,但是仔細思考可以發現和轉折一次本質上是一樣的,就是找到兩個點,這兩個點可以分别和紅色圖片無轉折連接,并且這兩個點也可以無轉折連接。

這兩個點需要位于經過紅色圖片的十字線上,并且隻要确定一個了其中一個點,就能對應地找到另一個點:

c語言編程小遊戲都有什麼(C項目開發C)15

因此隻要遍曆其中一個圖片的兩條十字線經過的所有的點,并計算出另一個圖片十字線上對應點的位置,檢查這兩個點和兩個紅色圖片是否可以無轉折連接:

c語言編程小遊戲都有什麼(C項目開發C)16

代碼碼完了,添上圖片和鼠标檢測的代碼跑一跑試試。

c語言編程小遊戲都有什麼(C項目開發C)17

右邊顯示臨時顯示字符用于測試連通性,多次測試沒有問題。

最後加上連線,并清除被點擊的兩個格子,就完成了連連看的核心邏輯。你學會了嗎?

最後,想要成為一個優秀的程序員,最最重要的是盡可能的提升自己的編程能力以及編程思維,并且,與其想着怎麼去提升,不如從現在開始動手動腦,如果對于C/C 感興趣的話,可以加q。569,268,376,學習不怕從零開始,就怕從不開始。

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
英雄聯盟宣傳片主題曲是什麼
英雄聯盟宣傳片主題曲是什麼
《英雄聯盟》第十一屆全球總決賽,也就是我們熟悉的s賽即将開幕,s賽也順勢推出了最新的宣傳mv《不可阻擋》。它由一衆國漫公司操刀,包括我們熟悉的繪夢、念動文化、紙飛機動畫、摔跤社、瀾映畫制作組等等。然而比較遺憾的是,《不可阻擋》mv并未大受好...
2025-12-16
卡爾瑪技能介紹英雄聯盟
卡爾瑪技能介紹英雄聯盟
S9賽季有一位非常奇葩的英雄,她定位輔助,但是除了打野位置,她幾乎能同時實現上中下三路搖擺。賽季後半段,神超用她開發起了偷錢流上單卡爾瑪,非常惡心,出半肉裝打又打不死,還能一直壓線推你的線,偷你的錢,關鍵他中期打團的作用非常大!不過熟悉這個...
2025-12-16
陌陌商業模式大全
陌陌商業模式大全
昨日,國内第三大移動社交平台陌陌聯合雲銳集團舉辦首場遊戲行業營銷活動專場,吸引了超百家國内優秀的遊戲客戶參與。會上,陌陌商業産品副總裁王太中表示:“在陌陌平台上,我們是擁有一批忠實的遊戲用戶的。現在,我們有了優質的代理合作夥伴,也搭建了專業...
2025-12-16
王者榮耀代訓注意事項
王者榮耀代訓注意事項
#王者榮耀資訊#王者榮耀這款遊戲火遍了大江南北,幾乎是家喻戶曉。不論是老人還是小孩,不論是男生還是女生,都聽說過或者接觸過這個遊戲,不得不說王者榮耀非常成功,這也是國内第一款知名度這麼高的手遊了吧。和其它的遊戲不一樣,它的火爆程度,即使一個...
2025-12-16
steam值得一玩的rpg遊戲
steam值得一玩的rpg遊戲
說到最經典的遊戲類型,那肯定就要數RPG遊戲,很多遊戲宅都是從小玩到大。最近遊戲日報山泉君在Steam上看到一個非常經典RPG系列遊戲,這個算不是什麼大作的RPG遊戲,但說到它,可能大部分遊戲宅跟山泉君一樣懷念,懷念這個遊戲,也懷念以前下盜...
2025-12-16
Copyright 2023-2025 - www.tftnews.com All Rights Reserved