| 5 | 1/1 | 返回列表 |
| 查看: 1664 | 回復(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; //定義對(duì)象; //畫框框; 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對(duì)象可以在定義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移動(dòng); 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ǎn)要的說 就是什么意思= =) 特別是結(jié)點(diǎn)那一塊……動(dòng)態(tài)數(shù)組和各種指針什么的 看著就頭大……………… 多謝了 [ Last edited by 微塵、夢(mèng)想 on 2011-8-27 at 20:06 ] |

木蟲 (著名寫手)

新蟲 (初入文壇)

鐵桿木蟲 (著名寫手)
|
數(shù)據(jù)結(jié)構(gòu)中的。 1)雙向鏈表插入操作:插入到表頭的處理 q->next =head; //把q對(duì)應(yīng)結(jié)點(diǎn)插入到 head位置,即head為q后繼。 q->prior =NULL;//q對(duì)應(yīng)結(jié)點(diǎn)是表頭了,對(duì)應(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ā)表 | |
|---|---|---|---|---|
|
[考研] 學(xué)碩274求調(diào)劑 +8 | Li李魚 2026-03-26 | 8/400 |
|
|---|---|---|---|---|
|
[考研] 材料與化工272求調(diào)劑 +9 | 阿斯蒂芬2004 2026-03-28 | 9/450 |
|
|
[考研] 320分,材料與化工專業(yè),求調(diào)劑 +9 | 一定上岸aaa 2026-03-27 | 13/650 |
|
|
[考研]
|
nnnnnnn5 2026-03-25 | 6/300 |
|
|
[考研] 材料277求調(diào)劑 +7 | min3 2026-03-24 | 7/350 |
|
|
[材料工程] 一志愿C9材料與化工專業(yè)總分300求調(diào)劑 +8 | 曼111 2026-03-24 | 9/450 |
|
|
[考研] 285求調(diào)劑 +4 | AZMK 2026-03-27 | 7/350 |
|
|
[考研] 266分求材料化工冶金礦業(yè)等專業(yè)的調(diào)劑 +4 | 哇呼哼呼哼 2026-03-26 | 4/200 |
|
|
[考研] 一志愿華東理工大學(xué)081700,初試分?jǐn)?shù)271 +6 | kotoko_ik 2026-03-23 | 7/350 |
|
|
[考研] 324求調(diào)劑 +5 | hanamiko 2026-03-26 | 5/250 |
|
|
[考研] 081200-11408-276學(xué)碩求調(diào)劑 +4 | 崔wj 2026-03-26 | 4/200 |
|
|
[考研] 349求調(diào)劑 +4 | 李木子啊哈哈 2026-03-25 | 4/200 |
|
|
[考研] 271求調(diào)劑 +6 | 生如夏花… 2026-03-22 | 6/300 |
|
|
[考研] 289求調(diào)劑 +17 | 碩星赴 2026-03-23 | 17/850 |
|
|
[考研] 環(huán)境專碩324分求調(diào)劑推薦 +5 | 軒小寧—— 2026-03-26 | 5/250 |
|
|
[考研] 296求調(diào)劑 +4 | 汪。! 2026-03-25 | 7/350 |
|
|
[考研]
|
黃粱一夢(mèng)千年 2026-03-24 | 3/150 |
|
|
[考研] 環(huán)境學(xué)碩288求調(diào)劑 +8 | 皮皮皮123456 2026-03-22 | 8/400 |
|
|
[考研] 接收2026碩士調(diào)劑(學(xué)碩+專碩) +4 | allen-yin 2026-03-23 | 6/300 |
|
|
[考研] 求調(diào)劑院校信息 +6 | CX 330 2026-03-21 | 6/300 |
|