通過前面的基礎(chǔ)準備,我們已經(jīng)可以開始實現(xiàn)一個簡單的彈球游戲了,這一節(jié),我們先制作一個小球下落的動態(tài)效果。
那么既然要實現(xiàn)動態(tài)效果,本質(zhì)就是游戲動畫的原理,大家可以思考,小球從一個位置變到另一個位置,本質(zhì)就是原來的位置擦除,在新的位置的重繪即可,是不是這樣?
接著這個思路,如果我們反復執(zhí)行下面四個步驟,會怎樣?
繪制一個小球
等待x秒
擦除小球
將原先小球的位置下移
大家細想每一步,然后我們開始準備我們的代碼。這一次,我們把小球再弄小一些,我們再繪制小球的時候,圓心的坐標我們不必寫死(即固定的數(shù)值),而是用x,y變量替代x初始化為200,y初始化為10,從x軸200的位置下落,每次下落20,即fillcircle(x,y,10); 然后利用Sleep函數(shù)讓小球停留,即可實現(xiàn)動態(tài)下落的效果。完整代碼如下:
//彈球游戲 //www.sztianhecheng.cn #include <graphics.h> // 引用圖形庫頭文件 #include <conio.h> int main() { int i; int x=200,y=10; //表示小球的圓心坐標 initgraph(640, 480); // 創(chuàng)建繪圖窗口,大小為 640x480 像素 for(i=0;i<100;i++) { //繪制小球圖案 setfillcolor(GREEN); fillcircle(x,y,10); Sleep(100); //原位置擦除小球圖案 setcolor(BLACK); setfillcolor(BLACK); fillcircle(x,y,10); y=y+10; //向下移動小球位置 } getch(); // 按任意鍵繼續(xù) closegraph(); // 關(guān)閉繪圖窗口 return 0; }
編譯運行后效果如下:
請大家自行上機實驗理解程序,并嘗試將小球向右水平移動。
好,大家完成之后,接下來我們可以嘗試將小球從屏幕中心的位置開始,斜著像右下角移動,我們可以首先將圓心的位置x,y設(shè)置為屏幕的一半,每次的變化由原來的只更改y軸方向變?yōu)閤軸和y軸都遞增,實現(xiàn)向右下角的移動。代碼如下:
//彈球游戲 //www.sztianhecheng.cn #include <graphics.h> // 引用圖形庫頭文件 #include <conio.h> #define WIDTH 640 #define HIGH 480 int main() { int i; int x=WIDTH/2,y=HIGH/2; //表示小球的圓心坐標 initgraph(WIDTH, HIGH); // 創(chuàng)建繪圖窗口,大小為 640x480 像素 for(i=0;i<100;i++) { //繪制小球圖案 setfillcolor(GREEN); fillcircle(x,y,10); Sleep(50); //原位置擦除小球圖案 setcolor(BLACK); setfillcolor(BLACK); fillcircle(x,y,10); x=x+5; y=y+5; } getch(); // 按任意鍵繼續(xù) closegraph(); // 關(guān)閉繪圖窗口 return 0; }
運行后效果如下:
請大家自行理解并嘗試
C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習題和答疑,點擊了解:
一點編程也不會寫的:零基礎(chǔ)C語言學練課程
解決困擾你多年的C語言疑難雜癥特性的C語言進階課程
從零到寫出一個爬蟲的Python編程課程
只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程
信息學奧賽或C++選手的 必學C++課程
藍橋杯ACM、信息學奧賽的必學課程:算法競賽課入門課程
手把手講解近五年真題的藍橋杯輔導課程