C語言編程小游戲:小球碰撞

這些是C/C++能做的

服務(wù)器開發(fā)工程師桃煎、人工智能篮幢、云計(jì)算工程師、信息安全(黑客反黑客)为迈、大數(shù)據(jù) 三椿、數(shù)據(jù)平臺缺菌、嵌入式工程師、流媒體服務(wù)器搜锰、數(shù)據(jù)控解伴郁、圖像處理、音頻視頻開發(fā)工程師蛋叼、游戲服務(wù)器焊傅、分布式系統(tǒng)、游戲輔助等

C語言編程小游戲:小球碰撞代碼介紹:那么我們來詳細(xì)看一下

getch()函數(shù)我們都知道getchar()狈涮,同樣可以接收鍵盤輸入狐胎,但是會在標(biāo)準(zhǔn)輸出設(shè)備上顯示輸入字符。但是歌馍,我們的小游戲的標(biāo)準(zhǔn)輸出設(shè)備是用來顯示游戲畫面的握巢,不能顯示輸入字符。于是我們使用了getch()函數(shù)松却,可以在接收鍵盤輸入時(shí)不在標(biāo)準(zhǔn)輸出設(shè)備上輸出暴浦。要理解這兩個(gè)函數(shù)就需要我們理解輸入緩沖區(qū)。我們知道電腦程序的運(yùn)行速度是極快的晓锻,我們的鍵盤輸入不是直接傳給程序的歌焦,而是暫存在緩沖區(qū)中,積累到一定的數(shù)目后再輸入給程序砚哆。比如scanf函數(shù)就是在接收到回車或輸入與預(yù)設(shè)不符時(shí)停止接收鍵盤輸入并將緩沖區(qū)中的字符輸入到程序中独撇。而且scanf函數(shù)在將鍵盤輸入存到緩沖區(qū)中的同時(shí)輸入標(biāo)準(zhǔn)輸出設(shè)備中。理解了以上躁锁,getch()就好理解了券勺。gethch()函數(shù)將鍵盤輸入存入緩沖區(qū)直接輸出到程序中,而且getch()函數(shù)是接收到一個(gè)字符后馬上輸出的灿里。所以程序能馬上對鍵盤輸入做出反應(yīng)。

Sleep()函數(shù):可以上程序停下來程腹,如果太快的話人眼跟不上來的匣吊。暫停時(shí)間是以ms為單位的。其實(shí)執(zhí)行Sleep()函數(shù)時(shí)電腦不是什么都不做的寸潦,其實(shí)它在循環(huán)執(zhí)行空語句色鸳。如果你知道你的電腦循環(huán)執(zhí)行一個(gè)空語句所需的時(shí)間的話,你可以直接操作见转。很多單片機(jī)就是利用這個(gè)原理實(shí)現(xiàn)延時(shí)的目的命雀。

掃描方向:是需要格外注意的,因?yàn)橛螒蜃畲蟮奶卣骶褪墙换バ詷O強(qiáng)斩箫,所以游戲里的數(shù)據(jù)是實(shí)時(shí)更新的吏砂。所以如果掃描方向不對的話是很容易出問題的撵儿,大家可以把代碼的掃描方向修改一下看看結(jié)果。

函數(shù)分裝:大家可以看到我是把代碼分裝到幾個(gè)不同的函數(shù)中的狐血。無論任何游戲都可以分為以下四個(gè)部分淀歇,初始化,顯示匈织,刷新浪默,接收玩家輸入。所以將游戲天然的分為四個(gè)大塊是十分合理的缀匕。#include

小編推薦一個(gè)學(xué)C語言/C++的學(xué)習(xí)裙【 二六三纳决,六八八,二七六 】乡小,無論你是大牛還是小白阔加,是想轉(zhuǎn)行還是想入行都可以來了解一起進(jìn)步一起學(xué)習(xí)!裙內(nèi)有開發(fā)工具劲件,很多干貨和技術(shù)資料分享掸哑!

#include

#include

#include

#include

#define N 20 ? ? ? ? ? ? ?

int screen[N][N];

void start(int* flag,int* rate){

? ? ? ? ? srand((unsigned)time(NULL));

? ? ? ? ? screen[N-1][rand()%20]=2;

? ? ? ? ? *flag=0;//判斷是否被擊中,初始為零

? ? ? ? ? *rate=20;敵機(jī)移動速率

}

void show(){

? ? ? ? ? system("cls");

? ? ? ? ? printf("jk操作\n");

//輸出畫面

? ? ? ? ? inti,j;

? ? ? ? ? for(i=0;i

? ? ? ? ? ? ? ? ? ? for(j=0;j

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?if(screen[i][j]==1)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?putchar('V');

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?if(screen[i][j]==2)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?putchar('A');

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?else

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?putchar('');

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? putchar('\n');

? ? ? ? ? }

? ? ? ? ? Sleep(50);

}

void updatewithoutinput(int* flag,int*rate){

? ? ? ? ? inti,j;

//計(jì)時(shí)

? ? ? ? ? staticint time=-1;

? ? ? ? ? time++;

//敵機(jī)前進(jìn)

? ? ? ? ? for(i=N-1;i>=0;i--){

? ? ? ? ? ? ? ? ? ? for(j=0;j

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?if(screen[i][j]==1){

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?screen[i][j]=0;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?screen[i+1][j]=1;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?}

//敵機(jī)觸底

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?if(i==N-2&&screen[i][j]==1){

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?screen[i][j]=0;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?}

//敵機(jī)擊中戰(zhàn)機(jī)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?if(screen[i][j]==2&&screen[i-1][j]==1){

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?*flag=1;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?putchar('\a'); ? ? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?}

//刷新敵機(jī)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?if(time%*rate==0&&i==0)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?screen[i][j]=rand()%2;

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? }

}

void updatewithinput(){

? ? ? ? ? charinput;//保存鍵盤輸入

? ? ? ? ? if(kbhit()){//檢測鍵盤輸入

? ? ? ? ? ? ? ? ? ? input=getch();

? ? ? ? ? ? ? ? ? ? intj;

? ? ? ? ? ? ? ? ? ? for(j=0;j

? ? ? ? ? ? ? ? ? ? if(input=='j'&&j>0&&screen[N-1][j]==2){

? ? ? ? ? ? ? ? ?screen[N-1][j]=0;

? ? ? ? ? ? ? ? ?screen[N-1][j-1]=2;

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? if(input=='k'&&j

? ? ? ? ? ? ? ? ?screen[N-1][j]=0;

? ? ? ? ? ? ? ? ?screen[N-1][j+1]=2;

? ? ? ? ? ? ? ? ?break;//防止錯(cuò)誤多步操作

? ? ? ? ? ? ? ? ? ? } ? ? ? ?

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? }

}

int main(){

? ? ? ? ? intrate;

? ? ? ? ? intflag;

? ? ? ? ? begin:

? ? ? ? ? start(&flag,&rate);

? ? ? ? ? while(1){

? ? ? ? ? ? ? ? ? ? if(flag)

? ? ? ? ? ? ? ? ? ? gotobegin;//重啟游戲

? ? ? ? ? ? ? ? ? ? show();

? ? ? ? ? ? ? ? ? ? updatewithoutinput(&flag,&rate);

? ? ? ? ? ? ? ? ? ? updatewithinput();

? ? ? ? ? }?小編推薦一個(gè)學(xué)C語言/C++的學(xué)習(xí)裙【 二六三零远,六八八苗分,二七六 】,無論你是大牛還是小白牵辣,是想轉(zhuǎn)行還是想入行都可以來了解一起進(jìn)步一起學(xué)習(xí)摔癣!裙內(nèi)有開發(fā)工具,很多干貨和技術(shù)資料分享纬向!

}

如果理解了以上代碼择浊,就請思考以下問題

-1. ? ?如何設(shè)置暫停?

-2. ? ?如何繪制邊框逾条?

-3. ? ?如何寫出不同的敵機(jī)琢岩,比如血量不同?

-4. ? ?如何寫出子彈师脂?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末担孔,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子吃警,更是在濱河造成了極大的恐慌糕篇,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件酌心,死亡現(xiàn)場離奇詭異拌消,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)安券,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進(jìn)店門墩崩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來氓英,“玉大人,你說我怎么就攤上這事泰鸡≌叮” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵盛龄,是天一觀的道長饰迹。 經(jīng)常有香客問我,道長余舶,這世上最難降的妖魔是什么啊鸭? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮匿值,結(jié)果婚禮上赠制,老公的妹妹穿的比我還像新娘。我一直安慰自己挟憔,他們只是感情好钟些,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著绊谭,像睡著了一般政恍。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上达传,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天篙耗,我揣著相機(jī)與錄音,去河邊找鬼宪赶。 笑死宗弯,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的搂妻。 我是一名探鬼主播蒙保,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼欲主!你這毒婦竟也來了追他?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤岛蚤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后懈糯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體涤妒,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年赚哗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了她紫。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片硅堆。...
    茶點(diǎn)故事閱讀 39,932評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖贿讹,靈堂內(nèi)的尸體忽然破棺而出渐逃,到底是詐尸還是另有隱情,我是刑警寧澤民褂,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布茄菊,位于F島的核電站,受9級特大地震影響赊堪,放射性物質(zhì)發(fā)生泄漏面殖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一哭廉、第九天 我趴在偏房一處隱蔽的房頂上張望脊僚。 院中可真熱鬧,春花似錦遵绰、人聲如沸辽幌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽乌企。三九已至,卻和暖如春赎离,著一層夾襖步出監(jiān)牢的瞬間逛犹,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工梁剔, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留虽画,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓荣病,卻偏偏與公主長得像码撰,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子个盆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內(nèi)容