打飞机2

封装了rand函数,使得靶子随机移动,不知道为啥跳动,

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int rand(int min, int max);
int main()
{
	int i, j;
	int x = 22;
	int y = 2;
	char input;
	int isFire = 0;

	int nx = 5;
	int ny = 5; // 一个靶子,放在第一行,ny列上
	int isKilled = 0;
	while (1)
	{
		system("cls");   // 清屏函数

		if (!isKilled)  // 输出靶子
		{
		for (int k = 0; k<nx; k++)
			// printf(" "); nx方向时换行而不是空格,傻瓜!
			printf("\n");
			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; // 击中靶子
				nx = rand(3, 10);
				ny = rand(16,50);   //重置靶子
				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;
}
int rand(int a, int b)
{
	if (a > b || a < 3 || b < 3)
	{
		return -1;
	}
	return rand() * b / RAND_MAX + a;
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
飞机(Fighter)是一款有趣又益智的游戏。它可以培养游戏者的逻辑推理能力,适合各种年龄段的人玩。 该游戏原本是我读本科时在宿舍里和同学一起玩的。需要两人以上合作,互相布局互相“开炮”。非常好玩。这次,我把游戏改成计算机版本,(可选计算机自动布局和手动布局两种模式),可以单机玩,也可以由别人布局在由你玩。 1、游戏界面 游戏启动后左边为10×10的“天空”,其中暗藏了三架以“士”字形分布的飞机,其中红色块表示飞机头,灰色块表示其他机身部位,黑色块表示此格无飞机,为空。 主窗口右边顶端分布六个按钮,表示各种功能。 开始:开始一局新游戏。缺省状态为由计算机自动布局。 保存:表示保存当前游戏中的飞机布局。你在玩游戏时可能觉得某一次飞机的布局特别巧妙,很难推出飞机头所在。你就可以利用本功能把该飞机布局保存下来,发给你的朋友,考考他的推理能力。 载入:载入飞机布局的文件,载入完毕后直接开始。 布局:手动布局。请按“士”字形在10×10的“天空”中分布好飞机,然后点击“开始”。游戏将自动检测飞机布局是否正确。 选项:选项里面包含许多信息。“设置”栏包括是否打开音效,是否在桌面上创建快捷方式,以及选择老板键打开的文件。“鼠标操作”栏提示游戏的鼠标操作;“关于”栏说明游戏的一些版权信息。 退出:离开本游戏。 游戏界面右下脚为游戏信息区,显示游戏的一些提示信息。再下面是游戏结果显示区。 鼠标操作: 游戏进行中: 左键双击:发炮弹。在推断飞机特别是在机头的所在格后请果断“开炮”。 左键单机:游戏中的辅助功能。用于表示你推断所点击的那格有飞机。再次点击取消推测。 右键单击:游戏中的辅助功能。用于表示你推断所点击的那格没有飞机。再次点击取消推测。 游戏手动布局中: 左键单击:表示该格分布为飞机头。再次点击取消该格布局。 右键单击:表示该格分布为飞机的其他机身部位。再次点击取消该格布局。 键盘操作: Enter、Escape:退出游戏。退出之前需要确认。 F2:重新启动新游戏。 Q、q:老板键,哈哈。老板过来时按此键游戏自动变小为任务栏上的小图标,随后自动打开一个cpp文件(或txt文件,由你在“选项”对话框中指定)“假装”你刚才在编程序。 玩法: 点击“开始”进行新游戏(技巧:可以直接双击“天空”开始)。然后双击“天空”。你需要分析已发炮弹的命中情况来推断三架飞机的机头。只有击中飞机头,才算击落该飞机。你的任务就是用最少的炮弹击落三架飞机。 游戏进行过程中会自动记录已发炮弹数,已击落飞机和炮弹命中率。 三架飞机均被击落后,游戏根据炮弹数进行排行。若进入前十名,则跳出对话框输入你的姓名,进入排行榜。 作者信息: 本游戏为自由软件。源代码公开,需要者可以向作者email联系。若你有其他建议,务必发email至:xiaogi@sohu.com 也欢迎访问作者主页:http://xiaogi.nease.net

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值