1. 程式人生 > >【c語言】小程式遊戲——飛機遊戲(三)

【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;
			}	
	}

                                從編譯效果,敵機下落速度有明顯的降低

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

至此,我們的小程式飛機遊戲也就基本完成,但程式仍有很多需要改進的地方

比如  敵機碰到飛機後,需要有些什麼樣的反應?

         在擊落敵機後,是否需要顯示分數和時間?

         是否可以根據關卡來設定不同的難度?

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

而更多的問題,仍需要在以後的時間裡繼續完善,使得一款完美的遊戲真正地誕生於自己手裡