最好的程式語言是什麼?一千個程式員或許會有一千零一種答案:
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
如果你對程式員這份工作滿懷熱愛,如果你樂意走在技術的最前沿,不妨加入我們,將所有的迷惘一掃而光吧。
點選閱讀原文,也可以參與哦