歡迎光臨
每天分享高質量文章

推薦一些適合新手練手的C/C++專案

最好的程式語言是什麼?一千個程式員或許會有一千零一種答案:


Python在人工智慧時代的風頭正盛、Java依舊是市場上的香餑餑、當然還有PHP;JavaScript、C#、Ruby以及Objective-C……每一種程式語言,都有由其打造的頂級應用成果呈現。


根據TIOBE 剛剛釋出了 5 月程式語言排行榜,排名前三的依舊有C/C++。而且都出現了不同幅度的增長,C語言增長幅度最高達到7%,C++增長2.92%



C/C++作為元老級的程式語言,任時光更迭依舊屹立不倒,哪怕如今炙手可熱的AI,其底層也是用其編寫。C/C++可以說是永不過時的語言。


那麼作為新手該如何上手這門語言?一切不敲程式碼的學程式設計手段都是扯淡,今天小編就推薦一些適合新手練手的C/C++專案。

1

用GDI實現動畫效果

GDI是windows與生俱來的圖形裝置介面(GraphicsDeviceInterface)負責系統與繪圖程式之間的資訊交換,處理所有Windows程式的圖形和影象輸出。


部分思路及程式碼如下

準備一張BMP格式的背景圖片,建立一個窗體,在窗體上進行繪製,然後透過GetDC函式來獲取窗體的裝置環境DC。

獲取裝置環境後在記憶體中建立一個裝置環境,在記憶體中畫圖,畫好以後,直接複製到窗體的裝置環境上。

採用的第二種繪製方式(訊息迴圈),透過一個陣列把他們儲存起來,然後依次播放。下麵是部分程式碼:

執行效果如下

在開發過程中,我們會用到C/C++語言、Win32視窗建立、訊息機制、GDI三緩衝繪圖原理等知識點。


●學習過程中你能學會:

1.使用API函式建立好Win32視窗。

2.將準備好的遊戲素材載入到程式中。

3.使用GDI圖形裝置介面函式繪製地圖與角色。

4.利用C/C++語法結合資料結構與演演算法演演算法處理遊戲資料。

5.編寫遊戲邏輯。


●學習成效:

1.跳出控制檯,在介面程式設計中去鍛煉自己的邏輯思維能力。

2.瞭解windows程式設計的基本框架。

3.可嘗試去開發各種介面化的程式,例如雷霆戰機,俄羅斯方塊,坦克大戰等等。


2

C/C++製作益智遊戲2048

懂得C語言基本語法即可實現命令列版本的 2048 小遊戲,在編寫過程中,會運用到陣列、介面處理、AI演演算法等相關知識,能夠讓初學程式設計的人在遊戲中就能夠練習到C++語言的知識,讓學習變得更有意思和趣味。


部分思路及程式碼如下

2048 遊戲裡最關鍵的就是消掉方塊和在螢幕任意位置輸出資料。其中有兩個關鍵點:

一、在滿足條件情況下消除方塊

二、允許在遊戲主介面(16 宮格)中任意一格輸出資料

前者實現思路是建立一個與遊戲地圖相同維數的陣列矩陣,透過陣列矩陣來維護 2048 遊戲中每個格子的資料與狀態。從而玩家的移動操作都可以對映為對陣列矩陣的操作。第二點藉助 ncurses 庫可以較容易實現。


基礎工作,建立幾個全域性變數:

為了呼叫起來方便,我們先宣告一下所需要建立的函式原型

init 函式首先初始化螢幕,並且隨機生成兩個數字 x, y 用於指定方格的位置坐標,並給陣列 a[][] 中相應位存入數字 2 ,然後再呼叫 draw 函式進行繪製相應的字元介面。這部分用於初始化遊戲介面

編寫 play 函式以及函式用於生成新數字的位置,編譯後執行效果如下:

在開發過程中,需要涉及一些資料結構的知識,使用文字介面的螢幕繪相簿 ncurses用字元繪圖,以及一些 Linux 的系統呼叫。


●學習過程中你能學會:

1.掌握C/C++的語法、演演算法,Win技術。

2.學習遊戲設計與實現思路,熟悉遊戲的編寫與執行流程。

3.螢幕繪相簿ncurses的使用,熟悉模組與主流程的執行流程。

4.利用C/C++語法結合資料結構與演演算法演演算法處理遊戲資料。


●學習成效:

學習了一個遊戲應該如何編寫與執行,學習了繪相簿ncurses的使用,隨著我們能力的提升,可以將簡陋的 ASCII 字元換成漂亮的圖片,再加上積分牌等等。


那麼最後送給大家一個福利


這個夏天,一起譜寫一段關於成長的故事——

免費C/C++技術交流群

進群領取GDI、2048及更多專案學習資料包

不定期有Socket程式設計和Hook(鉤子)程式設計等網路駭客技術、騰訊內部核心技術比如QQ截圖系統、編寫雷霆戰機等經典遊戲的免費知識分享課。

長按識別二維碼或

直接搜尋QQ群號:335938634

如果你對程式員這份工作滿懷熱愛,如果你樂意走在技術的最前沿,不妨加入我們,將所有的迷惘一掃而光吧。

 

點選閱讀原文,也可以參與哦

贊(0)

分享創造快樂