【C++图形化编程】飞机大战1—基础资源导入与基本框架
0.前言
前面几篇文章中,我们实现了flappy的小游戏,这篇文章中,我们尝试制作飞机大战的游戏。
首先,效果图如下:
基础资源导入
下载图片及音乐资源:https://box356.lanzoui.com/ilIEfwg5lcb
下载解压后的图片及音乐资源如下:
2.游戏基础框架
#include <graphics.h>
#include <conio.h>
#include <math.h>
#include <stdio.h>
// 引用 Windows Multimedia API
#pragma comment(lib,"Winmm.lib")
#define High 800 // 游戏画面尺寸
#define Width 590
IMAGE img_bk; // 背景图片
float position_x,position_y; // 飞机位置
float bullet_x,bullet_y; // 子弹位置
float enemy_x,enemy_y; // 敌机位置
IMAGE img_planeNormal1,img_planeNormal2; // 正常飞机图片
IMAGE img_planeExplode1,img_planeExplode2; // 爆炸飞机图片
IMAGE img_bullet1,img_bullet2; // 子弹图片
IMAGE img_enemyPlane1,img_enemyPlane2; // 敌机图片
int isExpolde = 0; // 飞机是否爆炸
int score = 0; // 得分
void startup() {
}
void show() {
}
void updateWithoutInput() {
}
void updateWithInput() {
}
void gameover() {
EndBatchDraw();
getch();
closegraph();
}
int main() {
startup(); // 数据初始化
while (1) { // 游戏循环执行
show(); // 显示画面
updateWithoutInput(); // 与用户输入无关的更新
updateWithInput(); // 与用户输入有关的更新
}
gameover(); // 游戏结束、后续处理
return 0;
}
3.现实静态资源现实
参考代码:
#include <graphics.h>
#include <conio.h>
#include <math.h>
#include <stdio.h>
// 引用 Windows Multimedia API
#pragma comment(lib,"Winmm.lib")
#define High 800 // 游戏画面尺寸
#define Width 590
IMAGE img_bk; // 背景图片
float position_x,position_y; // 飞机位置
float bullet_x,bullet_y; // 子弹位置
float enemy_x,enemy_y; // 敌机位置
IMAGE img_planeNormal1,img_planeNormal2; // 正常飞机图片
IMAGE img_planeExplode1,img_planeExplode2; // 爆炸飞机图片
IMAGE img_bullet1,img_bullet2; // 子弹图片
IMAGE img_enemyPlane1,img_enemyPlane2; // 敌机图片
int isExpolde = 0; // 飞机是否爆炸
int score = 0; // 得分
void startup()
{
mciSendString("open game_music.mp3 alias bkmusic", NULL, 0, NULL);//打开背景音乐
mciSendString("play bkmusic repeat", NULL, 0, NULL); // 循环播放
initgraph(Width,High);
loadimage(&img_bk, "background.jpg");
loadimage(&img_planeNormal1, "planeNormal_1.jpg");
loadimage(&img_planeNormal2, "planeNormal_2.jpg");
loadimage(&img_bullet1, "bullet1.jpg");
loadimage(&img_bullet2, "bullet2.jpg");
loadimage(&img_enemyPlane1, "enemyPlane1.jpg");
loadimage(&img_enemyPlane2, "enemyPlane2.jpg");
loadimage(&img_planeExplode1, "planeExplode_1.jpg");
loadimage(&img_planeExplode2, "planeExplode_2.jpg");
position_x = Width*0.5;
position_y = High*0.7;
bullet_x = position_x;
bullet_y = -85;
enemy_x = Width*0.5;
enemy_y = 10;
BeginBatchDraw();
}
void show()
{
putimage(0, 0, &img_bk); // 显示背景
if (isExpolde==0)
{
putimage(position_x-50, position_y-60, &img_planeNormal1,NOTSRCERASE); // 显示正常飞机
putimage(position_x-50, position_y-60, &img_planeNormal2,SRCINVERT);
putimage(bullet_x-7, bullet_y, &img_bullet1,NOTSRCERASE); // 显示子弹
putimage(bullet_x-7, bullet_y, &img_bullet2,SRCINVERT);
putimage(enemy_x, enemy_y, &img_enemyPlane1,NOTSRCERASE); // 显示敌机
putimage(enemy_x, enemy_y, &img_enemyPlane2,SRCINVERT);
}
else
{
putimage(position_x-50, position_y-60, &img_planeExplode1,NOTSRCERASE); // 显示爆炸飞机
putimage(position_x-50, position_y-60, &img_planeExplode2,SRCINVERT);
}
outtextxy(Width*0.48, High*0.95, "得分:");
char s[5];
sprintf(s, "%d", score);
outtextxy(Width*0.55, High*0.95, s);
FlushBatchDraw();
Sleep(2);
}
void updateWithoutInput()
{
}
void updateWithInput()
{
}
void gameover()
{
EndBatchDraw();
getch();
closegraph();
}
int main()
{
startup(); // 数据初始化
while (1) // 游戏循环执行
{
show(); // 显示画面
updateWithoutInput(); // 与用户输入无关的更新
updateWithInput(); // 与用户输入有关的更新
}
gameover(); // 游戏结束、后续处理
return 0;
}
扫描二维码推送至手机访问。
版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。