【橙子】C#控制台--贪吃蛇

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#制作程序要比其他语言方便的多,怪不得是“全世界最优秀的语言”
体验极佳!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值