思路
**效果
沒開發前覺得挺難,一步步做下來後就不覺得難了,當然,只是粗略的實現,速度,地圖自定義等都可以再繼續優化,**規劃也不好。
貪吃蛇包含:牆,食物,蛇。
牆:初始後固定動,直接按橫0縱0,高寬自定列印字元即可。
食物:x,y生成在牆內。
蛇:會動,實際會動的只有蛇頭和蛇尾,蛇身每個字元都會經過蛇頭的位置,故不需要重新繪製,直接尾-1,頭+1;
動的速度,使用睡眠控制即可;
方向:通過方向鍵獲取控制;
吃食物:當蛇頭每次睡眠後碰撞檢測到的是食物,則多記錄乙個蛇身位,跳過一次尾巴清除即可。
1、預設地圖(將牆的xy標記為1,非牆標記0)
1view code///2
///預設地圖
3///
4int
[,] getdefaultmap()520
}2122return
mapdot;
23 }
2、生成食物(隨機生成地圖範圍內的x,y)
1view code///2
///生成食物
3///
4void generatefood(int topmax, int
leftmax)
5
3、遊戲開始(根據1步驟返回的點,繪製圖案,並生成食物,啟動蛇)
1view code///2
///畫地圖
3///
4void
drawmap()523
}2425//
生成食物
26generatefood(topmax, leftmax);
2728
//開啟蛇跑
29 task.run(() =>
30);
3334
35 }
4、蛇啟動後(速度控制,識別撞牆、吃到食物,移動蛇身,增加蛇節點)
1view code///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 }
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 函式繪圖,延時,在繪圖,達到...