C 實現貪吃蛇小遊戲

2022-07-18 16:48:37 字數 4590 閱讀 4986

總體思路

一直輸出、清屏、再輸出...形成重新整理效果,形成動畫效果。生成乙個二維陣列,用以儲存地圖、食物、蛇和圍牆。每次輸出將這個二維陣列輸出。生成指標陣列指向二維陣列來表示乙個蛇頭和蛇尾,指標所指的位置值為*表示蛇身,-表示蛇頭,建立變數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黃色 ...