| 8 | 1/1 | 返回列表 |
| 查看: 1653 | 回復(fù): 7 | ||
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()){ //判斷有沒(méi)有按鍵落下; system("cls" ); //清屏函數(shù) m.moving(); f.OutputF(); Sleep(200); } } return 0; } 問(wèn)一下紅字部分程序的設(shè)置目的 以及怎么運(yùn)行和實(shí)現(xiàn)的……(簡(jiǎn)要的說(shuō) 就是什么意思= =) 特別是結(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)刪除操作類似的。 |
鐵桿木蟲 (著名寫手)
新蟲 (初入文壇)

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

新蟲 (初入文壇)

| 8 | 1/1 | 返回列表 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 296求調(diào)劑 +5 | 大口吃飯 身體健 2026-03-13 | 5/250 |
|
|---|---|---|---|---|
|
[考研] 材料,紡織,生物(0856、0710),化學(xué)招生啦 +3 | Eember. 2026-03-17 | 7/350 |
|
|
[考研] 281求調(diào)劑(0805) +3 | 煙汐憶海 2026-03-16 | 7/350 |
|
|
[考研] 293求調(diào)劑 +7 | zjl的號(hào) 2026-03-16 | 12/600 |
|
|
[考研] 化學(xué)工程321分求調(diào)劑 +11 | 大米飯! 2026-03-15 | 14/700 |
|
|
[考研] 求調(diào)劑,總分315,考的生物醫(yī)藥,一志愿湖南師范大學(xué)。調(diào)劑到任何專業(yè)都可以 +4 | 小丁想進(jìn)步 2026-03-11 | 5/250 |
|
|
[考博] 26申博 +4 | 八旬速覽 2026-03-16 | 4/200 |
|
|
[考研] 化學(xué)調(diào)劑0703 +8 | 啊我我的 2026-03-11 | 8/400 |
|
|
[考研] 環(huán)境工程調(diào)劑 +6 | 大可digkids 2026-03-16 | 6/300 |
|
|
[考研] 一志愿211 0703方向310分求調(diào)劑 +3 | 努力奮斗112 2026-03-15 | 3/150 |
|
|
[教師之家] 焦慮 +7 | 水冰月月野兔 2026-03-13 | 9/450 |
|
|
[考研] 求老師收留調(diào)劑 +4 | jiang姜66 2026-03-14 | 5/250 |
|
|
[考研] 22408總分284求調(diào)劑 +3 | InAspic 2026-03-13 | 3/150 |
|
|
[考研] 【0703化學(xué)調(diào)劑】-一志愿華中師范大學(xué)-六級(jí)475 +5 | Becho359 2026-03-11 | 5/250 |
|
|
[考研] 330求調(diào)劑 +3 | ?醬給調(diào)劑跪了 2026-03-13 | 3/150 |
|
|
[考研] 材料與化工(0856)304求B區(qū)調(diào)劑 +6 | 邱gl 2026-03-12 | 7/350 |
|
|
[考研] 337一志愿華南理工0805材料求調(diào)劑 +7 | mysdl 2026-03-11 | 9/450 |
|
|
[考研] 四川大學(xué)085601材料工程專碩 初試294求調(diào)劑 +4 | 祝我們好在冬天 2026-03-11 | 4/200 |
|
|
[考研] 材料301分求調(diào)劑 +5 | Liyouyumairs 2026-03-12 | 5/250 |
|
|
[考研] 289求調(diào)劑 +3 | 李政瑩 2026-03-12 | 3/150 |
|