c 控制台實現貪吃蛇

2022-09-19 14:12:16 字數 2708 閱讀 2799

思路

**效果

沒開發前覺得挺難,一步步做下來後就不覺得難了,當然,只是粗略的實現,速度,地圖自定義等都可以再繼續優化,**規劃也不好。

貪吃蛇包含:牆,食物,蛇。

牆:初始後固定動,直接按橫0縱0,高寬自定列印字元即可。

食物:x,y生成在牆內。

蛇:會動,實際會動的只有蛇頭和蛇尾,蛇身每個字元都會經過蛇頭的位置,故不需要重新繪製,直接尾-1,頭+1;

動的速度,使用睡眠控制即可;

方向:通過方向鍵獲取控制;

吃食物:當蛇頭每次睡眠後碰撞檢測到的是食物,則多記錄乙個蛇身位,跳過一次尾巴清除即可。

1、預設地圖(將牆的xy標記為1,非牆標記0)

1

///2

///預設地圖

3///

4int

[,] getdefaultmap()520

}2122return

mapdot;

23 }

view code

2、生成食物(隨機生成地圖範圍內的x,y)

1

///2

///生成食物

3///

4void generatefood(int topmax, int

leftmax)

5

view code

3、遊戲開始(根據1步驟返回的點,繪製圖案,並生成食物,啟動蛇)

1

///2

///畫地圖

3///

4void

drawmap()523

}2425//

生成食物

26generatefood(topmax, leftmax);

2728

//開啟蛇跑

29 task.run(() =>

30);

3334

35 }

view code

4、蛇啟動後(速度控制,識別撞牆、吃到食物,移動蛇身,增加蛇節點)

1

///2

///貪吃蛇開跑

3///

4void snakego(int x, int y, int maxx, int

maxy)5);

1011

while (true)12

3233

//吃到自己

34if (snakedots.where(o => o[0] == x && o[1] ==y).any())

3540

41//

繪製下一影象

42console.setcursorposition(y, x);

43 console.write("*"

);44 snakedots.add(new

int );

4546

//清掉最後面的影象

47 console.setcursorposition(snakedots[0][1] + 1, snakedots[0][0

]);48 console.write('

\u0008');

49 console.write("");

50 snakedots.removeat(0

);51

52 thread.sleep(50

);53

54//

撞到牆壁

55if (x > maxx - 2 || y > maxy - 2 || x < 1 || y < 1)56

6162

//吃到食物

63if (x == foodt && y ==foodl)

64);

66if (snakedots.count >= 15)67

72//

重新生成食物

73generatefood(maxx, maxy);74}

75}76 }

view code

5、方向控制(初始地圖,控制台,全域性變數設定)

1

///2

///游標不可見

3///

4 console.cursorvisible = false;5

///6

///初始方向向下

7///

8string currentdirction = "d"

;9///10

///儲存食物座標

11///

12int foodt, foodl = 0;13

///14

///儲存蛇的節點

15///

16 list snakedots = new system.collections.generic.list();

17//

清螢幕18

console.clear();

19///

20///

畫地圖21

///22

drawmap();

2324

//方向輸入控制

C 控制台貪吃蛇

軟體實訓作品,現放出個人源 供需要的同學參考 int startx 8 x起點 const int starty 4 y起點 const int rangex 60 x範圍 const int rangey 20 y範圍 const int endx startx rangex x終點 const ...

C 控制台貪吃蛇

大二下的遊戲程式設計第乙個小作業,以此篇記錄一下,感謝李仕老師的循循善誘和同學們的熱情討論。include include include using namespace std define leftborder 3 define topborder 3 bool gameover,died 遊戲...

貪吃蛇 控制台

本文把遊戲區域就行編號,第一行從0到width 1,到height 1 到 width height 1 二維陣列 並用trace len 陣列儲存snake移動的軌跡 儲存的是數值,數值就能表現出所在的行和列 trace 0 始終為snake的頭部 根據display 函式繪圖,延時,在繪圖,達到...