| 8 | 1/1 | 返回列表 |
| 查看: 1652 | 回復(fù): 7 | ||
viking1992新蟲 (初入文壇)
|
[求助]
大二編程廢求助高手解答一下這個貪吃蛇的C++程序
|
|
看到一個貪吃蛇的C++程序 中間有幾個地方不懂 求指教! #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é)點; 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é)點; 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類時定義; 且Fence類在SnakeNode類前定義; } int SnakeNode::get_x(){ return x; } int SnakeNode::get_y(){ return y; } //刪除尾結(jié)點; void SnakeNode::delete_tail(){ SnakeNode *p =tail; f.game[tail->get_x()][tail->get_y()]= ' ';//把尾結(jié)點的坐標表示的'*'置為空格; 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é)點橫坐標 b= head->get_y(); //頭結(jié)點縱坐標 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é)點; head->delete_tail(); //刪除尾結(jié)點; } } 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)); //做種子(程序運行時間); 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è)置目的 以及怎么運行和實現(xiàn)的……(簡要的說 就是什么意思= =) 特別是結(jié)點那一塊……動態(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é)點插入到 head位置,即head為q后繼。 q->prior =NULL;//q對應(yīng)結(jié)點是表頭了,對應(yīng)的prior 應(yīng)該為空。 if(head) head->prior =q;//如果已經(jīng)存在頭結(jié)點,要處理原頭結(jié)點,把其前驅(qū)設(shè)置為q結(jié)點 head =q; //q作為新頭結(jié)點 2)刪除操作類似的。 |
鐵桿木蟲 (著名寫手)
新蟲 (初入文壇)

鐵桿木蟲 (著名寫手)
木蟲 (著名寫手)

新蟲 (初入文壇)

| 8 | 1/1 | 返回列表 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 考研化學(xué)學(xué)碩調(diào)劑,一志愿985 +4 | 張vvvv 2026-03-15 | 6/300 |
|
|---|---|---|---|---|
|
[考研] 有沒有道鐵/土木的想調(diào)劑南林,給自己招師弟中~ +3 | TqlXswl 2026-03-16 | 7/350 |
|
|
[考研] 一志愿,福州大學(xué)材料專碩339分求調(diào)劑 +3 | 木子momo青爭 2026-03-15 | 3/150 |
|
|
[考研]
|
zhouzhen654 2026-03-16 | 3/150 |
|
|
[考研] 0703化學(xué)調(diào)劑 +6 | 妮妮ninicgb 2026-03-15 | 9/450 |
|
|
[考研] 材料與化工一志愿南昌大學(xué)327求調(diào)劑推薦 +7 | Ncdx123456 2026-03-13 | 8/400 |
|
|
[考研] 344求調(diào)劑 +3 | knight344 2026-03-16 | 3/150 |
|
|
[考研] 326求調(diào)劑 +3 | mlpqaz03 2026-03-15 | 3/150 |
|
|
[基金申請]
NSFC申報書里申請人簡歷中代表性論著還需要在申報書最后的附件里面再上傳一遍嗎
20+5
|
NSFC2026我來了 2026-03-10 | 14/700 |
|
|
[考研] 材料與化工 323 英一+數(shù)二+物化,一志愿:哈工大 本人本科雙一流 +4 | 自由的_飛翔 2026-03-13 | 5/250 |
|
|
[考研] 中科大材料專碩319求調(diào)劑 +3 | 孟鑫材料 2026-03-13 | 3/150 |
|
|
[考研] 341求調(diào)劑 +4 | 番茄頭--- 2026-03-10 | 4/200 |
|
|
[考研] 0703化學(xué)調(diào)劑 +4 | 快樂的香蕉 2026-03-11 | 4/200 |
|
|
[考研] 304求調(diào)劑 +6 | Mochaaaa 2026-03-12 | 7/350 |
|
|
[考研] 求調(diào)劑(材料與化工327) +4 | 愛吃香菜啦 2026-03-11 | 4/200 |
|
|
[考研] 求材料調(diào)劑 +5 | 隔壁陳先生 2026-03-12 | 5/250 |
|
|
[考研] 0856材料與化工301求調(diào)劑 +5 | 奕束光 2026-03-13 | 5/250 |
|
|
[考研] 0817化學(xué)工程與技術(shù)考研312分調(diào)劑 +3 | T123 tt 2026-03-12 | 3/150 |
|
|
[考研] 321求調(diào)劑(食品/專碩) +3 | xc321 2026-03-12 | 6/300 |
|
|
[考研] 290求調(diào)劑 +3 | 柯淮然 2026-03-10 | 8/400 |
|