bug极多的飞机大战

bug极多,及其不完善的飞机大战

#include<iostream>
#include<ctime>
#include<Windows.h>
#include<stdlib.h>
#include<conio.h>
#include <graphics.h>
#include<cmath>
using namespace std;
int boundary_x = 481, boundary_y = 701;//边界大小
int arr[701][481] = { 0 };
int show[701][481] = { 0 };
int player_x,player_y;//玩家位置
float enemy_x, enemy_y;//0x,1y,3子弹;
int bullet_x=-1,bullet_y=-1;//子弹
int enemy_limit = 30, enemy_sleep = 0;//敌机速度
int bullet_limit = 50, bullet_sleep = 0;//敌子弹速度
int flag = 0;
IMAGE img_bd1, img_bd2;//玩家
IMAGE img_bk;//界面
IMAGE img_bg1, img_bg2;//我方子弹
IMAGE img_enemy1, img_enemy2;//敌人
void HideCursor()
{
	HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
	CONSOLE_CURSOR_INFO CursorInfo;
	GetConsoleCursorInfo(handle, &CursorInfo);//获取控制台光标信息
	CursorInfo.bVisible = false; //隐藏控制台光标
	SetConsoleCursorInfo(handle, &CursorInfo);//设置控制台光标状态
}
void gotoxy(int x, int y)//光标移动到(x,y)的位置
{
	HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
	COORD pos;
	pos.X = x;
	pos.Y = y;
	SetConsoleCursorPosition(handle, pos);
}
void starup()
{
	initgraph(480, 700);
	loadimage(&img_bk, "D:\\piture\\backbround.bmp");
	loadimage(&img_bd1, "D:\\piture\\player1.bmp");
	loadimage(&img_bd2, "D:\\piture\\player11.bmp");
	loadimage(&img_bg1, "D:\\piture\\bullet1.bmp");
	loadimage(&img_bg2, "D:\\piture\\bullet11.bmp");
	loadimage(&img_enemy1, "D:\\piture\\enemy1.bmp");
	loadimage(&img_enemy2, "D:\\piture\\enemy131.bmp");
	BeginBatchDraw();
}
void showup()//显示画面
{	
	 putimage(0, 0, &img_bk);
	putimage(player_x,player_y, &img_bd2, NOTSRCERASE);
	putimage(player_x, player_y, &img_bd1, SRCINVERT);
		int x, miny,maxy;
		if (enemy_y < 0)
			miny = 0;
		else
		{
			miny = enemy_y;
		}
		if (enemy_y + 44 > 700)
			maxy = 699;
		else
			maxy = enemy_y + 44;
		for (; miny <= maxy; miny++)
		{
			for (x = enemy_x - 29; x <= enemy_x + 29; x++)
			{
				arr[miny][x] = 0;
			}
		}
		enemy_y+=0.1;	
		if (ceil(enemy_y) < 0)
			miny = 0;
		else
		{
			miny = ceil(enemy_y);
		}
		if (ceil(enemy_y) + 44 > 700)
			maxy = 699;
		else
			maxy = ceil(enemy_y) + 44;
		for (; miny <= maxy; miny++)
		{
			for (x = ceil(enemy_x) - 29; x <= ceil(enemy_x) + 29; x++)
			{
				arr[miny][x] = 3;
			}
		}
		if (enemy_y == 700)
		{
			enemy_x = rand() % 422 + 29;
			enemy_y = -44;
		}
		putimage(enemy_x-29, enemy_y, &img_enemy2, NOTSRCERASE);
		putimage(enemy_x-29, enemy_y, &img_enemy1, SRCINVERT);
		
	for (int a = 0; a < 700; a++)
		for (int b = 0; b < 480; b++)
		{
			if (b == 0 && arr[a][b] == 2)
				arr[a][b] = 0;
			else if (arr[a][b] == 2)
			{
				if (arr[a - 1][b] == 3)
				{
					int x, miny, maxy;
					if (ceil(enemy_y) < 0)
						miny = 0;
					else
					{
						miny = ceil(enemy_y)-1;
					}
					if (ceil(enemy_y) + 44 > 700)
						maxy = 699;
					else
						maxy = ceil(enemy_y) + 44;
					for (; miny <= maxy; miny++)
					{
						for (x = ceil(enemy_x) - 29; x <= ceil(enemy_x) + 29; x++)
						{
							arr[miny][x] = 0;
						}
					}
					enemy_x = rand() % 422 + 29;
					enemy_y = -44;
				}
				arr[a][b] = 0;
				arr[a - 1][b] = 2;
				bullet_y = a, bullet_x = b;
				putimage(bullet_x, bullet_y, &img_bg2, NOTSRCERASE);
				putimage(bullet_x, bullet_y, &img_bg1, SRCINVERT);
			}
		}

	FlushBatchDraw();
}
void updateWithInuput()//与输入有关操作
{
	MOUSEMSG m;
	while (MouseHit())
	{
		m = GetMouseMsg();
		if (m.uMsg == WM_MOUSEMOVE)
		{
			int minx, maxx, miny, maxy;
			if (player_x - 23 <= 0)
			{
				minx = 24;
				maxx = 70;
			}
			else if (player_x + 23 >= 480)
			{
				maxx = 640;
				minx = 594;
			}
			else
			{
				minx = player_x - 23;
				maxx = player_x + 23;
			}
			if (player_y - 28 <= 0)
			{
				miny = 29;
				maxy = 85;
			}
			else if (player_y + 29 >= 700)
			{
				maxy = 700;
				miny = 644;
			}
			else
			{
				maxy = player_y + 29;
				miny = player_y - 28;
			}
			for (int a = miny; a < maxy; a++)
			{
				for (int b = minx; b < maxx; b++)
					arr[a][b] = 0;
			}
			if (m.x - 23 < 0)
				m.x = 23;
			else if (m.x + 23 > 480)
				m.x = 456;
			if (m.y - 28 < 0)
				m.y = 28;
			else if (m.y + 28 > 700)
				m.y = 670;
			player_x = m.x-23, player_y = m.y-28;
			for (int a = player_y; a <= player_y + 29; a++)
			{
				for (int b = player_x; b <= player_x + 23; b++)
					if (arr[a][b] == 3)//撞到敌机
					{
						flag = 1;
						break;
					}
					else
					arr[a][b] = 1;
				if (flag == 1)
					break;
			}
		}
		if (m.uMsg == WM_LBUTTONDOWN)
		{
			bullet_x = m.x;
			bullet_y = m.y;
			arr[m.y-2][m.x] = 2;
		}
	}
}
void updateWithoutInput()//与输入无关操作
{
	if (bullet_y > -1)
		bullet_y--;
}
int main()
{
	srand(time(0));
	starup();
	enemy_x = rand() % 422 + 29;
	enemy_y = -44;
	while (1)
	{
		showup();
		updateWithoutInput();
		updateWithInuput();
		if (flag == 1)
			break;
	}
	EndBatchDraw();
	getch();
	closegraph();

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值