【c语言】小程序游戏——飞机游戏(三)

                                      接下来,我们需要在进行以下操作:

                                                1.在程序里面添加敌机

                                                2.为敌机添加基本属性

————————————————————————————————————————

                                               NO.1在程序里面添加敌机

                              国际惯例,我们需要对敌机的位置设置一个初始值

int enemy_x = 0;
int enemy_y = weight/2;

       其中敌机的Y轴坐标根据之前的博客设定为weight的一半,当然,你也可以自己随意设定任何位置

                               初始化之后,我们就可以在把敌机显示在窗口上


   for(int i=0;i<height;i++)
   {
		for(int j=0;j<weight;j++)
		{
			if((i == enemy_x) && (j == enemy_y))
				printf("O");
			else 
				printf(" ");
		}
		printf("\n");
   }

                            编译结果可以看出,我们的敌机“O”出现在飞机的正上方

                           

                           第一步非常地简单,我们很快就把敌机给显示出来了

—————————————————————————————————————————————————————

        然而,简单地把敌机显示出来并不能为我们带来游戏的体验,我们还需要在激光打中敌机时,我们的敌机需要消失,才能显示出这个游戏的意义

—————————————————————————————————————————————————————

                                             No.2 为敌机添加基本属性

Step1:敌机消失机制

           我们可以设定为,当激光的坐标位置和敌机的坐标位置恰好相等时,敌机和激光都置于窗口坐标轴外

                         根据这种设想,我们可以添加以下代码,并实验是否可行

if((bullet_x == enemy_x) && (bullet_y == enemy_y))
	{
		enemy_x = enemy_y = -1;
		bullet_x = bullet_y = -1;
	}

      编译结果可知,当激光发射到敌机位置时,敌机和激光都消失了,敌机初步设定完成

                          

Step2:敌机随机生成

             当敌机被消灭时,我们还需要不断地补充敌机,才能让游戏继续下去

     这时我们可以使用随机函数rand()来让敌机的位置随机确定,使得根据游戏性

     但如果我们在使用随机函数时,之前确定的位置便不能再用,所以,我们对激光消灭敌机时的位置进行重新调整

	if((bullet_x == enemy_x) && (bullet_y == enemy_y))
	{
		enemy_x = 0;
		enemy_y = rand() % weight;
		bullet_x = bullet_y = -1;
	}

  实验结果可知,当敌机被消灭时,程序会随机在某个位置再次生成敌机,以确保游戏性

                        

Step3:敌机下落

             如果敌机只是简单地固定于某个位置时,我们的难度将不是很大,所以,我们需要给敌机添加一个下落的属性,使得游戏难度增加

而在设定下落时,我们需要知道,当敌机下落到超出游戏窗口范围时,我们应该怎么办

            在这里,我们可以设定:当敌机超出窗口范围时,敌机位置重新恢复到初始化状态,程序再次生成新的敌机

              

                                                 所以应当添加以下代码

if(enemy_x > height)
	{
		enemy_x = 0;
		enemy_y = rand() % weight;
	}
	else
	{
		enemy_x ++;
	}

        编译结果可以看到,效果和我们想象中的差不多,但是有点不一样:下落速度过快

                           

                    这样的结果会让飞机还没到达规定的位置,敌机就已经下落出窗口

                              为此,我们还需要对敌机的下落速度进行限制

	if(enemy_x > height)
	{
		enemy_x = 0;
		enemy_y = rand() % weight;
	}
	else
	{

		 static int speed = 0;

			if(speed < 7)
				speed ++ ;

			if(speed == 7)
			{
				enemy_x ++;
				speed = 0;
			}	
	}

                                从编译效果,敌机下落速度有明显的降低

————————————————————————————————————————————————————

至此,我们的小程序飞机游戏也就基本完成,但程序仍有很多需要改进的地方

比如  敌机碰到飞机后,需要有些什么样的反应?

         在击落敌机后,是否需要显示分数和时间?

         是否可以根据关卡来设置不同的难度?

         ............................................................

而更多的问题,仍需要在以后的时间里继续完善,使得一款完美的游戏真正地诞生于自己手里

猜你喜欢

转载自blog.csdn.net/qq_41884002/article/details/82992677