- 算法超簡單:趣味游戲帶你輕松入門與實踐
- 童晶
- 981字
- 2024-09-10 17:14:27
2.1 EasyX圖形庫
1-3-2.cpp中的printf()函數僅能輸出簡單字符,這一節我們下載安裝EasyX圖形庫,快速上手圖形繪制和游戲編程。
EasyX是一個簡單易用的圖形庫,可以免費使用。可從EasyX的官方網站下載最新版本的軟件安裝包,如圖2-2所示。

圖2-2
單擊EasyX官網右上角的“下載EasyX”按鈕下載軟件安裝包,本書使用20220901版本。運行下載好的EasyX安裝程序,彈出如圖2-3所示的安裝向導。

圖2-3
在圖2-3所示的對話框中單擊“下一步”按鈕,安裝程序會自動檢測計算機上已安裝的開發平臺,如圖2-4所示,選擇想要安裝EasyX的開發平臺,例如選擇“Visual C++ 2022”,單擊對應的“安裝”按鈕。

圖2-4
安裝成功后,在Visual Studio 2022中新建一個項目,輸入2-1-1.cpp中的代碼。
2-1-1.cpp
1 #include <graphics.h> // EasyX頭文件 2 #include <conio.h> 3 #include <stdio.h> 4 int main() 5 { 6 initgraph(800, 600); // 初始化一個800×600的窗口 7 setcolor(YELLOW); // 圓的線條為黃色 8 setfillcolor(GREEN); // 圓內部填充為綠色 9 fillcircle(400, 300, 100); // 畫圓,圓心坐標為(400,300),半徑為100 10 _getch(); // 按任意鍵繼續 11 closegraph(); // 關閉圖形窗口 12 return 0; 13 }
運行2-1-1.cpp后出現如圖2-5所示的窗口,并在窗口中間繪制一個黃色線條、綠色填充的實心圓。

圖2-5
使用EasyX生成的繪制區域采用直角坐標系,左上角的坐標為(0,0)。initgraph(800, 600)生成一個寬800、高600的繪圖窗口,橫軸方向由x坐標表示,取值范圍為0到800;縱軸方向由y坐標表示,取值范圍為0到600。fillcircle(400, 300, 100)繪制一個圓心坐標為(400, 300)、半徑為100的實心圓。
讀者可以根據代碼中的注釋,嘗試更改窗口大小、圓心坐標、半徑大小、顏色等參數。讀者還可以打開EasyX的幫助文檔“EasyX_Help.chm”,學習使用相關的圖形繪制函數。
提示 EasyX安裝程序目前僅支持Visual Studio開發環境。如果讀者計算機的存儲空間不夠安裝Visual Studio,可以安裝輕量級的“小龍Dev-C++”或者“小熊貓C++”開發環境,這兩個開發環境也可以使用EasyX圖形庫。如果讀者使用其他代碼編輯器,也可以使用開源圖形庫EGE。使用EGE時,只需修改本書代碼中的部分繪圖語句。
若不設置繪圖顏色,EasyX默認將圖形繪制為白色。輸入并運行2-1-2.cpp,可以實現白色小球連續下落的動畫效果,掃描右側二維碼觀看視頻效果“2.1 小球下落動畫”。

2.1 小球下落動畫
2-1-2.cpp
1 #include <graphics.h> // EasyX頭文件 2 #include <conio.h> 3 #include <stdio.h> 4 int main() 5 { 6 int y = 50; // 小球的y坐標 7 initgraph(800, 600); // 初始化一個800×600的窗口 8 while (1) // 一直循環 9 { 10 y = y + 1; // y坐標增加 11 cleardevice(); // 清空畫面 12 fillcircle(400, y, 20); // 在(400,y)處繪制半徑為20的圓 13 Sleep(10); // 暫停10毫秒 14 } 15 _getch(); 16 closegraph(); // 關閉圖形窗口 17 return 0; 18 }
在2-1-2.cpp中,小球的初始y坐標為50;在while循環語句中,依次執行y坐標增加、清空畫面、在新位置繪制圓、暫停10毫秒,如此重復執行,即實現了小球下落的動畫效果,如圖2-6所示。

圖2-6
- WildFly:New Features
- 簡單高效LATEX
- 編寫高質量代碼:改善Python程序的91個建議
- AngularJS深度剖析與最佳實踐
- Python神經網絡項目實戰
- Backbone.js Blueprints
- Mastering Python Networking
- PostgreSQL Replication(Second Edition)
- QGIS By Example
- Haxe Game Development Essentials
- Linux C編程:一站式學習
- Internet of Things with ESP8266
- Python Machine Learning Blueprints:Intuitive data projects you can relate to
- Clojure編程樂趣
- 小學生C++趣味編程從入門到精通