废话不多说,直接上代码
相关音乐 图片资源文件我放在下方评论区,百度云自己提取。
#pragma once
#pragma warning(disable : 4996)
#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<mmsystem.h>
#include <windows.h>
#pragma comment(lib,"winmm.lib")
#define WIN_WIDTH 591
#define WIN_HEIGHT 864
#define BULLET_NUM 15
#define ENEMYPLANE_NUM 10
#define BULLET_ENEMY_NUM ENEMYPLANE_NUM*2
void startmenu();
void startgame();
void startmenu_options();
void choices_1(int a);
void EnemyMove(int speed);
void PlayEnemyP();
void EnemyHP(int i);
void GameInit();
void CreateBullet();
void BulletMove(int speed);
void PlayerDie();
void read_file();
void write_file();
void enemyBulletMove(int speed);
void GameControl(int speed);
struct Image
{
IMAGE bakcGround;
IMAGE player[4];
IMAGE bullet[2];
IMAGE enemy[4];
}image;
enum TYPE
{
SMALL,
BIG,
};
struct Plane
{
int x;
int y;
bool flag;
union
{
int type;
int score;
}un;
int hp;
int count;
int width;
int height;
}player, bullet[BULLET_NUM], bullet2[BULLET_NUM], bullet3[BULLET_NUM], bullet4[BULLET_NUM], enemy[ENEMYPLANE_NUM];
struct Plane enemyBullet[BULLET_ENEMY_NUM], enemyBullet2[BULLET_ENEMY_NUM];
DWORD t1, t2, t3, t4, t5, t6, t7, t8 = GetTickCount();
int count;
int count2;
int h = 0;
int m = 700;
int a[3] = {
1,2,3 };
int main()
{
startmenu();
return 0;
}
void HideCursor()
{
CONSOLE_CURSOR_INFO cursor;
cursor.bVisible = FALSE;
cursor.dwSize = sizeof(cursor);
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorInfo(handle, &cursor);
}
void ShowCursor()
{
CONSOLE_CURSOR_INFO cursor;
cursor.bVisible = TRUE;
cursor.dwSize = 100;
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorInfo(handle, &cursor);
}
void gotoxy(int x, int y)
{
COORD c;
c.X = x;
c.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), c);
}
int changecolor(int a)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), a);
return 0;
}
void laotie()
{
gotoxy(25, 15);
changecolor(15);
printf(" ●●●●●●●●●●●●●●● \n");
gotoxy(25, 16);
printf(" ●●●●●●●●●●●●●●● \n");
gotoxy(25, 17);
printf(" ●● \n");
gotoxy(25, 18);
printf(" ●● \n");
gotoxy(25, 19);
printf(" ●● ●●●●●●●●●●●●● \n");
gotoxy(25, 20);
printf(" ●● ●\n");
gotoxy(25, 21);
printf(" ●● ● \n");
gotoxy(25, 22);
printf(" ●● ● ●●●●●●●● \n");
gotoxy(25, 23);
printf(" ●●●●●●●●●●●●●●●● ● ●\n");
gotoxy(25, 24);
printf(" ●●●●●●●●●●●●●●●● ●●●●●●●●●●●●● ● \n");
gotoxy(25, 25);
printf(" ●● ●● ● ● ● \n");
gotoxy(25, 26);
printf(" ●● ●● ● ● ●\n");
gotoxy(25, 27);
printf(" ●● ●● ● ● ●●●●●●●● \n");
gotoxy(25, 28);
printf(" ●● ●● ● ● ● ●\n");
gotoxy(25, 29);
printf(" ●● ●● ● ● ● ●\n");
gotoxy(25, 30);
printf(" ●● ●● ● ● ● ●\n");
gotoxy(25, 31);
printf(" ●●●●●●●●●●●●●●●● ● ● ● ●\n");
gotoxy(25, 32);
printf(" ●●●●●●●●●●●●●●●● ●●●●●●●●●●●●● ●●●●●●●●\n");
}
void ZHTsnake()
{
changecolor(11);
printf(" \n");
printf(" @@@ @@ @ @ ● ● \n");
printf(" @@@@@@@@@@@@@@@@@@@ @@ ◆ @@ @@@@@@@@@@@@@@@@@@@@ \n");
printf(" @ @@ @@ & & @@ @@ \n");
printf(" ~ ~ @@ @@ # # @@ @@ \n");
printf(" # # @@ @@ @@ @@ \n");
printf(" @@ @ @@@@@@@@@@@@@@@@@ @@ \n");
printf(" @ @@ @@ @ @ @@ @@ \n");
printf(" @@ @ @@ @@ @@ \n");
printf(" @@ @@ @@ @@ \n");
printf(" @@@@@@@@@@@@@@@@@@@ @@ @@ @@ \n");
printf(" @@ @@ @ @ \n");
printf(" \n");
gotoxy(64, 2);
changecolor(5);
printf(" @ @@@@@@ \n");
gotoxy(64, 3);
printf(" @ @ \n");
gotoxy(64, 4);
printf(" @ @ \n");
gotoxy(64, 5);
printf(" @ @@@@ ## @ \n");
gotoxy(64, 6);
printf(" @ @@ @ @ \n");
gotoxy(64, 7);
printf(" @ @@ @@@@ \n");
gotoxy(64, 8);
printf(" @ @@ \n");
gotoxy(64, 9);
printf(" @ @@ \n");
gotoxy(64, 10);
printf(" @ @@ \n");
gotoxy(64, 11);
printf(" @@@@@@ @ @@ \n");
gotoxy(64, 12);
printf(" @ @@@ @ @@ \n");
gotoxy(64, 13);
printf("@ @@ @ @ @@@@@@ @ @ @ @@@@@\n");
gotoxy(64, 14);
printf("@ @@@@@ @ @ @ @ @ @ @ @ @ \n");
gotoxy(64, 15);
printf(" @ @@ @ @ @@@@@ @@ @@@@ \n");
gotoxy(64, 16);
printf(" @ @@ @ @ @ @ @ @ @ \n");
gotoxy(64, 17);
printf(" @ @@@@@@@@@ @ @@ @@ @ @@@@@\n");
}
void instruction()
{
system("cls");
changecolor(3);
printf("----------------------Hi,Snake!~o(*= ▽=*)ブ----------------------\n");
gotoxy(0, 17);
changecolor(3);
printf("------------------------------------------------------------------\n");
gotoxy(2, 2);
changecolor(14);
printf("◇ 操作说明 ◇\n");
gotoxy(2, 4);
changecolor(3);
printf("※按↑↓←→键分别控制飞机向上、下、左、右移动\n");
gotoxy(2, 6);
printf("※按空格键暂停游戏\n");
gotoxy(2, 8);
printf("※按ESC键于游戏暂停游戏\n");
changecolor(14);
gotoxy(2, 10);
printf("◇ 游戏规则 ◇\n");
gotoxy(2, 12);
changecolor(3);
printf("※肥肠简单,只要还有HP值就可以了(笑)\n");
gotoxy(1, 16);
printf("Press space back to the menu......");
gotoxy(35, 16);
int cha = _getch();
while (cha == 0x0d)
{
system("cls");
startmenu();
}
}
DWORD WINAPI PlayGun(LPVOID lparamter);
void enemyCreateBullet(Plane belong);
void enemyBulletMove(int speed);
void EnemyHP(int i)
{
if (rand() % 10 == 0)
{
if (count2 == 15)
enemy[i].hp = 4;
else
enemy[i].hp = 3;
enemy[i].un.type = BIG;
enemy[i].width = 100;
enemy[i].height = 130;
}
else
{
if (count2 == 15)
enemy[i].hp = 3;
else
enemy[i].hp = 1;
enemy[i].un.type = SMALL;
enemy[i].width = 70;
enemy[i].height = 60;
}
}
void GameInit()
{
srand(GetTickCount());
mciSendString("open ./images/game_music.mp3 alias BGM", 0, 0, 0);
mciSendString("play BGM repeat", 0, 0, 0);
loadimage(&image.bakcGround, "./images/b.jpg");
loadimage(&image.player[0], "./images/planeNormal_1.jpg");
loadimage(&image.player[1], "./images/planeNormal_2.jpg");
loadimage(&image.player[2], "./images/boom_1.jpg");
loadimage(&image.player[3], "./images/boom_2.jpg");
loadimage(&image.bullet[0], "./images/bullet1.jpg");
loadimage(&image.bullet[1], "./images/bullet2.jpg");
loadimage(&image.enemy[0], "./images/enemy_1.jpg");
loadimage(&image.enemy[1], "./images/enemy_2.jpg");
loadimage(&image.enemy[2], "./images/enemyPlane1.jpg");
loadimage(&image.enemy[3], "./images/enemyPlane2.jpg");
player.x = WIN_WIDTH / 2;
player.y = WIN_HEIGHT - 120;
player.flag = true;
player.hp = 50;
player.un.score = 0;
player.width = 117;
player.height = 120;
for (int i = 0; i < BULLET_NUM; i++)
{
bullet[i].flag = false;
bullet2[i].flag = false;
bullet3[i].flag = false;
bullet4[i].flag = false;
}
for (int i = 0; i < ENEMYPLANE_NUM; i++)
{
enemy[i].flag = false;
EnemyHP(i);
}
for (int i = 0; i < BULLET_ENEMY_NUM; i++)
{
enemyBullet[i].flag = false;
enemyBullet2[i].flag = false;
}
}
void Gamedraw()
{
putimage(0, 0, &image.bakcGround);
if (player.flag == true)
{
putimage(player.x, player.y, &image.player[0], NOTSRCERASE);
putimage(player.x, player.y, &image.player[1], SRCINVERT);
}
else
{
settextcolor(RED);
settextstyle(50, 0, "黑体");
char arr[] = "游戏结束~";
int tsize = WIN_WIDTH / 2 - textwidth(arr) / 2;
outtextxy(tsize, WIN_HEIGHT / 3, arr);
putimage(player.x, player.y, &image.player[2], NOTSRCERASE);
putimage(player.x, player.y, &image.player[3], SRCINVERT);
}
for (int i = 0; i < BULLET_NUM; i++)
{
if (bullet[i].flag == true)
{
putimage(bullet[i].x, bullet[i].y, &image.bullet[0], NOTSRCERASE);
putimage(bullet[i].x, bullet[i].y, &image.bullet[1], SRCINVERT);
}
}
for (int i = 0; i < BULLET_NUM; i++)
{
if (bullet2[i].flag == true)
{
putimage(bullet2[i].x, bullet2[i].y, &image.bullet[0], NOTSRCERASE);
putimage(bullet2[i].x, bullet2[i].y, &image.bullet[1], SRCINVERT);
}
}
if (count2 == 15)
{
for (int i = 0; i < BULLET_NUM; i++)
{
if (bullet4[i].flag == true)
{
putimage(bullet4[i].x, bullet4[i].y, &image.bullet[0], NOTSRCERASE);
putimage(bullet4[i].x, bullet4[i].y, &image.bullet[1], SRCINVERT);
}
}
for (int i = 0; i < BULLET_NUM; i++)
{
if (bullet3[i].flag == true)
{
putimage(bullet3[i].x, bullet3[i].y, &image.bullet[0], NOTSRCERASE);
putimage(bullet3[i].x, bullet3[i].y, &image.bullet[1], SRCINVERT);
}
}
}
for (int i = 0; i < ENEMYPLANE_NUM; i++)
{
if (enemy[i].flag)
{
if (enemy[i].un.type == TYPE::SMALL)
{
putimage(enemy[i].x, enemy[i].y, &image.enemy[0], NOTSRCERASE);
putimage(enemy[i].x, enemy[i].y, &image.enemy[1], SRCINVERT);
}
else if (enemy[i].un.type == TYPE::BIG)
{
putimage(enemy[i].x, enemy[i].y, &image.enemy[2], NOTSRCERASE);
putimage(enemy[i].x, enemy[i].y, &image.enemy[3], SRCINVERT);
}
}
}
for (int i = 0; i < BULLET_ENEMY_NUM; i++)
{
if (enemyBullet[i].flag == true)
{
putimage(enemyBullet[i].x, enemyBullet[i].y, &image.bullet[0], NOTSRCERASE);
putimage(enemyBullet[i].x, enemyBullet[i].y, &image.bullet[1], SRCINVERT);
if (count && count2 == 15)
{
putimage(enemyBullet2[i].x, enemyBullet2[i].y, &image.bullet[0], NOTSRCERASE);
putimage(enemyBullet2[i].x, enemyBullet2[i].y, &image.bullet[1], SRCINVERT);
}
}
}
char score[20];
settextcolor(RED);
settextstyle(20, 0, "黑体");
sprintf_s(score, "分数:%d,HP:%d", player.un.score, player.hp);
setbkmode(TRANSPARENT);
outtextxy(10, 10, score);
if (count && count2 == 15)
outtextxy(40, 30, "第三关");
else if (count2 == 15)
{
outtextxy(40, 30, "第二关");
}
else
outtextxy(40, 30, "第一关");
}
void CreateBullet()
{
for (int i = 0; i < BULLET_NUM; i++)
{
if (count2 == 15)
{
if (bullet3[i].flag == false)
{
bullet3[i].flag = true;
bullet3[i].x = player.x + 10;
bullet3[i].y = player.y - 30;
}
if (bullet4[i].flag == false)
{
bullet4[i].flag = true;
bullet4[i].x = player.x + 70;
bullet4[i].y = player.y - 30;
}
}
if (bullet[i].flag == false)
{
bullet[i].flag = true;
bullet[i].x = player.x + 30;
bullet[i].y = player.y - 10;
}
if (bullet2[i].flag == false)
{
bullet2[i].flag = true;
bullet2[i].x = player.x + 50;
bullet2[i].y = player.y - 10;
break;
}
}
}
void BulletMove(int speed)
{
for (int i = 0; i < BULLET_NUM; i++)
{
if (bullet[i].flag == true)
{
bullet[i].y -= speed;
if (bullet[i].y <= 0)
{
bullet[i].flag = false;
}
}
if (bullet2[i].flag == true)
{
bullet2[i].y -= speed;
if (bullet2[i].y <= 0)
{
bullet2[i].flag = false;
}
}
if (count2 == 15)
{
if (bullet3[i].flag == true)
{
bullet3[i].y -= speed;
if (bullet3[i].y <= 0)
{
bullet3[i].flag = false;
}
}
if (bullet4[i].flag == true)
{
bullet4[i].y -= speed;
if (bullet4[i].y <= 0)
{
bullet4[i].flag = false;
}
}
}
}
}
void CreateEnemy()
{
for (int i = 0; i < ENEMYPLANE_NUM; i++)
{
if (enemy[i].flag == 0)
{
enemy[i].flag = true;
enemy[i].x = rand() % (WIN_WIDTH - 100);
enemy[i].y = 0;
EnemyHP(i);
break;
}
}
}
void EnemyMove(int speed)
{
for (int i = 0; i < ENEMYPLANE_NUM; i++)
{
if (enemy[i].flag)
{
enemy[i].y += speed;
if (rand() % 10 == 0 && enemy[i].x > 3 && enemy[i].y < WIN_WIDTH)
enemy[i].x += 10;
if (rand() % 11 == 0 && enemy[i].x >= 0 && enemy[i].y < WIN_WIDTH)
enemy[i].x -= 15;
if (enemy[i].y >= WIN_HEIGHT)
{
enemy[i].flag = false;
}
if ((rand() % 100) == 1)
{
enemyCreateBullet(enemy[i]);
}
}
}
}
void GameControl(int speed)
{
if (GetAsyncKeyState(VK_UP) && player.y >= 0)
{
player.y -= speed;
}
if (GetAsyncKeyState(VK_DOWN) && player.y + 120 <= WIN_HEIGHT)
{
player.y += speed;
}
if (GetAsyncKeyState(VK_LEFT) && player.x + 50 >= 0)
{
player.x -= speed;
}
if (GetAsyncKeyState(VK_RIGHT) && player.x + 55 <= WIN_WIDTH)
{
player.x += speed;
}
if (GetAsyncKeyState(VK_ESCAPE))
{
while (1)
{
Sleep(300);
if (GetAsyncKeyState(VK_ESCAPE))
break;
}
}
if (GetAsyncKeyState(VK_SPACE) && t2 - t1 > 100)
{
CreateBullet();
HANDLE threadID = CreateThread(NULL, 0, PlayGun, a, 0, 0);
CloseHandle(threadID);
t1 = t2;
}
t2 = GetTickCount();
if (count2 == 15)
m = 200;
if (t4 - t3 > rand() % 500 + m)
{
CreateEnemy();
t3 = t4;
}
t4 = GetTickCount();
t7 = GetTickCount();
if (t7 - t8 > 25000)
count = 1;
if (t6 - t5 > 10 || t7 - t8 == 10000)
{
if (count2 == 15)
EnemyMove(3);
else
{
EnemyMove(1);
}
if (count)
enemyBulletMove(7);
else if (count2 == 15)
enemyBulletMove(5);
else
enemyBulletMove(2);
t5 = t6;
}
t6 = GetTickCount();
if (count == 10)
BulletMove(7);
else
BulletMove(4);
}
void PlayEnemyP()
{
for (int i = 0; i < ENEMYPLANE_NUM; i++)
{
if (enemy[i].flag == 0)
{
continue;
}
for (int k = 0; k < BULLET_NUM; k++)
{
if (bullet[k].flag == 0)
{
continue;
}
if (bullet[k].x + 19 > enemy[i].x &&
bullet[k].x < enemy[i].x + 52 && bullet[k].y + 24>enemy[i].y
&& bullet[k].y < enemy[i].y + 39 || bullet2[k].x + 19 > enemy[i].x &&
bullet2[k].x < enemy[i].x + 52 && bullet2[k].y + 24>enemy[i].y
&& bullet2[k].y < enemy[i].y + 39 || bullet3[k].x + 19 > enemy[i].x &&
bullet3[k].x < enemy[i].x + 52 && bullet3[k].y + 24>enemy[i].y
&& bullet3[k].y < enemy[i].y + 39 || bullet4[k].x + 19 > enemy[i].x &&
bullet4[k].x < enemy[i].x + 52 && bullet4[k].y + 24>enemy[i].y
&& bullet4[k].y < enemy[i].y + 39)
{
if (bullet[k].x + 19 > enemy[i].x &&
bullet[k].x < enemy[i].x + 52 && bullet[k].y + 24>enemy[i].y
&& bullet[k].y < enemy[i].y + 39)
{
enemy[i].hp--;
bullet[k].flag = 0;
}
if (bullet2[k].x + 19 > enemy[i].x &&
bullet2[k].x < enemy[i].x + 52 && bullet2[k].y + 24>enemy[i].y
&& bullet2[k].y < enemy[i].y + 39 && enemy[i].hp>0)
{
enemy[i].hp--;
bullet2[k].flag = 0;
}
if (enemy[i].hp <= 0)
{
player.count++;
player.un.score++;
}
if (player.un.score > 0 && player.un.score % 31 == 0 && player.un.score % 2 != 0)
{
HANDLE threadID = CreateThread(NULL, 0, PlayGun, a + 1, 0, 0);
CloseHandle(threadID);
}
if (player.un.score % 40 == 0)
{
HANDLE threadID = CreateThread(NULL, 0, PlayGun, a + 2, 0, 0);
CloseHandle(threadID);
}
}
if (enemy[i].hp <= 0)
{
enemy[i].flag = 0;
if (enemy[i].un.type == TYPE::BIG)
{
int count1 = 0;
for (int h = 0; h < ENEMYPLANE_NUM; h++)
{
if (enemy[h].flag == 0)
{
enemy[h].flag = true;
enemy[h].x = enemy[i].x + rand() % 40;
enemy[h].y = enemy[i].y + rand() % 40;
EnemyHP(h);
if (enemy[h].un.type == TYPE::SMALL)
count1++;
else
enemy[h].flag = false;
if (count1 == 2)
break;
}
}
}
}
if (player.count == 15)
{
player.hp += 5; count2 = player.count;
player.count = 0;
}
}
}
}
void PlayerDie()
{
if (player.flag == false)
{
if (player.un.score > h)
write_file();
MessageBox(GetHWnd(), "挂掉了哦·", "Over", MB_OKCANCEL);
mciSendString("close BGM ", 0, 0, 0);
startmenu();
}
if (player.hp <= 0)
{
player.flag = false;
}
for (int i = 0; i < ENEMYPLANE_NUM; i++)
{
if (enemy[i].flag)
if (player.x + 50 >= enemy[i].x && player.x + 50 <= enemy[i].x + enemy[i].width
&& player.y > (enemy[i].y - enemy[i].height) && player.y < enemy[i].y + enemy[i].height)
{
player.hp -= 5;
enemy[i].flag = false;
}
}
for (int i = 0; i < BULLET_ENEMY_NUM; i++)
{
if (enemyBullet[i].flag)
{
if (enemyBullet[i].x > player.x && enemyBullet[i].x <= player.x + player.width
&& enemyBullet[i].y >= player.y && enemyBullet[i].y < player.y + player.height)
{
player.hp--;
enemyBullet[i].flag = false;
break;
}
}
}
}
void menu_word2()
{
gotoxy(3, 18);
changecolor(14);
printf(" 请做出你的选择!");
}
void read_file()
{
FILE* fp;
fp = fopen("Desktop.txt", "a+");
fscanf_s(fp, "%d", &h);
fclose(fp);
}
void write_file()
{
FILE* fp;
fp = fopen("Desktop.txt", "w+");
fprintf(fp, "%d", player.un.score);
fclose(fp);
}
void startmenu()
{
mciSendString("open ./images/a.mp3 alias BGM", 0, 0, 0);
mciSendString("play BGM repeat", 0, 0, 0);
system("cls");
ShowCursor();
char chCmd[32];
sprintf_s(chCmd, "mode con cols=%d lines=%d", 117, 34);
system(chCmd);
read_file();
ZHTsnake();
menu_word2();
laotie();
startmenu_options();
}
void highestscore()
{
system("cls");
char chCmd[32];
sprintf_s(chCmd, "mode con cols=%d lines=%d", 50, 25);
system(chCmd);
changecolor(14);
gotoxy(5, 5);
printf("Your highest score is %d.\n\n", h);
gotoxy(1, 9);
printf("Press space back to the menu......");
gotoxy(35, 9);
int cha = _getch();
while (cha != 0x0d || cha == 0xE0)
{
cha = _getch();
}
system("cls");
startmenu();
}
void startgame()
{
t8 = t7;
count2 = 0; count = 0;
mciSendString("close BGM ", 0, 0, 0);
initgraph(WIN_WIDTH, WIN_HEIGHT, SHOWCONSOLE);
GameInit();
BeginBatchDraw();
while (1)
{
Gamedraw();
FlushBatchDraw();
if (count2 == 15)
GameControl(3);
else
GameControl(1);
PlayEnemyP();
PlayerDie();
FlushBatchDraw();
}
EndBatchDraw();
startmenu();
}
void choices_1(int a)
{
int ch = _getch();
while (ch != 0x0d || ch == 0xE0)
{
ch = _getch();
if (ch == 0x48 && a > 20)
{
a -= 2;
gotoxy(6, a);
}
if (ch == 0x50 && a < 26)
{
a += 2;
gotoxy(6, a);
}
}
switch (a)
{
case 20:startgame(); break;
case 22:instruction(); break;
case 24:highestscore(); break;
case 26: gotoxy(2, 30); exit(0); break;
}
}
void startmenu_options()
{
changecolor(9);
gotoxy(6, 20);
printf("◆开始游戏◆\n");
gotoxy(6, 22);
printf("◆游戏介绍◆\n");
gotoxy(6, 24);
printf("◆得分记录◆\n");
gotoxy(6, 26);
printf("◆退出游戏◆\n");
gotoxy(6, 20);
choices_1(20);
}
DWORD WINAPI PlayGun(LPVOID lparamter)
{
int* choose = (int*)lparamter;
printf("%d \n", *choose);
if (*choose == 1)
{
mciSendString("close f_gun", NULL, 0, NULL);
mciSendString("open ./images/f_gun.mp3 alias f_gun", NULL, 0, NULL);
mciSendString("play f_gun", NULL, 0, NULL);
}
else if (*choose == 2)
{
mciSendString("close 5music", NULL, 0, NULL);
mciSendString("open ./images/5.mp3 alias 5music", NULL, 0, NULL);
mciSendString("play 5music", NULL, 0, NULL);
}
else if (*choose == 3)
{
mciSendString("close 10music", NULL, 0, NULL);
mciSendString("open ./images/10.mp3 alias 10music", NULL, 0, NULL);
mciSendString("play 10music", NULL, 0, NULL);
}
return 0;
}
void enemyCreateBullet(Plane belong)
{
for (int i = 0; i < BULLET_ENEMY_NUM; i++)
{
if (enemyBullet[i].flag == false)
{
enemyBullet[i].flag = true;
enemyBullet[i].x = belong.x + belong.width / 2 - 10;
enemyBullet[i].y = belong.y;
if (count && count2 == 15)
{
enemyBullet2[i].flag = true;
enemyBullet2[i].x = belong.x + belong.width / 2 + 10;
enemyBullet2[i].y = belong.y;
}
break;
}
}
}
void enemyBulletMove(int speed)
{
int tspeed = speed * 2;
for (int i = 0; i < BULLET_ENEMY_NUM; i++)
{
if (enemyBullet[i].flag == true)
{
enemyBullet[i].y += tspeed;
if (enemyBullet[i].y > WIN_HEIGHT)
{
enemyBullet[i].flag = false;
}
}
if (count && count2 == 15)
if (enemyBullet2[i].flag == true)
{
enemyBullet2[i].y += tspeed;
if (enemyBullet2[i].y > WIN_HEIGHT)
{
enemyBullet2[i].flag = false;
}
}
}
}