2D命令行小游戏Beta1.0_代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _2D命令行小游戏Beta1_0
{
    class Game
    {
        public Game(int scale)
        {
            _scale = scale;
            peox = 1;
            peoy = 1;
            map = new int[_scale, _scale];
            for (int i = 0; i < _scale; i++)
            {
                map[0, i] = 1;
                map[_scale - 1, i] = 1;
                map[i, 0] = 1;
                map[i, _scale - 1] = 1;
            }
            _score = 0;
            foodx = peox;
            foody = peoy;
            spawnFood();
            direction = 0;
        }
        public void play()
        {
            disMap();
            while (true)
            {
                var k = Console.ReadKey();//System.ConsoleKeyInfo
                switch (k.KeyChar)
                {
                    case ‘w‘:
                    case ‘W‘: direction = 1; break;
                    case ‘s‘:
                    case ‘S‘: direction = 2; break;
                    case ‘a‘:
                    case ‘A‘: direction = 3; break;
                    case ‘d‘:
                    case ‘D‘: direction = 4; break;
                    case ‘e‘:
                    case ‘E‘: return;
                }
                switch (direction)
                {
                    case 1: if (peox > 1) peox--; disMap(); break;
                    case 2: if (peox < _scale - 2) peox++; disMap(); break;
                    case 3: if (peoy > 1) peoy--; disMap(); break;
                    case 4: if (peoy < _scale - 2) peoy++; disMap(); break;
                }
            }
        }
        private void disMap()
        {
            Console.Clear();
            for (int i = 0; i < _scale; i++)
            {
                for (int j = 0; j < _scale; j++)
                {
                    if (peox == foodx && peoy == foody)
                    {
                        _score += 100;
                        spawnFood();
                    }
                    if (i == peox && j == peoy)
                        Console.Write("◎");
                    else if (i == foodx && j == foody)
                        Console.Write("※");
                    else if (map[i, j] == 0)
                        Console.Write("  ");
                    else if (map[i, j] == 1)
                        Console.Write("█");

                }
                Console.WriteLine();
            }
            Console.WriteLine("WSAD:move  E:exit");
            Console.WriteLine("Your score: "+_score.ToString());
        }
        private void spawnFood()
        {
            Random rd = new Random();
            while (foodx == peox && foody == peoy)
            {
                foodx = rd.Next(1, _scale - 1);
                foody = rd.Next(1, _scale - 1);
            }
        }
        private int peox, peoy;
        private int[,] map;// 0 empty   1 wall
        private int _scale;
        private long _score;
        private int foodx,foody;
        private int direction;
    }
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("please input scale(2<=n<=25):");
            int sca = Convert.ToInt32(Console.ReadLine());
            if(sca>=2 && sca<=25)
            {
                Game game = new Game(sca+2);
                game.play();
            }

        }
    }
}
时间: 2024-10-22 11:16:35

2D命令行小游戏Beta1.0_代码的相关文章

贪吃蛇小游戏java实现代码分析

贪吃蛇小游戏java实现代码分析 贪吃蛇的小游戏,网上的代码比较多,今天周五,在教研室没啥事做,在电脑中发现了一个贪吃蛇的小游戏,于是就看了下实现的源码,发现别人写的代码确实挺好的,自己也是边加注释边进行理解的去看别人实现的游戏源码,发现还是挺有意思的.自己花了一个下午的时间看了源码,也加了一点小小的功能,于是,不写篇博客觉得对不起自己也,哈哈哈. 此游戏代码的思路非常的清晰,也相当好理解,没有太多难的地方,不过有很多值得学习的地方,因为,这份源码中,对java.awt包中的很多类的很多方法都进

你值得了解的 10 个有趣的 Linux 命令行小技巧

摘要: 我非常喜欢使用命令,因为它们比 GUI(图形用户界面)应用程序对 Linux 系统提供更多的控制,因此,我一直在寻找一些有趣的方法让 Linux 的操作变得简单好玩,主要是基于终端操作. 当我们发现使用 Linux 的新技巧时,尤其是像我这样的命令行极客,我们总会感到非常来劲. 我非常喜欢使用命令,因为它们比 GUI(图形用户界面)应用程序对 Linux 系统提供更多的控制,因此,我一直在寻找一些有趣的方法让 Linux 的操作变得简单好玩,主要是基于终端操作. 当我们发现使用 Linu

Linux 用户的 3 个命令行小技巧

Linux 用户的 3 个命令行小技巧 原文:http://www.tecmint.com/useful-linux-hacks-commands/作者: Avishek Kumar译文:LCTT  https://linux.cn/article-5635-1.html译者: goreliu Linux世界充满了乐趣,我们越深入进去,就会发现越多有趣的事物.我们会努力给你提供一些小技巧,让你和其他人有所不同,下面就是我们准备的3个小技巧. 1. 如何在不使用Cron的情况调度Linux下的任务

PHP执行Linux命令行小例——文件压缩

前几天工作中,需要将3个txt文件,打包成*.zip down到本地…… 一开始,我和普通青年一样,想到用PHP内置的 ZipArchive,代码看起来应该是这样的: /*拆分成3个txt文件 分别是wow_1.txt wow_2.txt 和 wow_3.txt*/ $zip=new ZipArchive(); $zipfile='./Exl_file/wow.zip'; if($zip->open($zipfile,ZIPARCHIVE::CREATE)===TRUE){ $zip->add

[C#小程序]命令行小程序之你要买大杯小杯还是中杯?

实现效果: 屏幕出现提示:1.小杯3元:2.中杯4元:3.大杯5元,请输入对应数字选择... 用户输入数字则提示对应的结果:小杯,请支付3元:输入错误则默认中杯 下面是源代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleManyHellos {     class Progr

Java太阳系小游戏分析和源代码

-20150809 近期看了面向对象的一些知识.然后跟着老师的解说做了一个太阳系各行星绕太阳转的小游戏,来练习巩固一下近期学的知识: 用到知识点:类的继承.方法的重载与重写.多态.封装等 分析: 1.须要载入图片.绘图 2.建一个面板.主页面 3.行星类 . . . 效果图: 先看一下源代码结构图: 如今逐步分析各个类的功能: 1)工具类-----util包中 --Constant类   封装了游戏中用到的常量 --GameUtil类  封装了游戏的图片载入功能 --MyFrame类  封装了游

GitHub中开启二次验证Two-factor authentication,如何在命令行下更新和上传代码

最近在使用GitHub管理代码,在git命令行管理代码时候遇到一些问题.如果开起了二次验证(Two-factor authentication两个要素认证),命令行会一直提示输入用户名和密码.查找了一下解决方法如下: 1.准备Token信息.登陆GitHub,通过右上角的设置按钮进入设置页面,点击Personal access tokens,为你的账号创建一个Token, 创建好以后,保存这个Token,最好保存到你本地文件,因为离开页面后这个将会找不到了. 然后回到电脑的命令行界面. 2.设置

2、链接数据库+mongodb基础命令行+小demo

链接数据库并且打印出数据的流程:1.在CMD里面输入 mongod 2.在CMD里面输入 mongo 3.在输入mongodb命令行里面进行操作,首先输入 show dbs 来查看是否能够链接得上库4.定义db var db = connect('log'); //链接数据库 链接的是哪一个数据库?5.插入数据:db.login.insert(jsonData); //插入数据 5.命令行一:基础命令行(1).查看存在数据库命令 : show dbs (2).查看数据库版本命令 : db.ver

mongodb命令行group分组和java代码中group分组

group分组统计是数据库比较常用的功能,mongodb也不例外.不过相对于普通的增删改查,group操作就略微麻烦一些, 这里对group在shell中的操作.使用java原生代码操作以及集成spring进行操作进行一个简单的归纳总结,分组的途径和方法应该都有多种,这里每一样只举一例. 本例中数据源如下: 需要使用group实现的目的是:按年龄分组统计出每一组的数量. 1.mongo shell中执行如下命令: db.test.group({ key:{"age":1}, initi