最近微信跳一跳老火了,咱C++程式設計師也寫個俄羅斯方塊出來湊熱鬧

最近微信跳一跳老火了,咱C++程序員也寫個俄羅斯方塊出來湊熱鬧

最近手機拿起來,一個個就是在玩跳一跳 ,就像我們以前拿著遊戲機玩著俄羅斯方塊一樣

俄羅斯方塊是很多人的入門遊戲啊,童年的回憶啊,小時候常常拿著遊戲機玩,現在學了編程,你是否有想過自己開發一款俄羅斯方塊呢,比如像下面這樣子的:

最近微信跳一跳老火了,咱C++程序員也寫個俄羅斯方塊出來湊熱鬧

看起來很有程序員風格啊,上圖是【C++ 實現俄羅斯方塊】最後的效果圖

下面是開發這樣子俄羅斯方塊的原理及關鍵函數設計

開發原理

1 設計前的分析

在開始程序編寫之前,我們要先分析程序設計需要實現哪些功能,劃分為哪些模塊,在俄羅斯方塊中我們首先想到的應該是顯示方塊,其次是方塊的下落,左右移動,旋轉,最後的層滿消行,另外一個基本的俄羅斯方塊遊戲還應該有下一個方塊形狀的提示功能。

所以我們編程中需要解決的問題有:

  • 顯示方塊

  • 實現方塊的移動

  • 方塊旋轉

  • 對層滿的方塊消行

  • 提示下一個方塊形狀

2 基本圖形

每個方塊由四個 box 組成,從遊戲框的中心位置掉落,在框內不碰撞邊界和其他方塊的情況下可以進行旋轉。

最近微信跳一跳老火了,咱C++程序員也寫個俄羅斯方塊出來湊熱鬧

3 NCURSES庫的使用

簡單地說,NCURSES 是一個從 System V Release 4.0 (SVr4) 中 CURSES 的克隆,這是一個可自由配置的庫,完全兼容舊版本的 CURSES,是一個可以使應用程序直接控制終端屏幕顯示的庫。

NCURSES封裝了底層的終端功能,包含了一些創建窗口的函數,並且有Menu、Panel 和 Form對CURSES基礎庫的擴展,我們可以建立一個同時包含多窗口(multiple windows)、菜單(menus)、面板(panels)和表單(forms)的應用程序。

窗口可以被獨立管理,例如讓它捲動(scrollability)或者隱藏。 菜單(Menus)可以讓用戶建立命令選項,從而方便執行命令。而窗體(Forms)允許用戶建立一些簡單的數據輸入和顯示的窗口。面板(Panels)是 NCURSES 窗口管理功能的擴展,可以用它覆蓋或堆積窗口。

關鍵函數設計

頭文件: 首先包含頭文件以及定義一個交換函數和隨機數函數,後面用到(交換函數用來做方塊的旋轉,隨機數用來設置方塊的形狀)

定義類:

設置方塊形狀: 通過 case 語句定義了7種方塊的形狀,在每次下一個方塊掉落之前都要調用以設置好它的形狀以及初始位置

旋轉函數:

用了一個比較簡單的算法對方塊進行旋轉,類似於矩陣的旋轉,先將 shape 數組進行斜對角線對稱化,再進行左右對稱,便完成了旋轉,需要注意的是要判斷旋轉後方塊是否出界或重合,如果是,則取消本次旋轉。

移動函數:如果玩家沒有按下任何按鍵,方塊需要慢速下落;

重複函數:每次移動或旋轉之後要進行判斷的函數;

層滿函數:對方塊已滿的行進行消除,每當一個方塊向下移動停止後都需要進行判斷。

代碼實現

上面對開發這樣一個俄羅斯方塊進行了原理分析,也介紹了關鍵函數的設計,不知道你看完之後是否已經會開發了呢?

看了還是不會的話,想看詳細的開發步驟和代碼,也可以看看下面的視頻哦~

視頻加載中...
-->


分享到:


相關文章: