貪吃蛇
???算是對大一課設的交代》,**抄過來的vs2020下編譯,僅使用sleep()和system(「cls」),_kbhit(),等幾個win api
結構: ------ main.c global.c global.h
主要思路:2維陣列每個點分別存牆(1),空地(0),蛇身體(2),食物點(3).然後遍歷2維陣列printf繪圖
蛇身體長度通過int* body指標陣列指向對應地圖點,
main.c
//#define _winsock_deprecated_no_warnings
#include
"global.h"
extern
int overflag;
intmain
(int argc,
char
*ar**)
//startview(); /*遊戲開始前的動畫*/
startgame()
;printf
("game over!!!\n 按下任意鍵結束 \n");
_getch()
; overflag =1;
system
("cls");
}return0;
}
global.c
#include
"global.h"
/*全域性變數
*/int speed =30;
/*蛇的移動速度*/
int maparr[maxx]
[maxy]
;/*座標處的內容*/
int inputx =
50, inputy =20;
/*預設遊戲的介面寬度和高度*/
int randx =-1
, randy =-1
;/*隨機生成食物座標值*/
int foodflag =0;
/*判斷是否更新食物*/
int sx =
1, sy =1;
/*設定蛇身座標值*/
int l =0;
/*蛇身長度*/
int* body[maxx * maxy]
;/*儲存蛇身體的陣列*/
char input;
/*預設移動方向*/
int overflag =1;
/*遊戲介紹標誌:撞牆or吃到自己*/
int movex =
1,movey =1;
/*遊戲開始的動畫座標值*/
int moveflag =0;
/*動畫的迴圈判斷*/
/*地圖初始化*/
void
initmap()
else}}
return;}
/*遊戲介面設定*/
void
getset()
/*遊戲開始前的動畫??*/
void
startview()
}}void
judgeend()
}//恢復動畫前的效果
movex =
1, movey =1;
initmap()
; moveflag =0;
out:
return;}
/*列印每個座標處的值對應的圖示*/
void
printmap()
}printf
("\n");
}}/*數字動畫,效果看下面注釋*/
void
setmovenum()
// y從上到下 , 此時在最右邊
elseif(
(movex == inputx -
2- moveflag)
&&(movey < inputy -
2- moveflag)
)// x從右到左, 此時在最下面
elseif(
(movey == inputy -
2- moveflag)
&&(movex >
1+ moveflag)
)// y從下到上, 此時在最左邊
elseif(
(movex ==
1+ moveflag)
&&(movey >
1+ moveflag))}
}//遊戲開始
void
startgame()
while
(overflag)
}void
startmsg()
//處理蛇是否吃了食物
void
eatfood()
}//設定食物出現位置
void
setrandnum()
maparr[randx +1]
[randy +1]
=3; foodflag =1;
//生成成功
}void
setsnakenum()
break
;//上乙個方向是向下,那麼這裡只能向左和右
case
's':
if(a ==
'a'|| a ==
'd')
break
;//上乙個方向向左,那麼這裡只能向上和下
case
'a':
if(a ==
'w'|| a ==
's')
break
;//上乙個方向向右,那麼這裡只能向上和下
case
'd':
if(a ==
'w'|| a ==
's')
break;}
}//input是剛剛從上面(輸入)拿到新的有效方向
switch
(input)
//為什麼吃了食物,沒有立即邊長,因為我們增加了l,在這裡進行對地圖賦值=2,等價於增長,
for(
int i = l; i!=
0; i--
)//移動蛇的身體(上面去掉乙個,然後新增乙個開頭處,
body[0]
=&maparr[sx]
[sy];if
((*body[0]
==1)||
(*body[0]
==2))
//判斷是否撞牆》
overflag =0;
*body[0]
=2;//第一次l = 0,但是這裡給賦值了
}
global.h
#pragma once
#include
#include
#include
#include
#include
#define maxx 10000
#define maxy 10000
void
initmap()
;void
getset()
;void
startview()
;void
setmovenum()
;void
printmap()
;void
judgeend()
;void
startgame()
;void
setsnakenum()
;void
setrandnum()
;void
eatfood()
;void
startmsg()
;
貪吃蛇 控制台
本文把遊戲區域就行編號,第一行從0到width 1,到height 1 到 width height 1 二維陣列 並用trace len 陣列儲存snake移動的軌跡 儲存的是數值,數值就能表現出所在的行和列 trace 0 始終為snake的頭部 根據display 函式繪圖,延時,在繪圖,達到...
Golang 實現控制台貪吃蛇
package main import fmt math rand os time include include 使用了winapi來移動控制台的游標 void gotoxy int x,int y 從鍵盤獲取一次按鍵,但不顯示到控制台 int direct import c go中可以嵌入c語言...
c 控制台實現貪吃蛇
思路 效果 沒開發前覺得挺難,一步步做下來後就不覺得難了,當然,只是粗略的實現,速度,地圖自定義等都可以再繼續優化,規劃也不好。貪吃蛇包含 牆,食物,蛇。牆 初始後固定動,直接按橫0縱0,高寬自定列印字元即可。食物 x,y生成在牆內。蛇 會動,實際會動的只有蛇頭和蛇尾,蛇身每個字元都會經過蛇頭的位置...