贪吃蛇小项目
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace 贪吃蛇
|
||||
{
|
||||
abstract class BaseScene : ISceneUpdate
|
||||
{
|
||||
protected int nowSceneIndex = 0;
|
||||
protected string title;
|
||||
protected string str1;
|
||||
|
||||
public abstract void PressEnter();
|
||||
public void Update()
|
||||
{
|
||||
//要完成的内容:绘制开始和结束场景,并完成切换选择功能
|
||||
Console.ForegroundColor = ConsoleColor.White;
|
||||
|
||||
//绘制标题
|
||||
Console.SetCursorPosition(Game.w / 2 - title.Length, 5);
|
||||
Console.Write(title);
|
||||
|
||||
//绘制选项
|
||||
Console.SetCursorPosition(Game.w / 2 - str1.Length, 8);
|
||||
Console.ForegroundColor = nowSceneIndex == 0 ? ConsoleColor.Red : ConsoleColor.White;
|
||||
Console.Write(str1);
|
||||
|
||||
Console.SetCursorPosition(Game.w / 2 - 4, 10);
|
||||
Console.ForegroundColor = nowSceneIndex == 1 ? ConsoleColor.Red : ConsoleColor.White;
|
||||
Console.Write("结束游戏");
|
||||
//根据nowSceneIndex绘制wsj选中的索引
|
||||
switch (Console.ReadKey(true).Key)
|
||||
{
|
||||
case ConsoleKey.W:
|
||||
nowSceneIndex = 0;
|
||||
break;
|
||||
case ConsoleKey.S:
|
||||
nowSceneIndex = 1;
|
||||
break;
|
||||
case ConsoleKey.Enter:
|
||||
PressEnter();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace 贪吃蛇
|
||||
{
|
||||
class BeginScene : BaseScene
|
||||
{
|
||||
public BeginScene()
|
||||
{
|
||||
title = "贪吃蛇小游戏";
|
||||
str1 = "开始游戏";
|
||||
}
|
||||
public override void PressEnter()
|
||||
{
|
||||
//根据nowSceneIndex的值决定按下回车后做什么
|
||||
if( nowSceneIndex == 0 )
|
||||
{
|
||||
//切换到开始游戏
|
||||
Game.ChangeScene(E_Scene.Game);
|
||||
}
|
||||
else
|
||||
{
|
||||
//结束游戏
|
||||
Environment.Exit(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Security.Cryptography.X509Certificates;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace 贪吃蛇
|
||||
{
|
||||
class EndScene : BaseScene
|
||||
{
|
||||
public EndScene()
|
||||
{
|
||||
title = "游戏结束";
|
||||
str1 = "重新开始";
|
||||
}
|
||||
public override void PressEnter()
|
||||
{
|
||||
//根据nowSceneIndex的值决定按下回车后做什么
|
||||
if (nowSceneIndex == 0)
|
||||
{
|
||||
//切换到开始游戏
|
||||
Game.ChangeScene(E_Scene.Begin);
|
||||
}
|
||||
else
|
||||
{
|
||||
//结束游戏
|
||||
Environment.Exit(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user