C#控制台–贪吃蛇
作者心得
好家伙,又来一个贪吃蛇!!!
你到底有几个贪吃蛇!!!
放心,我还有python,java,js等等的贪吃蛇
贪吃蛇真的成为一个新手入门的程序
非常非常的合适!
你可真别小看这个玩意儿,作为一个非游戏引擎,弄出一个可视化界面,已经贪吃蛇的逻辑,还是要稍加思考的呢!
由于是控制台项目,这个玩意儿也是面相过程!
源代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
using System.Threading;
using System.Runtime.InteropServices;
namespace JYtcs
{
class Game
{
Random sj = new Random();
int i, j, x = 4, y = 4, m, n, f = 0, q, p, ti = 4, end = 0;
string name;
int[] x2 = new int[400];
int[] y2 = new int[400];
char[,] map = new char[20, 20]
{{'#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#'}
,{'#',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','#'}
,{'#',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','#'}
,{'#',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','#'}
,{'#',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','#'}
,{'#',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','#'}
,{'#',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','#'}
,{'#',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','#'}
,{'#',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','#'}
,{'#',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','#'}
,{'#',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','#'}
,{'#',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','#'}
,{'#',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','#'}
,{'#',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','#'}
,{'#',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','#'}
,{'#',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','#'}
,{'#',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','#'}
,{'#',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','#'}
,{'#',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','#'}
,{'#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#'}
};
ConsoleKey k = ConsoleKey.S;
char old = 's';
public void gotoxy(int x, int y) //移动坐标
{
Console.SetCursorPosition(x, y);
}
public void ycgb(bool k)//隐藏光标
{
Console.CursorVisible = k; //隐藏光标
}
void bk()
{
Console.Write("GAME OVER");
// k=getchar();
end = 1;
}
void len()
{
map[m, n] = 'O';
x2[0] = x; y2[0] = y;
for (i = 398; i >= 0; i--)
{
x2[i + 1] = x2[i];
y2[i + 1] = y2[i];
}
}
void wasd()
{
ui:
//if (Console.ReadKey() ==65||Console.ReadKey() == 97)
k = Console.ReadKey().Key;
if (k == ConsoleKey.A)
{
if (old == 'd')
{
k = ConsoleKey.D;
goto ui;
}
old = 'a';
if (map[x, y - 1] == '#' || map[x, y - 1] == '*')
bk();
map[x, y - 1] = map[x, y];
y = y - 1;
}
if (k == ConsoleKey.W)
{
if (old == 's')
{
k = ConsoleKey.S;
goto ui;
}
old = 'w';
if (map[x - 1, y] == '*' || map[x - 1, y] == '#')
bk();
map[x - 1, y] = map[x, y];
x = x - 1;
}
if (k == ConsoleKey.D)
{
if (old == 'a')
{
k = ConsoleKey.A;
goto ui;
}
old = 'd';
if (map[x, y + 1] == '#' || map[x, y + 1] == '*')
bk();
map[x, y + 1] = map[x, y];
y = y + 1;
}
if (k == ConsoleKey.S)
{
if (old == 'w')
{
k = ConsoleKey.W;
goto ui;
}
old = 's';
if (map[x + 1, y] == '*' || map[x + 1, y] == '#')
bk();
map[x + 1, y] = map[x, y];
x = x + 1;
}
map[x2[ti], y2[ti]] = ' ';
gotoxy(2 * y2[ti] + 1, x2[ti] + 1);
Console.Write(" ");
}
void eat()
{
if (map[x, y] == map[q, p])
{
q = sj.Next(1, 20);
p = sj.Next(1, 20);
++ti;
newdan:
for (i = 0; i < ti; i++)
{
if (x2[i] == q && y2[i] == p)
{
q = sj.Next(1, 20);
p = sj.Next(1, 20);
goto newdan;
}
}
map[q, p] = 'O';
m = q; n = p;
f = f + 1;
}
if (map[x, y] == map[m, n])
map[x, y] = '*';
}
void show()
{
map[x, y] = '*';
gotoxy(2 * n + 1, m + 1);
Console.WriteLine("■");
gotoxy(2 * y + 1, x + 1);
if (map[x, y] == '*')
Console.WriteLine("■");
gotoxy(50, 10);
Console.WriteLine("亲爱的"+name+"你的分数为:"+f);
Thread.Sleep(200);
}
void start()
{
q = sj.Next(1, 20);
p = sj.Next(1, 20);
Console.Write("\n欢迎来到贪吃蛇的世界!\n请输入你的玩家名:");
name = Console.ReadLine();
Console.Clear();
gotoxy(1, 1);
for (i = 0; i < 20; i++)
{
Console.WriteLine();
for (j = 0; j < 20; j++)
{
if (map[i, j] == '#')
{
gotoxy(2 * j + 1, i + 1);
Console.Write("■");
}
}
}
}
static void Main(string[] args)
{
Game b = new Game();
b.start();
for (; ; )
{
b.len();
b.wasd();
if (b.end == 1)
break;
b.eat();
b.show();
if (b.ti == 300)
{
Console.Clear();
Console.WriteLine("you are winner");
}
}
Console.Clear();
Console.WriteLine("游戏结束");
}
}
}
效果截图
作者的话
我明显明显感觉
用c#制作程序要比其他语言方便的多,怪不得是“全世界最优秀的语言”
体验极佳!