打飞机小游戏C语言实现

scanf控制飞机

#include<stdio.h>
#include<stdlib.h>

int main()
{
	int i, j;
	int x = 5;
	int y = 10;
	char input;
	
	while(1)
	{
		system("cls");
		for(i = 0; i < x; i++)
			printf("\n");
		for(j = 0; j < y; j++)
			printf(" ");
		printf("*");
		printf("\n");
		
		scanf("%c", &input);
		if(input == 'a')
			y--;
		if(input == 'd')
			y++;
		if(input == 'w')
			x--;
		if(input == 's')
			x++;
	}
	return 0;
}

很明显,你需要输入字母后再敲击回车,这样游戏体验感非常不好,所以我们引入getch函数

getch控制飞机移动

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>

int main()
{
	int i, j;
	int x = 5;
	int y = 10;
	char input;
	
	while(1)
	{
		system("cls");
		for(i = 0; i < x; i++)
			printf("\n");
		for(j = 0; j < y; j++)
			printf(" ");
		printf("*\n");
		
		if(kbhit())				//判断是否有输入 
		{						//用户有键盘输入时返回1,否则返回0 
			input = getch();	//不需要回车就可以得到输入的控制字符 
			if(input == 'a')
				y--;
			if(input == 'd')
				y++;
			if(input == 'w')
				x--;
			if(input == 's')
				x++;
		}
	}
	return 0;
 } 

有没有觉得我们的飞机太丑了,只有一个点,那么我们来升级一下

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>

int main()
{
	int i, j;
	int x = 5;
	int y = 10;
	char input;
	
	while(1)
	{
		system("cls");
		for(i = 0; i < x; i++)
			printf("\n");
		for(j = 0; j < y; j++)
			printf(" ");
		printf("*\n");
		
		for(j = 0; j < y - 2; j++)
			printf(" ");
		printf(" * *\n");
		for(j = 0; j < y - 2; j++)
			printf(" ");
		printf("* * *\n");
		for(j = 0; j < y - 6; j++)
			printf(" ");
		printf("* * * * * * *\n");
		for(j = 0; j < y - 8; j++)
			printf(" ");
		printf("* * * * * * * * *\n");		
		for(j = 0; j < y- 1; j++)
			printf(" ");
		printf("* * \n");
		
		if(kbhit())
		{
			input = getch();
			if(input == 'a')
				y--;
			if(input == 'd')
				y++;
			if(input == 'w')
				x--;
			if(input == 's')
				x++;
		}
	}
	return 0;
 } 

在这里插入图片描述
是不是很帅
接下来我们就要射了(激光射线搞上)

激光飞机

空格表示射击

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>

int main()
{
	int i, j;
	int x = 5;
	int y = 10;
	char input;
	int isFire = 0;
	
	while(1)
	{
		system("cls");
		if(isFire == 0)
		{
			for(i = 0; i < x; i++)
				printf("\n");
		}
		else
		{
			for(i = 0; i < x; i++)
			{
				for(j = 0; j < y; j++)
					printf(" ");
				printf("|\n");
			}
			isFire = 0;
		}
		
		for(j = 0; j < y; j++)
			printf(" ");
		printf("*\n");
		for(j = 0; j < y - 2; j++)
			printf(" ");
		printf(" * *\n");
		for(j = 0; j < y - 2; j++)
			printf(" ");
		printf("* * *\n");
		for(j = 0; j < y - 6; j++)
			printf(" ");
		printf("* * * * * * *\n");
		for(j = 0; j < y - 8; j++)
			printf(" ");
		printf("* * * * * * * * *\n");		
		for(j = 0; j < y- 1; j++)
			printf(" ");
		printf("* * \n");
		if(kbhit())
		{
			input = getch();
			if(input == 'a')
				y--;
			if(input == 'd')
				y++;
			if(input == 'w')
				x--;
			if(input == 's')
				x++;
			if(input == ' ')
				isFire = 1;
		}
	}
	return 0;
}

传送门:

发射激光的飞机

打靶练习

既然我们的飞机都升级成功了,弹药也配备充足的,接下来就是……

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>

int main()
{
	int i, j;
	int x = 5;
	int y = 10;
	int isFire = 0;
	char input;
	
	int ny = 30;
	int isKilled = 0;
	
	while(1)
	{
		system("cls");
		if(!isKilled)
		{
			for(j = 0; j < ny; j++)
				printf(" ");
			printf("+\n");
		}
		
		if(isFire == 0)
		{
			for(i = 0; i < x; i++)
				printf("\n");
		}
		else
		{
			for(i = 0; i < x; i++)
			{
				for(j = 0; j < y; j++)
				{
					printf(" ");
				}
				printf("|\n");
			}
			if(y == ny)
				isKilled = 1;
			isFire = 0;
		}
		for(j = 0; j < y; j++)
			printf(" ");
		printf("*\n");
		for(j = 0; j < y - 2; j++)
			printf(" ");
		printf(" * *\n");
		for(j = 0; j < y - 2; j++)
			printf(" ");
		printf("* * *\n");
		for(j = 0; j < y - 6; j++)
			printf(" ");
		printf("* * * * * * *\n");
		for(j = 0; j < y - 8; j++)
			printf(" ");
		printf("* * * * * * * * *\n");		
		for(j = 0; j < y- 1; j++)
			printf(" ");
		printf("* * \n");
		if(kbhit())
		{
			input = getch();
			if(input == 'a')
				y--;
			if(input == 'd')
				y++;
			if(input == 'w')
				x--;
			if(input == 's')
				x++;
			if(input == ' ')
				isFire = 1;
		}
	}
	return 0;
}

激光飞机打靶游戏

如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持,明天我们不见不散!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值