第一步,控制飛機移動
還記得小時候玩的飛機大戰遊戲嗎?按a、s、d、w鍵後控制飛機的上下左右移動。
在這裡我們通過按a、s、d、w鍵來改變座標x,y的值,從而控制飛機的移動。
下面是代碼:
下面是實現效果:可以實現飛機的上下左右移動
(小編推薦一個學C語言/C++的學習群:639912742,入群即送C/C++全套學習資料,滿滿的乾貨!)
在上面的代碼中,用到了以下幾個函數:
1:輸入函數getch(),頭文件(#include<conio.h>)
與scanf函數相比,getch()不需要回車就可以得到輸入的字符。
2:kbhit()函數
它的作用是在用戶有鍵盤輸入時返回1,否則返回0;在沒有鍵盤輸入時if(kbhit())下面的語句不會運行,從而避免了用戶不輸入,遊戲就暫停的情況
至於輸出飛機圖案的那段代碼,就不用細說了吧?就是數學問題。
看著挺多,其實可以分為兩個部分,一部分是輸出飛機圖案,另外一部分是控制飛機的移動。
第二步,讓飛機發射激光
我們接下來要實現的是當我們按下空格鍵時,飛機可以發射激光子彈。
在這裡我們通過定義一個變量"isFire"用來記錄飛機是否處於發射子彈的狀態。
這裡我們要對兩個部分都增加一部分代碼:
第一部分,新增加了一個變量isFire,同時利用了if判斷語句,
當變量isFire為0時,即沒有發射子彈,執行與原來一樣的操作,輸出飛機上面的空格即可。
而當變量isFire為1時,飛機發射子彈。我們就需要執行else下面的操作,輸出激光。
第二部分,增加當用戶輸入空格時,變量isFire的值變為1。
這是最後的執行效果:
第三步,增加打靶操作
我們可以增加一個靶子‘+’,來控制我們的飛機發射激光擊中它。
在這裡,我們新增一個變量isKilled用來儲存靶子是否被擊中。
當isKilled為0時顯示靶子,當isKilled為1時靶子消失。
這是我們要增加的代碼:
首先新增兩個變量,
增加輸出靶子的代碼:
增加擊中靶子後的效果:
這是最後的效果圖:
(小編推薦一個學C語言/C++的學習群:639912742,入群即送C/C++全套學習資料,滿滿的乾貨!)
如果有像我一樣,想要自學C語言的,可以關注我,不定期放教程,由簡入難,一起學習,一起進步!
這是本文的源碼:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
int main()
{
int i, j;
int x = 20;
int y = 20;
char input;
int isFire = 0;
int k = 20; //設立一個靶子,放在第一行的k列上。
int isKilled = 0 ;
while(1)
system("cls"); //清屏函數
if(!isKilled) //輸出靶子。
for(j=0;j printf(" "); printf("+ "); } if(isFire == 0) for(i=0;i printf(" "); //輸出飛機上面的空格 else for(i=0;i for(j=0;j printf(" | "); if(y+2==k) //+2是因為激光在飛機的正中間,距離飛機最左邊兩個座標。 isKilled = 1; isFire = 0; //輸出飛機圖案 printf(" * "); printf("***** "); printf(" * * "); //控制飛機移動 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 ;
閱讀更多 IT程序員小輝 的文章