打飞机

 

#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;
	
	int ny = 5; // 一个靶子,放在第一行,ny列上
	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+2==ny)  // +2是因为激光在飞机的正中间,距最左边2个坐标
				isKilled = 1; // 击中靶子
			isFire = 0;
		}
		
		// 下面输出一个复杂的飞机图案
		for (j=0;j<y;j++)
			printf(" ");		
		printf("  *\n");
		for (j=0;j<y;j++)
			printf(" ");
		printf("*****\n");
		for (j=0;j<y;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 = 15;
	int y = 2;
	char input;
	int isFire = 0;

	int ny = 5; // 一个靶子,放在第一行,ny列上
	int isKilled = 0;

	while (1)
	{
		system("cls");   // 清屏函数

		//if (!isKilled)  // 输出靶子
		//{
			for (j = 0; j<ny; j++)
				printf(" ");
			printf("X\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 + 2 == ny)  // +2是因为激光在飞机的正中间,距最左边2个坐标
			{
				//isKilled = 1; // 击中靶子
				ny = rand()*27/RAND_MAX+6;   //重置靶子
				//isKilled = 0;
			}
			isFire = 0;
		}

		// 下面输出一个复杂的飞机图案
		for (j = 0; j<y; j++)
			printf(" ");
		printf("  *\n");
		for (j = 0; j<y; j++)
			printf(" ");
		printf("*****\n");
		for (j = 0; j<y; j++)
			printf(" ");
		printf(" * * \n");


		if (kbhit())  // 判断是否有输入
		{
			input = getch();  // 根据用户的不同输入来移动,不必输入回车
			//scanf("%c", &input); //需要回车移动
			if (input == 'a')
				y--;  // 位置左移
			if (input == 'd')
				y++;  // 位置右移
			if (input == 'w')
				x--;  // 位置上移
			if (input == 's')
				x++;  // 位置下移
			if (input == ' ')
				isFire = 1;
		}
	}
	return 0;
}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值