66 lines
2.0 KiB
C#
66 lines
2.0 KiB
C#
|
|
using System;
|
||
|
|
using System.Collections.Generic;
|
||
|
|
using System.Linq;
|
||
|
|
using System.Text;
|
||
|
|
using System.Threading.Tasks;
|
||
|
|
|
||
|
|
namespace 贪吃蛇
|
||
|
|
{
|
||
|
|
class GameScene : ISceneUpdate
|
||
|
|
{
|
||
|
|
Map map;
|
||
|
|
Snake snake;
|
||
|
|
Food food;
|
||
|
|
public GameScene()
|
||
|
|
{
|
||
|
|
map = new Map();
|
||
|
|
snake = new Snake(40, 10);
|
||
|
|
food = new Food(snake);
|
||
|
|
}
|
||
|
|
public void Update()
|
||
|
|
{
|
||
|
|
|
||
|
|
map.Draw();//画地图
|
||
|
|
food.Draw();//画食物
|
||
|
|
snake.Move();//让蛇动起来
|
||
|
|
snake.Draw();//画蛇
|
||
|
|
if (snake.CheckEnd(map))//检测游戏是否结束
|
||
|
|
{
|
||
|
|
Game.ChangeScene(E_Scene.End);
|
||
|
|
}
|
||
|
|
snake.CheckEat(food);//检测蛇是否吃到食物
|
||
|
|
Thread.Sleep(200);//控制蛇的移动速度
|
||
|
|
//检测用户输入
|
||
|
|
if (Console.KeyAvailable)//Console.KeyAvailable的作用是:如果有按键输入才返回Ture,防止卡住
|
||
|
|
{
|
||
|
|
switch (Console.ReadKey(true).Key)
|
||
|
|
{
|
||
|
|
case ConsoleKey.W:
|
||
|
|
case ConsoleKey.UpArrow:
|
||
|
|
snake.ChangeDirection(E_MoveDirection.Up);
|
||
|
|
//向上
|
||
|
|
break;
|
||
|
|
case ConsoleKey.S:
|
||
|
|
case ConsoleKey.DownArrow:
|
||
|
|
snake.ChangeDirection(E_MoveDirection.Down);
|
||
|
|
//向下
|
||
|
|
break;
|
||
|
|
case ConsoleKey.A:
|
||
|
|
case ConsoleKey.LeftArrow:
|
||
|
|
snake.ChangeDirection(E_MoveDirection.Left);
|
||
|
|
//向左
|
||
|
|
break;
|
||
|
|
case ConsoleKey.D:
|
||
|
|
case ConsoleKey.RightArrow:
|
||
|
|
snake.ChangeDirection(E_MoveDirection.Right);
|
||
|
|
//向右
|
||
|
|
break;
|
||
|
|
default:
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|