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

【c語言】小程式遊戲——飛機遊戲(一)

        下面來介紹一個簡單的遊戲,其中用到的c語言知識屬於基礎內容,所以特別容易上手

                                            ~~~~~~~飛機遊戲~~~~~~~~~

首先按照常理我們知道,肯定要在介面上繪製出一個飛機,我們用“*”符號來簡單代表就OK。

               我們知道,在視窗的座標系原點是在視窗左上角的,如圖所示

                        

所以我們如果想在這個座標系裡面的某個點上畫出一個飛機,那麼它的座標系應該就是這樣的

                  

根據前一篇文章的介紹,如果轉化為c語言的話,就需要:X0既是打印出X0個“\n”,Y0既是打印出Y0個空格!!!!

                                然鵝

                               我們可以使用更為簡便的方式實現這個效果

 可是在此之前,我們需要初始化一些資料

 比如遊戲的介面有多大、飛機的初始位置在什麼地方等

 所以,初始化程式碼如下

int height=0,weight=0;
int position_x=0,position_y=0;


void init()
{
	height = 20;
	weight = 20;
	position_x=height/2;
	position_y=weight/2;

}

        初始化完成之後,我們就可以確定飛機的初始位置了,改進後的程式碼如下

 for(int i=0;i<height;i++)
   {
		for(int j=0;j<weight;j++)
		{
			if((i == position_x) && (j == position_y))
				printf("*");
			else 
				printf(" ");
		}
		printf("\n");
   }

                             編譯時成功了,但是的出來的結果是你們想要的那樣嗎?

               

                             由結果可知,程式是會一直往下列印“*”號,沒有終點

                                                   這是為什麼呢?

       大神們都知道,編譯器是從上往下一直執行程式碼的,所以打印出來的結果自然也是一直往下列印的啦!

       所以,如果我們想要讓飛機一直停留在視窗前面的話有什麼辦法呢?

                                      vc6裡面有個東西叫做清屏函式

             一個用於輸出完一次結果之後就把結果清除,在重新輸出,再清除的函式

                                             還有一個叫游標移動函式

                一個用於把游標固定在某個位置,就不會一直閃屏的函式

                   VC中的清屏函式和游標移動函式(俗稱gotoxy()),如下

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

void gotoxy(int x,int y)
{
    COORD pos;
    pos.X = x;
    pos.Y = y;
    HANDLE out = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleCursorPosition(out,pos);
}

void main()
{
    system("cls");//清屏函式
    gotoxy(0,0);//游標移動函式
}

新增完上面的函式之後,再次編譯結果,就可以看到飛機已經可以正常地出現在規定的位置啦

在接下來,我們還需要對“飛機”這個類新增屬性,然後增加敵機、發射鐳射、計算分數等,詳細請看小程式遊戲——飛機遊戲(二)