上次不是寫了個貪吃蛇麼,我覺得不夠好看
學了學easyx,決定給他美化一下並重構了函式
大致思路就是先畫線格,然後決定地圖的大小,這就是蛇的運動路線
然後拐彎什麼的通過列舉方向處理蛇頭就行,增長長度就是給蛇新增數量就行,我這裡就是把蛇處理成結構體
其他思路也就是大致一樣的,具體看**咯,撞牆就是看它蛇頭會不會越界就行了
看**吧
#define _crt_secure_no_warnings
//因為我用的是vs2019,這裡取消一下安全性檢查(這裡**都是c++了昂)
#include
//easyx的庫
#include
//隨機函式
#include
#include
enum dir
;bool ai =
false
;//描述乙個點
struct point
;//蛇的結構體
struct snake bigsnake;
//展示分數用
int score =0;
void
drawline()
}}//初始化蛇
void
initsnake()
}//畫蛇
void
drawsnake()
}//移動蛇的函式,這裡唯一要理解的就是這個列舉型別,其他的就是將前乙個的位置付給下乙個就能實現移動
void
movesnake()
switch
(bigsnake.position)
}//非同步函式不用多說
void
keydown()
if(getasynckeystate
('s')||
getasynckeystate
(vk_down)
&& bigsnake.position != up)if(
getasynckeystate
('a')||
getasynckeystate
(vk_left)
&& bigsnake.position != right)if(
getasynckeystate
('d')||
getasynckeystate
(vk_right)
&& bigsnake.position != left)if(
getasynckeystate
('r'))
system
("pause");
if(getasynckeystate
('t'
)) ai =
true;if
(getasynckeystate
('y'
)) ai =
false;}
//描述食物
struct sfood food;
//這裡是實現了自動吃的模組,就是乙個簡單的計算,自行理解,這個不是真的就是萬能的,本人太菜了並不能實現高階的演算法
void
keydownai()
else
if(food.xy.x < bigsnake.xy[0]
.x && bigsnake.position != right)
else
if(food.xy.y > bigsnake.xy[0]
.y && bigsnake.position != up)
else
if(food.xy.y < bigsnake.xy[0]
.y && bigsnake.position != down)
}//初始化食物
void
initfood()
}}food.flag =1;
}//畫食物跟前面一樣的
void
drawfood()
//吃食物事件
void
eatfood()
}void
showscore
(int x,
int y,
int score)
//撞牆的事件
bool
hitboard()
return
false;}
bool
hitsnake()
return
false;}
//主函式
intmain()
if(hitboard()
)if(hitsnake()
)if(ai)
keydownai()
;drawfood()
;showscore(0
,10, score)
;eatfood()
;movesnake()
;keydown()
;drawsnake()
;endbatchdraw()
;}closegraph()
;//關掉畫
return0;
}
以下效果圖:
實際執行起來挺好的,人生一大進步算是吧。
蒟蒻就這樣了,源**搬走,什麼發揮都可以的。
貪吃蛇遊戲
貪吃蛇遊戲 結構化程式設計 c語言程式設計 重要的的是結構化的程式設計思想 include include include include include include define field width 300 就做20個格仔的 define field height 300 define f...
貪吃蛇(改進)
該程式分成3個檔案 第乙個檔案 fang.cs using system using system.collections.generic using system.text using system.windows.forms using system.drawing namespace snak...
貪吃蛇遊戲
include include include include include 使用當前時間做種子 enum dir 列舉型別enum dir 圍牆 class fencef 定義物件 畫框框 void fence initfence 顯示框框 void fence outputf int snak...