C++飞机大战新手练习
作者:互联网
#include
#include<graphics.h>
#define X 700
#define Y 650
#define ZX 5
#define ZY 30
#define FX 60
#define FY 60
#define ZHIDAN 30
#define DIREN 30
DWORD t1, t2, w1, w2;
bool GameOver = true;
struct image{
IMAGE data;
IMAGE user;
IMAGE zidan;
IMAGE master;
}image;
struct zuobiao {
float x;
float y;
int hp;
bool boolz;
}user,master[DIREN],zidan[ZHIDAN];
void 加载图片(){
//图片途径可以修改 这是安装的一个简易图形库方便小游戏
t1 = t2 = w1 = w2 = GetTickCount();
loadimage(&image.data,"C:\\Users\\yaogu\\Desktop\\Game\\heise.png", 700, 650);
loadimage(&image.user, "C:\\Users\\yaogu\\Desktop\\Game\\user.png", FX, FY);
loadimage(&image.zidan, "C:\\Users\\yaogu\\Desktop\\Game\\765.png", ZX, ZY);
loadimage(&image.master, "C:\\Users\\yaogu\\Desktop\\Game\\diren.png", 40, 40);
//玩家
user.x = (X/2)-(FX/2);
user.y = Y-FY;
user.boolz = true;
//子弹
for (int i = 0; i < ZHIDAN; i++) {
zidan[i].boolz = false;
}
//敌人
for (int i = 0; i < DIREN; i++) {
master[i].boolz = false;
}
}
void 刷新显示() {
putimage(0, 0, &image.data);//背景
if (user.boolz == true && GameOver==true) {
user.hp = 5;
putimage(user.x, user.y, &image.user, SRCINVERT); //自己战机 NOTSRCCOPY NOTSRCERASE
}
for (int i = 0; i < ZHIDAN; i++) { //遍历自己子弹
if (zidan[i].boolz == true) {
putimage(zidan[i].x, zidan[i].y,&image.zidan, SRCINVERT);
}
}
for (int i = 0; i < DIREN; i++) { //遍历敌人
if (master[i].boolz == true) {
putimage(master[i].x, master[i].y, &image.master, SRCINVERT);
}
}
}
void 创建子弹() {
for (int i = 0; i < ZHIDAN; i++) {
if (zidan[i].boolz == false && GameOver == true) {
zidan[i].boolz = true;
zidan[i].x = user.x + (FX/2);
zidan[i].y = user.y - ((FY / 2) - (ZY / 2));
break;
}
}
}
void 发射子弹(float send) {
for (int i = 0; i < ZHIDAN; i++) {
if (zidan[i].boolz==true) {
zidan[i].y -= send;
if (zidan[i].y + ZY <= 0) {
zidan[i].boolz = false;
}
}
}
}
void 创建敌人() {
for (int i = 0; i < DIREN; i++) {
if(master[i].boolz == false) {
master[i].boolz = true;
master[i].x = rand() % X - 40;
master[i].y = 0;
break;
}
}
}
void 敌人显示(float send){
for (int i = 0; i < DIREN; i++) {
if (master[i].boolz == true) {
master[i].y += send;
if (master[i].x < 0 || master[i].x > X || master[i].y - 100 > Y) {
master[i].boolz = false;
}
}
}
}
void 击杀判断() {
for (int i = 0; i < ZHIDAN; i++) {
for (int j = 0; j < DIREN; j++) {
if (((zidan[i].x > master[j].x) && (zidan[i].x < master[j].x + 40)) && (zidan[i].y - ZY <= master[j].y)) {
master[j].boolz = false;
}
}
}
}
void 撞击判断(){
for (int i = 0; i < DIREN; i++) {
if ((master[i].x > user.x && master[i].x < user.x + FX) && (master[i].y > user.y - (FY/2))) {
user.boolz = false;
GameOver = false;
}
}
}
void 子弹死亡() {
for (int i = 0; i < DIREN; i++) {
for (int j = 0; j < ZHIDAN; j++) {
if (((zidan[j].x > master[i].x) && (zidan[j].x < master[i].x + 40)) && (zidan[j].y - ZY <= master[i].y)) {
zidan[j].boolz = false;
}
}
}
}
//子弹 怪物 等都是在这里初始化
void GetKey(float Key){
if (GetAsyncKeyState(VK_UP)) {
if (user.y > 0) {
user.y -= Key;
}
}
if (GetAsyncKeyState(VK_DOWN)) {
if (user.y < Y-FY) {
user.y += Key;
}
}
if (GetAsyncKeyState(VK_LEFT)) {
if (user.x > 0) {
user.x -= Key;
}
}
if (GetAsyncKeyState(VK_RIGHT)) {
if (user.x <X-FY) {
user.x += Key;
}
}
if (GetAsyncKeyState(VK_SPACE)) {
if (t2 - t1 > 70) {
t1 = t2;
创建子弹();
}
}
t2 = GetTickCount();
发射子弹(0.5);
if (w2 - w1 > 300) {
w1 = w2;
创建敌人();
}
w2 = GetTickCount();
敌人显示(0.1);
击杀判断();
撞击判断();
}
void 初始化(){
if (GameOver)
{
刷新显示();
GetKey(0.5);
FlushBatchDraw();
初始化();
}
}
int main(){
initgraph(X, Y);
加载图片();
BeginBatchDraw();
初始化();
EndBatchDraw();
}
标签:int,练习,C++,boolz,++,master,user,新手,zidan 来源: https://blog.csdn.net/qq_24879175/article/details/113645495