#include<stdio.h>
#include<stdlib.h>
int main(){
Player P = new Player();
P.Play();
return 0;
}
class Snake
{
public int x, y;
public Snake() { }
public Snake(int x,int y) { this.x = x;this.y = y; }
public Snake(Snake S) { this.x = S.x;this.y =S.y; }
}
class Player
{
int seeld = 100;//速度
Random R = new Random();//随机
public enum Move
{
up,down,left,right
}
Move monment = Move.right;//开局移动方向
int[,] Map = new int[40, 40];
List<Snake> list = new List<Snake>() {new Snake(10,10),new Snake(11,10),new Snake(12,10) };
void A()
{
foreach (var item in list)
{
Crose(item.x, item.y, 0);
}
}
void RandFriut()
{
int X = R.Next(1, 39);
int Y = R.Next(1, 39);
if (Map[X, Y] == 0)
{
Map[X, Y] = 2;
Crose(X, Y, 3);
}
else RandFriut();
}
void SnakeMove()
{
Snake Head = list.ElementAt(list.Count - 1);
switch (monment)
{
case Move.up:
if (Head.y != 1&&Map[Head.x,Head.y-1]!=1)
{
list.Add(new Snake(Head.x, Head.y - 1));
Crose(Head.x, Head.y-1, 1);
}
else Gameover();
break;
case Move.down:
if (Head.y != 38 && Map[Head.x, Head.y + 1] !=1)
{
list.Add(new Snake(Head.x, Head.y+ 1));
Crose(Head.x, Head.y+1, 1);
}
else Gameover();
break;
case Move.left:
if (Head.x != 1 && Map[Head.x-1, Head.y ] !=1)
{
list.Add(new Snake(Head.x-1, Head.y ));
Crose(Head.x-1, Head.y, 1);
}
else Gameover();
break;
case Move.right:
if (Head.x != 38 && Map[Head.x+1, Head.y ] !=1)
{
list.Add(new Snake(Head.x+1, Head.y));
Crose(Head.x+1, Head.y, 1);
}
else Gameover();
break;
default:
break;
}
}
private void Gameover()
{
print("游戏结束");
Environment.Exit(0);
}
void Crose(int x,int y,int z)
{
if (z == 0)
{
Console.SetCursorPosition(x * 2, y);
Console.Write("□");
Map[x, y] = 1;
}
if (z ==1)
{
Console.SetCursorPosition(x * 2, y);
print("□");
if (Map[x, y] != 2) Delete();
else RandFriut();
Map[x, y] = 1;
}
if (z == 2)
{
Console.SetCursorPosition(x * 2, y);
print(" ");
Map[x, y] = 0;
}
if (z == 3)
{
Console.SetCursorPosition(x * 2, y);
print("◆");
}
Console.SetCursorPosition(0,41);
}
void K()
{
A();
RandFriut();
while (true)
{
Thread.Sleep(seeld);
SnakeMove();
}
}
void InputKey()
{
while (true)
{
char a = Console.ReadKey().KeyChar;
Snake snake1 = list[list.Count - 1];
Snake snake2 = list[list.Count-2];
if (a == 'w' || a == 'W')
{
if (snake1.y != snake2.y + 1) monment = Move.up;
}
if (a == 's' || a == 'S')
{
if (snake1.y != snake2.y -1) monment = Move.down;
}
if (a == 'a' || a == 'A')
{
if (snake1.x-1 != snake2.x) monment = Move.left;
}
if (a == 'd' || a == 'D')
{
if (snake1.x + 1 != snake2.x) monment = Move.right;
}
}
}
private void Delete()
{
Snake W = list[0];
Crose(W.x, W.y, 2);
list.RemoveAt(0);
}
public void Play()
{
Show();
new Thread(InputKey).Start();
K();
}
void Show()
{
for (int i = 0; i <40 ; i++)
{
for (int j = 0; j < 40; j++)
{
if(i==0||i==39||j==0||j==39)print("55");
else print(" ");
}
print("\n");
}
}
}
C语言贪吃蛇
最新推荐文章于 2023-03-17 22:50:00 发布