總體思路
一直輸出、清屏、再輸出...形成重新整理效果,形成動畫效果。生成乙個二維陣列,用以儲存地圖、食物、蛇和圍牆。每次輸出將這個二維陣列輸出。生成指標陣列指向二維陣列來表示乙個蛇頭和蛇尾,指標所指的位置值為*表示蛇身,-表示蛇頭,建立變數fx用來記錄當前蛇的移動方向
蛇的移動:迴圈用_kbhit()判斷鍵盤是否觸動,如果沒有觸動,蛇就往前移動(將指標所指的位置值清空,蛇頭指標前面那格變為新蛇頭,原來的蛇頭變成蛇身,蛇的最後一格尾巴去掉,如果蛇頭吃到食物,蛇尾就不去。然後指標所指的位置重新賦值),如果鍵盤觸動,判斷如果不是w、a、s、d、空格(遊戲結束)、回車(遊戲重開)就視為沒被觸動,如果是wasd就改變變數fx,並且蛇頭往所指方向移動。如果蛇頭的前面一格是蛇身、圍牆,遊戲結束
食物的生成:用兩個隨機數定位食物的位置,如果食物位置是圍牆或蛇身,重新生成
**
1 #include2 #include3 #include4 #include5 #include6執行截圖 總結int st=3,js=1,df=0;7
char fx='
a',*p;
8void sjs(char a[20][20])9
17 *p='!'
;18}19
void csh(char a[20][20],char *q[300
])20
31for(i=1;i<19;i++)
32for(j=1;j<19;j++)
33 a[i][j]='';
34 q[0]=&a[10][9
];35 q[1]=&a[10][10
];36 q[2]=&a[10][11
];37 *q[0]='-'
;38 *q[1]=*q[2]='*'
;39sjs(a);
40 printf("
您的得分為:%d
",df);41}
42void sx(char a[20][20
])43
50for(i=1;i<19;i++)
51for(j=1;j<19;j++)
52 a[i][j]='';
53 *p='!'
;54}55
void sc(char a[20][20
])56
64 printf("\n"
);65
}66 printf("
您的得分為:%d
",df);
6768}69
void up(char a[20][20],char *q[300
])70
83 q[0]=q[0]-20
;84 *q[0]='|'
;85 st=st+1
;86 df=df+1
;87 system("
cls"
);88
sjs(a);
89sc(a);90}
91else
92100 q[0]=q[0]-20
;101 *q[0]='|'
;102 system("
cls"
);103
sc(a);
104}
105else
106 js=0
;107
}108
else
109 js=0
;110
111}
112void left(char a[20][20],char *q[300
])113
127 q[0]=q[0]-1
;128 *q[0]='-'
;129 st=st+1
;130 df=df+1
;131 system("
cls"
);132
sjs(a);
133sc(a);
134}
135else
136144 q[0]=q[0]-1
;145 *q[0]='-'
;146 system("
cls"
);147
sc(a);
148}
149}
150else
151 js=0
;152
}153
else
154 js=0
;155
}156
void down(char a[20][20],char *q[300
])157
170 q[0]=q[0]+20
;171 *q[0]='|'
;172 st=st+1
;173 df=df+1
;174 system("
cls"
);175
sjs(a);
176sc(a);
177}
178else
179187 q[0]=q[0]+20
;188 *q[0]='|'
;189 system("
cls"
);190
sc(a);
191}
192else
193 js=0
;194
}195
else
196 js=0
;197
198}
199void right(char a[20][20],char *q[300
])200
214 q[0]=q[0]+1
;215 *q[0]='-'
;216 st=st+1
;217 df=df+1
;218 system("
cls"
);219
sjs(a);
220sc(a);
221}
222else
223231 q[0]=q[0]+1
;232 *q[0]='-'
;233 system("
cls"
);234
sc(a);
235}
236}
237else
238 js=0
;239
}240
else
241 js=0
;242
243}
244void
dp()
245262
void
yx()
263275
switch
(fx)
276282
}283 printf("
\n很遺憾,您輸了\n點選回車重開,點選空格結束\n");
284285
}286
void
main()
287297
if(xz==13
)298
302 }
這個**其實是四個月前寫的,現在回過頭來只有乙個感覺。。。我當初寫了啥?四個月前的**現在已經忘了大半了,現在想重新看一遍都看不下去。所以這個部落格也是憑模糊的記憶寫的。。。這個**最大的問題就是乙個注釋都沒有,有些後來想到的一些改進的地方都因為沒有注釋而寸步難行,其他可以改進的部分就是一開始就定死了地圖的大小,後面如果要改了話很麻煩,可以用define來定義二維陣列的大小,以後要改可以直接在define改。還有就是在原**是輸入fx,然後根據w、a、s、d來傳到不同的函式,每乙個函式進行乙個方向的行動,可以將四個函式合併為乙個,判斷完方向後將蛇頭的位移傳遞到函式中,用這個函式來進行四個方向的移動
貪吃蛇小遊戲實現
index.html style.css mapindex.js tools.js 自呼叫函式傳入window的目的,是讓變數可以被壓縮 防止undefined重新命名,也可以被壓縮 function window,undefined 暴露tools給window window.tools tool...
C 貪吃蛇小遊戲
自學了幾天c 嘗試寫了乙個貪吃蛇小遊戲,比較詳細地做了注釋,實現 1 貪吃蛇基本功能 2 長按加速 3 計分板 xaml 及介面 namespace 貪吃蛇 新食物生成 public void newfoodgenerate 計時器每乙個計時週期內的時間處理程式 void timer tick ob...
C 貪吃蛇小遊戲
1.有許多值得新手學習的地方 2.不看就吃虧了噢 3.如果沒有值得學習的地方,我就倒立洗頭!include include include include include 方向鍵的ascll值 上72,左75,右77,下80 背景顏色的 0 黑色 1藍色 2 綠色 3湖藍色 4紅色 5紫色 6黃色 ...