课设题目
实现功能:
飞机鼠标控制–飞机武器升级–敌机发射子弹–boss发射散弹–boss血条记录–我方多条生命
图片资源和源码在下面
链接:https://pan.baidu.com/s/1uTQVHAaWfWHXFg3p5zQ4KA
提取码:y606
源码:
(本程序运行需要图片资源,自行到上方的百度网盘下载)
#include <graphics.h>
#include <conio.h>
#include <math.h>
#include <stdio.h>
#pragma comment(lib,"Winmm.lib") // 引用 Windows Multimedia API
#define High 800 // 游戏画面尺寸
#define Width 800
IMAGE img_bk; // 背景图片
IMAGE img_planeNormal1, img_planeNormal2; // 正常飞机图片
IMAGE img_planeExplode1, img_planeExplode2; // 爆炸飞机图片
IMAGE img_enemyPlane1, img_enemyPlane2; // 敌机图片
IMAGE boss1_a, boss1_b; // boss图片
IMAGE bullet_lis[10][2]; // 我方飞机子弹图片
float e_speed[3] = {
0.4,0.5,0.6 }; //敌机随机飞行速度列表
int enemy_cnt = 5; //同一画面最大敌机数量
int enemy_life = 3; //敌机的生命值
int e_bullet_cnt = 20; //同一画面最多敌机子弹数量
int bullet_type = 2; //我方飞机子弹种类
int bullet_rank = 0; //我方飞机now子弹等级 and 对应打boss的伤害为 bullet_rank+1
int bullet_cnt = 20; //我方飞机最大子弹数量
int isExpolde = 0; //飞机是否爆炸
int score = 0; //得分
int b_bullet_cnt = 5; //boss子弹同一画面最大数量
int time_cnt = 0; //用于控制boss子弹发射间隔
struct Plane {
//我方飞机属性
float x, y;
int life;
float w, h;
}plane;
struct Bullet {
//我方飞机子弹属性
float x, y;
int life;
float w, h;
}bullet[200];
struct Enemy {
//敌机属性
float x, y;
int speed; //准确来说敌机速度是e_speed[enemy.speed]
int life;
float w, h;
}enemy[20];
struct Enemy_bullet {
//敌机子弹属性
float x, y;
float speed;
int life;
float w, h;
}e_bullet[100];
struct Boss {
//boss属性
float x, y;
float w, h;
float add_x, add_y; //x,y轴移动速度
int life; //生命值大小
int is_active; //boss是否出现
int is_protect;
}boss;
struct Boss_bullet {
//boss子弹属性
float x, y;
float w, h;
float add_x, add_y;
int life;
}b_bullet[20][3];
void startup(); // 数据初始化(加载图片资源,初始化飞机属性)
void show(); // 画面刷新
void updateWithoutInput(); // 与用户输入无关的更新
void updateWithInput(); // 与用户输入有关的更新
void gameover(); //游戏结束
void reset_plane(); //设置我方飞机的初始属性
void reset_bullet(); //设置我方子弹 和 敌军子弹的大小
void reset_enemy(int i); //设置敌机属性
void reset_e_bullet(Enemy a); //设置敌机子弹属性
void reset_boss(); //设置boss属性
void reset_b_bullet(Boss_bullet a[3]); //设置boss属性
int is_crash(Enemy a, Bullet b); //子弹--敌机碰撞检测
int is_crash_boss(Boss a, Bullet b); //子弹--boss碰撞检测
int is_crash_plane(Plane a, Enemy_bullet b); //我方--敌机子弹碰撞检测
int is_crash_boss_plane(Plane a, Boss_bullet b); //我方--boss子弹碰撞检测
int main()
{
startup(); // 数据初始化
while (1) // 游戏循环执行
{
show(); // 显示画面
updateWithoutInput(); // 与用户输入无关的更新
updateWithInput(); // 与用户输入有关的更新
if (isExpolde == 1) break;
}
gameover(); // 游戏结束、后续处理
return 0;
}
void startup() // 数据初始化(加载图片资源,初始化飞机属性)
{
mciSendString("open image/game_music.mp3 alias bkmusic", NULL, 0, NULL);//打开背景音乐
mciSendString("play bkmusic repeat", NULL, 0, NULL); // 循环播放
initgraph(Width, High);
loadimage(&img_bk, "image/back2.jpg", 800, 800);
loadimage(&img_planeNormal1, "image/plane1.jpg");
loadimage(&img_planeNormal2, "image/plane2.jpg");
loadimage(&img_enemyPlane1, "image/enemyPlane1.jpg");
loadimage(&img_enemyPlane2, "image/enemyPlane2.jpg");
loadimage(&img_planeExplode1, "image/planeExplode_1.jpg");
loadimage(&img_planeExplode2, "image/planeExplode_2.jpg");
loadimage(&bullet_lis[0][0], "image/bullet1_a.jpg");
loadimage(&bullet_lis[0][1], "image/bullet1_b.jpg");
loadimage(&bullet_lis[1][0], "image/bullet2_a.jpg");
loadimage(&bullet_lis[1][1], "image/bullet2_b.jpg");
loadimage(&bullet_lis[2][0], "image/bullet3_a.jpg");
loadimage(&bullet_lis[2][1], "image/bullet3_b.jpg");
loadimage(&boss1_a, "image/boss_a.jpg")