贪吃蛇编写提纲
致谢:
感谢 Ronnie Mooney ,我是在学习了他的视频后完成这个视频的,你可以在 找到他的视频(需FQ,请自备梯子)。
-
编写
Input
静态类- 初始化静态变量
private static readonly Hashtable _keys = new Hashtable()
- 编写方法
public static void ChangeState(Keys key, bool state)
- 编写方法
public static bool Pressed(Keys key)
- 初始化静态变量
-
编写
SnakePart
类该类仅有两个变量
X
和Y
,以及一个构造函数,构造函数的作用就是为X
和Y
赋值。 -
编写
Direction
枚举 -
编写
SnakeForm
表单- 添加一个
PictureBox
控件,命名为pbCanvas
,并将大小设置为 320 * 240,背景色设置为LightSkyBlue
- 调整表单大小
- 添加
SnakeForm_KeyDown
和SnakeForm_KeyUp
事件 - 添加
pbCanvas_Paint
事件,该事件的处理函数就是调用draw()
- 添加一个
_score
变量 - 添加一个
_gameover
变量 - 添加一个
_direction
变量 - 添加一个
_snake
列表变量 - 添加一个
_food
变量 - 添加一个
_gameLoop
变量 - 添加一个
_snakeLoop
变量 - 添加一个
_snakeRate
变量 - 初始化各变量,设置定时器变量的回调方法和回调间隔(gameLoop: 1000 / 60,snakeLoop:1000 / _snakeRate),并启动定时器,调用
startGame
- 编写方法
startGame()
- 重置变量
- 实例化
head
并添加进_snake
- 调用
generateFood
- 编写
generateFood()
- 随机产生一个
SnakePart
并赋值给_food
,需要确保新产生的_food
不在蛇身上
- 随机产生一个
- 编写方法
gameover()
- 将
_gameover
置为true
- 将
- 编写方法
draw()
- 编写方法
updateGame()
- 编写方法
updateSnake()
- 添加一个