五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

C/C++編程筆記:C語(yǔ)言貪吃蛇源代碼控制臺(tái)(一),會(huì)動(dòng)的那種哦!

2020-05-23 23:12 作者:C語(yǔ)言編程__Plus  | 我要投稿

前幾天有個(gè)同學(xué)加我QQ私聊我說(shuō)他們老師布置了一個(gè)貪吃蛇,他不知道怎么寫(xiě)所以來(lái)找我求解,我給他簡(jiǎn)單講解了思路和一些難點(diǎn)之后他也能夠自己獨(dú)立將項(xiàng)目完成了!考慮到更多同學(xué)可能有貪吃蛇上的問(wèn)題,今天有時(shí)間就來(lái)寫(xiě)一下題解。我將分幾步來(lái)教大家寫(xiě)一個(gè)貪吃蛇小游戲。由于大家可能C語(yǔ)言未學(xué)完,這個(gè)教程只涉及數(shù)組和函數(shù)等知識(shí)點(diǎn)。

一、畫(huà)地圖

首先我們使用宏定義來(lái)定義兩個(gè)常數(shù),地圖的高(H)和地圖的寬(W)

#defineH 20

#defineW 20

這樣寫(xiě)的好處是以后改變地圖的大小就不用更改寫(xiě)好的代碼了,只要修改下宏定義。節(jié)省了時(shí)間又避免改出bug

接下來(lái),我們定義一個(gè)二維數(shù)組,這個(gè)二維數(shù)組的每一個(gè)值剛好對(duì)應(yīng)了平面的每一個(gè)點(diǎn),這樣就可以方便地自定義地圖了。可以設(shè)置障礙物什么的了。然后我們用數(shù)組a[H][W]來(lái)存儲(chǔ)地圖情況,如果a[i][j]==0,就說(shuō)明第i+1行,第j+1列是空的,如果a[i][j]==1,就說(shuō)明這個(gè)點(diǎn)是障礙物

然后我們使用下面的代碼來(lái)把地圖數(shù)組的邊框做出來(lái),就是讓數(shù)組邊緣等于1。(int全局變量默認(rèn)為0)。

這個(gè)只是最簡(jiǎn)單的地圖,如果你有其他想法可以自由發(fā)揮,畫(huà)出自己的地圖。

地圖畫(huà)好了,剩下的就是畫(huà)出地圖了。我們把畫(huà)地圖的過(guò)程也寫(xiě)為一個(gè)函數(shù),這樣能使代碼結(jié)構(gòu)更清晰,更容易找出bug。畫(huà)地圖就簡(jiǎn)單了,就是遍歷整個(gè)數(shù)組,然后值為0的地方輸出空格,值為1的地方輸出一個(gè)符號(hào),符號(hào)按自己喜好,我這里使用了#。

然后我們發(fā)現(xiàn)長(zhǎng)寬不合適,我們可以修改剛開(kāi)始的H和W的值。

按自己喜好調(diào)整,比如這樣

#defineH 23

#defineW 75

然后看看是不是比剛才好看了。知道宏定義的好處了吧。

好了,到這里為止,我們已經(jīng)學(xué)會(huì)了畫(huà)地圖。

這只是最簡(jiǎn)單的地圖,通過(guò)修改地圖數(shù)組,我們就能做出很多不一樣的地圖。

下面附上第一步的完整代碼。

二、畫(huà)蛇

蛇的身體就是一些點(diǎn),我們可以用二維數(shù)組把這些點(diǎn)的坐標(biāo)存起來(lái)。

先聲明一個(gè)足夠大的二維數(shù)組。雖然我覺(jué)得你們玩不了這么長(zhǎng)(手動(dòng)滑稽)。

int s[H*W][2];

這樣s[0][0]表示蛇頭的i坐標(biāo),s[0][1]表示蛇頭的j坐標(biāo)。s[i][0]表示蛇第i+1個(gè)點(diǎn)的i坐標(biāo)。s[i][1]同理。

然后再聲明一個(gè)int變量存儲(chǔ)蛇的長(zhǎng)度。然后把這些初始化操作都放進(jìn)上面init函數(shù)里面。

int sLength;? ? ? ? //蛇的長(zhǎng)度

sLength=4;? ? ? ? ? //讓蛇的最初長(zhǎng)度為4

?然后給剛開(kāi)始的蛇身幾個(gè)初始坐標(biāo)

然后接下來(lái)我們把蛇畫(huà)出來(lái),我這里有一個(gè)函數(shù),可以實(shí)現(xiàn)移動(dòng)光標(biāo)到指定點(diǎn)。注:要添加頭文件windows.h

如下:

然后就可以先畫(huà)地圖,然后通過(guò)移動(dòng)光標(biāo)在地圖上畫(huà)出蛇。

好,看看效果

蛇確實(shí)出來(lái)了,但是那個(gè)光標(biāo)很礙事,在init函數(shù)開(kāi)始時(shí)加入下面代碼可隱藏關(guān)標(biāo)

CONSOLE_CURSOR_INFO cursor_info = {1, 0};

SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);

這樣就沒(méi)有光標(biāo)了。

到現(xiàn)在為止的代碼。

今天先到這里吧!大家不要著急,下篇文章我會(huì)把蛇剩下的部分分享完整!

微信公眾號(hào):C語(yǔ)言編程學(xué)習(xí)基地,學(xué)習(xí)C/C++編程知識(shí)的小伙伴可以關(guān)注UP哦~

另外,UP在主頁(yè)上傳了一些學(xué)習(xí)C/C++編程的視頻教程,有興趣或者正在學(xué)習(xí)的小伙伴一定要去看一看哦!會(huì)對(duì)你有幫助的~


C/C++編程筆記:C語(yǔ)言貪吃蛇源代碼控制臺(tái)(一),會(huì)動(dòng)的那種哦!的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
巩义市| 伊金霍洛旗| 万宁市| 昭平县| 浪卡子县| 永年县| 彩票| 望奎县| 开化县| 台安县| 门源| 文登市| 张家川| 宾川县| 五峰| 阳高县| 瓦房店市| 民乐县| 临桂县| 犍为县| 荔波县| 绥棱县| 台中县| 石渠县| 拉孜县| 花莲市| 平塘县| 南昌县| 河池市| 潮州市| 韶关市| 应城市| 彰化县| 霍邱县| 靖安县| 肃北| 徐水县| 灵寿县| 普洱| 东平县| 杭州市|