始祖是美國英寶格公司(en:atari games,ja:アタリ (ゲーム))於2023年推出的街機遊戲「breakout」(en:breakout),由該公司在2023年發行的「pong」(en:pong,ja:ポン (ゲーム),世界上第一款電子遊戲,類似撞球)改良而來。相較於其前作,乙個人就可以玩與變化豐富這兩項特點讓breakout相當賣座,使各家公司競相模仿。 因為規則簡單與遊戲性,現在許多移動**都有內建打磚塊遊戲,也有許多網際網路小遊戲版本,目前在網上可以輕易查到。
我們今天就來自己寫經典遊戲《打磚塊》
遊戲目標:消除所有的方塊即可過關。操作指南:遊戲中使用鍵盤方向鍵←→控制移動
ok,了解遊戲的基本操作以及遊戲玩法之後就可以開始我們的程式設計之旅了,今天我會一步**乙個的來分布展示,希望這種方式可以讓大家更容易的理解,如果有其他更好的方式,也歡迎大家向我提出建議
首先是建立乙個遊戲視窗,我們用easyx圖形庫來做,只需要一行**
hwnd = initgraph(800, 800);
這樣我們就建立了乙個800*800的視窗,非常簡單,非常好用,這也是非常適合初學者去嘗試的,這裡我們寫在主函式裡面就可以了
接下來就是我們的老朋友結構體了,木板、球、以及磚塊,這沒什麼好說的,不管啥專案用結構體都是很常見的
//木板的過程
struct board
;//struct board board = ;
struct board* createboard(int x, int y, int speed, colorref color, int width, int height)
//球:
struct ball
;struct ball* createball(int x, int y, int r, int dx, int dy, colorref color)
後面就是我們來畫我們的遊戲介面了(磚塊、球、以及木板),這我是分開寫的,可以更好的理解
void drawmap()
} }}void drawboard(struct board* pboard)
void drawball(struct ball* pball)
做完之後我們就可以看到這樣的介面了
到現在我們的基本遊戲介面就已經出來了,現在差的就是判斷邏輯問題了,這也是我們的重點中的重點,包括球的移動、球的彈射角度、木板的移動、磚塊的消失、遊戲的輸贏判斷都需要我們考慮到,希望大家可以好好看,好好學! 首先是木板的移動函式,我們就簡單控制了,因為他只用左右移就行
//木板的按鍵操作
void keydown(struct board* pboard)
if (getasynckeystate('d') || getasynckeystate(vk_right) && pboard->x <= 800 - 200)
}接下來就是球的移動函式
void moveball(struct ball* pball, struct board* pboard)
if (pball->y - yllwtvkzpball->r <= 0 || hitboard(pball, pboard) || hitbricks(pball))
pball->x += pball->dx;
pball->y += pball->dy;
球的反射以及撞擊木板時的判斷函式
//1.反射
//2.撞擊木板
int hitboard(struct ball* pball, struct board* pboard)
} return 0;
}球撞擊磚塊的判斷函式
//3.撞擊磚塊
int hitbricks(struct ball* pball)
return 0;
}在這個過程中還需要乙個定時器,我們來定義乙個定時器,記住呼叫標頭檔案
int timer(time_t num, int id)
return 0;
}遊戲結束的判斷函式
int gameover()
} }return 1;
}最後是我們的主函式
int main()
if (gameover())
flushbatchdraw();
} endbatchdraw();
closegraph();
return 0;
}經典遊戲《打磚塊》完成,ok,簡單總結一下,**不難,邏輯也不難,重要是大家一定要自己動手去做,這是毋庸置疑的,程式設計沒有捷徑,只有不斷的學習熟練,加強自己的能力,有條件的話找個老師的話效果會更好,好了,希望大家可以在這裡得到自己想要的知識以及快樂吧,也希望大家可以給up主乙個關注,非常感謝大家了!!!
點選下方鏈結進入**講解
c/c++遊戲《打磚塊》**詳細教程
04 23 打磚塊小遊戲 3
打磚塊小遊戲 3 原理研究一 定義類,類的普通方法的定義,類的繼承等 1 中以定義類的類的繼承,呼叫為主題構成,如下 類的定義 共8個類,其中主程序類繼承上邊7個類 class gamewindow object pass class ball object pass class brick obj...
04 24 打磚塊小遊戲之路 4
打磚塊小遊戲 4 每個類所需的方法和屬性的定義 1 視窗類 gamewindow 屬性 視窗長寬,顏色,遊戲名稱 方法 給視窗填充顏色 難點 pygame包中建立視窗的方法 pygame.screen.set mode args 填充顏色 self.window fill args 2 球類 bal...
c 控制台遊戲打磚塊
這個 邏輯有點問題 出現了六個無法消除的幸運星 正在修改。include include include using namespace std enum void hui int map 20 20 else if map i j 4 map i j 5 else if map i j 3 els...