1. 程式人生 > >C/C++小白適合練習的是實戰專案

C/C++小白適合練習的是實戰專案

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

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

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

小白學習C/C++比較適合練習的小專案

想要學習C/C++可以 + Q 群 :623357784

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

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

1

用GDI實現動畫效果

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

部分思路及程式碼如下

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

小白學習C/C++比較適合練習的小專案

想要學習C/C++可以 + Q 群 :623357784

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

小白學習C/C++比較適合練習的小專案

想要學習C/C++可以 + Q 群 :623357784

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

小白學習C/C++比較適合練習的小專案

想要學習C/C++可以 + Q 群 :623357784

執行效果如下

小白學習C/C++比較適合練習的小專案

想要學習C/C++可以 + Q 群 :623357784

在開發過程中,我們會用到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 庫可以較容易實現。

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

小白學習C/C++比較適合練習的小專案

想要學習C/C++可以 + Q 群 :623357784

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

小白學習C/C++比較適合練習的小專案

想要學習C/C++可以 + Q 群 :623357784

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

小白學習C/C++比較適合練習的小專案

想要學習C/C++可以 + Q 群 :623357784

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

小白學習C/C++比較適合練習的小專案

想要學習C/C++可以 + Q 群 :623357784

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

●學習過程中你能學會:

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

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

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

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

●學習成效:

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