基于c#控制台应用开发一个贪吃蛇小游戏
时间: 2023-08-02 10:16:59 浏览: 50
好的,下面是基于C#控制台应用的贪吃蛇小游戏的代码实现。
```csharp
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleSnake
{
class Program
{
static void Main(string[] args)
{
Console.CursorVisible = false; //隐藏光标
Console.SetWindowSize(60, 30); //设置窗口大小
Console.SetBufferSize(60, 30); //设置缓冲区大小
//画边框
for (int i = 0; i < 60; i++)
{
Console.SetCursorPosition(i, 0);
Console.Write("#");
Console.SetCursorPosition(i, 29);
Console.Write("#");
}
for (int i = 0; i < 30; i++)
{
Console.SetCursorPosition(0, i);
Console.Write("#");
Console.SetCursorPosition(59, i);
Console.Write("#");
}
//初始化蛇
List<Point> snake = new List<Point>();
snake.Add(new Point(30, 15));
snake.Add(new Point(29, 15));
snake.Add(new Point(28, 15));
snake.Add(new Point(27, 15));
snake.Add(new Point(26, 15));
//初始化食物
Point food = new Point(RandomNumber(1, 58), RandomNumber(1, 28));
Console.SetCursorPosition(food.x, food.y);
Console.Write("*");
//初始化方向
Direction direction = Direction.Right;
//初始化分数
int score = 0;
while (true)
{
//获取键盘输入
if (Console.KeyAvailable)
{
ConsoleKeyInfo key = Console.ReadKey(true);
switch (key.Key)
{
case ConsoleKey.UpArrow:
if (direction != Direction.Down)
direction = Direction.Up;
break;
case ConsoleKey.DownArrow:
if (direction != Direction.Up)
direction = Direction.Down;
break;
case ConsoleKey.LeftArrow:
if (direction != Direction.Right)
direction = Direction.Left;
break;
case ConsoleKey.RightArrow:
if (direction != Direction.Left)
direction = Direction.Right;
break;
}
}
//移动蛇
Point head = snake[0];
Point newHead = new Point(head.x, head.y);
switch (direction)
{
case Direction.Up:
newHead.y--;
break;
case Direction.Down:
newHead.y++;
break;
case Direction.Left:
newHead.x--;
break;
case Direction.Right:
newHead.x++;
break;
}
snake.Insert(0, newHead);
Console.SetCursorPosition(newHead.x, newHead.y);
Console.Write("@");
if (newHead.x == food.x && newHead.y == food.y) //吃到食物
{
food = new Point(RandomNumber(1, 58), RandomNumber(1, 28));
Console.SetCursorPosition(food.x, food.y);
Console.Write("*");
score += 10;
}
else //没有吃到食物
{
Point tail = snake[snake.Count - 1];
Console.SetCursorPosition(tail.x, tail.y);
Console.Write(" ");
snake.RemoveAt(snake.Count - 1);
}
//判断是否撞到边框或自己
if (newHead.x == 0 || newHead.x == 59 || newHead.y == 0 || newHead.y == 29)
break;
for (int i = 1; i < snake.Count; i++)
{
if (newHead.x == snake[i].x && newHead.y == snake[i].y)
{
Console.SetCursorPosition(0, 31);
Console.Write("Game Over! Your score is: " + score);
return;
}
}
//延迟一段时间
System.Threading.Thread.Sleep(100);
}
}
static int RandomNumber(int min, int max) //生成指定范围内的随机数
{
Random random = new Random();
return random.Next(min, max + 1);
}
}
enum Direction //方向枚举
{
Up,
Down,
Left,
Right
}
class Point //坐标类
{
public int x;
public int y;
public Point(int x, int y)
{
this.x = x;
this.y = y;
}
}
}
```
希望这个代码对你有帮助!