| 5 | 1/1 | 返回列表 |
| 查看: 1667 | 回復(fù): 7 | ||
| 當(dāng)前只顯示滿足指定條件的回帖,點(diǎn)擊這里查看本話題的所有回帖 | ||
viking1992新蟲 (初入文壇)
|
[求助]
大二編程廢求助高手解答一下這個(gè)貪吃蛇的C++程序
|
|
|
看到一個(gè)貪吃蛇的C++程序 中間有幾個(gè)地方不懂 求指教! #include #include #include #include #include enum dir{up,down,left,right}; //枚舉類型enum dir; //圍墻; class Fence{ public: void InitFence(); void OutputF(); public: char game[20][20]; }f; //定義對象; //畫框框; void Fence::InitFence(){ for(int i=0; i<20; i++) for(int j=0; j<20; j++){ if(i==0||i==19||j==0||j==19) game[j]= '*'; else game[j]= ' '; } } //顯示框框; void Fence::OutputF(){ for(int i=0; i<20; i++){ for(int j=0; j<20; j++) cout< cout< } //蛇結(jié)點(diǎn); class SnakeNode{ private: int x,y; SnakeNode *prior,*next; public: void add_head(int x,int y); int get_x(); int get_y(); void delete_tail(); }*head=NULL, *tail =NULL; //插入頭結(jié)點(diǎn); void SnakeNode::add_head(int x,int y){ SnakeNode *q=new SnakeNode; q->x =x; q->y =y; q->next =head; q->prior =NULL; if(head) head->prior =q; head =q; if(!tail) tail =head; f.game[x][y]= '*'; //f對象可以在定義Fence類時(shí)定義; 且Fence類在SnakeNode類前定義; } int SnakeNode::get_x(){ return x; } int SnakeNode::get_y(){ return y; } //刪除尾結(jié)點(diǎn); void SnakeNode::delete_tail(){ SnakeNode *p =tail; f.game[tail->get_x()][tail->get_y()]= ' ';//把尾結(jié)點(diǎn)的坐標(biāo)表示的'*'置為空格; if(tail==head) tail= head= NULL; else{ tail= tail->prior; tail->next= NULL; } delete p;} //move移動; class move{ public: dir point; //枚舉變量point: 控制方向; int food_x; int food_y; public: void moving(); void change_point(char); //改變方向; void get_food(); }; void move::moving(){ int a,b; a= head->get_x(); //取得頭結(jié)點(diǎn)橫坐標(biāo) b= head->get_y(); //頭結(jié)點(diǎn)縱坐標(biāo) switch(point){ case up: --a; break; case down: ++a; break; case left: --b; break; case right: ++b; break; } if(a==19||b==19||a==0||b==0){ //判斷是否撞墻; cout<<"game over!!!"< } if(a==food_x && b==food_y){ //吃food; head->add_head(a,b); get_food(); } else{ head->add_head(a,b); //插入頭結(jié)點(diǎn); head->delete_tail(); //刪除尾結(jié)點(diǎn); } } void move::change_point(char keydown){ switch(keydown){ case 'w': point= up; break; case 's': point= down; break; case 'a': point= left; break; case 'd': point= right; break; } } void move::get_food(){ srand((unsigned int) time(NULL)); //做種子(程序運(yùn)行時(shí)間); food_x= rand()%18+1; food_y= rand()%18+1; f.game[food_x][food_y]= '*';} //main(); int main(){ cout<<"Using 'w,s,a,d'to control direction!!!\n\n\n"; //畫框框和小蛇; move m; f.InitFence(); head->add_head(4,3); head->add_head(4,4); head->add_head(4,5); m.get_food(); f.OutputF(); while (true){ char keydown= getch(); //getch()返回鍵盤上讀取的字符;包含頭文件 m.change_point(keydown); while(!kbhit()){ //判斷有沒有按鍵落下; system("cls" ); //清屏函數(shù) m.moving(); f.OutputF(); Sleep(200); } } return 0; } 問一下紅字部分程序的設(shè)置目的 以及怎么運(yùn)行和實(shí)現(xiàn)的……(簡要的說 就是什么意思= =) 特別是結(jié)點(diǎn)那一塊……動態(tài)數(shù)組和各種指針什么的 看著就頭大……………… 多謝了 [ Last edited by 微塵、夢想 on 2011-8-27 at 20:06 ] |

新蟲 (初入文壇)

新蟲 (初入文壇)

鐵桿木蟲 (著名寫手)
|
數(shù)據(jù)結(jié)構(gòu)中的。 1)雙向鏈表插入操作:插入到表頭的處理 q->next =head; //把q對應(yīng)結(jié)點(diǎn)插入到 head位置,即head為q后繼。 q->prior =NULL;//q對應(yīng)結(jié)點(diǎn)是表頭了,對應(yīng)的prior 應(yīng)該為空。 if(head) head->prior =q;//如果已經(jīng)存在頭結(jié)點(diǎn),要處理原頭結(jié)點(diǎn),把其前驅(qū)設(shè)置為q結(jié)點(diǎn) head =q; //q作為新頭結(jié)點(diǎn) 2)刪除操作類似的。 |
鐵桿木蟲 (著名寫手)
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 食品工程專碩一志愿中海洋309求調(diào)劑 +5 | 小張zxy張 2026-03-26 | 10/500 |
|
|---|---|---|---|---|
|
[考研] 材料求調(diào)劑 一志愿哈工大總分298分,前三科223分 +10 | dongfang59 2026-03-27 | 10/500 |
|
|
[考研] 一志愿中海洋材料357 +3 | 麥恩莉. 2026-03-30 | 3/150 |
|
|
[考研] 生物學(xué)學(xué)碩,一志愿湖南大學(xué),初試成績338 +7 | YYYYYNNNNN 2026-03-26 | 9/450 |
|
|
[考研] 085600 材料與化工 329分求調(diào)劑 +18 | Mr. Z 2026-03-25 | 19/950 |
|
|
[考研] 292求調(diào)劑 +13 | 是妍子也是研子 2026-03-30 | 13/650 |
|
|
[考研] 310求調(diào)劑 +10 | 爭取九點(diǎn)睡 2026-03-30 | 10/500 |
|
|
[考研] 【求調(diào)劑】085601材料工程專碩 | 總分272 | +7 | 腳滑的守法公民 2026-03-27 | 7/350 |
|
|
[考研] 070305高分子化學(xué)與物理 304分求調(diào)劑 +12 | c297914 2026-03-28 | 12/600 |
|
|
[考研] 298求調(diào)劑 +4 | 種圣賜 2026-03-28 | 4/200 |
|
|
[考研] 調(diào)劑考研 +3 | 王杰一 2026-03-29 | 3/150 |
|
|
[考研] 394求調(diào)劑 +3 | 好事多磨靜候佳?/a> 2026-03-26 | 5/250 |
|
|
[考研] 304求調(diào)劑 +6 | 曼殊2266 2026-03-27 | 6/300 |
|
|
[考研] 藥學(xué)105500求調(diào)劑 +3 | Ssun。。 2026-03-28 | 3/150 |
|
|
[考研] 331環(huán)境科學(xué)與工程求調(diào)劑 +3 | 熠然好運(yùn)氣 2026-03-27 | 3/150 |
|
|
[考研] 一志愿南師大0703化學(xué) 275求調(diào)劑 +4 | Ripcord上岸 2026-03-27 | 4/200 |
|
|
[考研] 292求調(diào)劑 +4 | 求求了收下我吧?/a> 2026-03-26 | 4/200 |
|
|
[考研] 293求調(diào)劑 +7 | 加一一九 2026-03-24 | 7/350 |
|
|
[考研] 調(diào)劑 +4 | 13853210211 2026-03-24 | 4/200 |
|
|
[考研]
|
13659058978 2026-03-24 | 4/200 |
|