zoukankan      html  css  js  c++  java
  • C#2d命令行小游戏

    【 星 辰 · 第 二 条 约 定 】

    要求

    1. 空地:空格 | 边界/墙:'█' | 人物:'♜'
    2. 实现人物的上下左右移动
    3. 记录关系图、流程图、设计过程遇到的问题及解决

    项目压缩包

    [项目源码](http://www.cnblogs.com/mercuialC/p/6409090.html)

    关系图:

    流程图

    设计过程中遇到的问题及解决:

    看着好像很简单,但是实际上遇到不少问题

    1. 铺设地图,那些墙壁█如何铺设,首先我想用两个循环铺设
      第一个方法:
     for (int j = 0; j < buy; j++)
                    {
                        if (i == 0 || i == 19)
                        {
                            Console.Write("1");
                        }
                        else
                        {
                            Console.Write("1");
                            for (int m = 0; m < buy - 2; m++)
                            {
                                Console.Write(" ");
                            }
                            Console.WriteL("1");
                        }
                        
    

    然后问题来了,铺的乱七八糟,细想了很久不知道哪错了,后来索性换了代码就铺成功率了

    const int buy = 20;
                for (int i = 0; i < buy; i++)
                {
                    for (int j = 0; j < buy; j++)
                    {
                        if (i == 0 || i == buy - 1 || j == 0 || j == buy - 1)
                            Console.Write("█");
                        else
                            Console.Write(" ");
                    }
                    Console.WriteLine();
                }
    
    1. 然后遇到的问题是如何随机放置一个人物,我利用了随机函数去取人物的横纵坐标然后放置:
     Random _where=new Random();               
                    Dit renwu = new Dit();
                    renwu.x = _where.Next(1, buy - 2);
                    renwu.y = _where.Next(1, buy - 2);               
                    set(renwu.x, renwu.y, b);
    
    const char b='@';
    Console.SetCursorPosition(2 * y, x);
               Console.Write(b);
               Console.SetCursorPosition(0, buy);
    
    1. 然后如何清屏:
    Console.Clear();
    
    1. 如何隐藏光标:
    Console.CursorVisible = false;
    
    1. 如何实现任务的移动,我利用了switch函数,然后将移动后的横纵坐标改变,并在原来的地方放置 一个‘ ’这样就实现了移动
    for (; ; )
                    {
                        c = Console.ReadKey(true).KeyChar;
    
    
                        switch (c)
                        {
    
                            case 'w': set(renwu.x, renwu.y, d); set(renwu.x - 1, renwu.y, b); renwu.x--; Thread.Sleep(speed); break;
                            case 'a': set(renwu.x, renwu.y, d); set(renwu.x, renwu.y - 1, b); renwu.y--; Thread.Sleep(speed); break;
                            case 's': set(renwu.x, renwu.y, d); set(renwu.x + 1, renwu.y, b); renwu.x++; Thread.Sleep(speed); break;
                            case 'd': set(renwu.x, renwu.y, d); set(renwu.x, renwu.y + 1, b); renwu.y++; Thread.Sleep(speed); break;
                        }
    
    1. 最后一点没想通的是刚开始我的食物放置也是x,y然后只能被吃两次就不会再出来食物了。后来我将放置改为y,x结果就解决了,虽然解决了但是还是不知道为什么
    Random where = new Random();
                    Random _where=new Random();               
                    Dit renwu = new Dit();
                    renwu.x = _where.Next(1, buy - 2);
                    renwu.y = _where.Next(1, buy - 2);               
                    set(renwu.x, renwu.y, b);
                    bool food = false;
                    Dit _food=new Dit();         
                    _food.x=where.Next(1,buy-2);
                    _food.y=where.Next(1,buy-2);
                    set(_food.y,_food.x,e)
    
  • 相关阅读:
    UVa 10905
    有道云笔记同步IT笔试面试资源
    送给80、90后的人生经典语录,别再孩子气了
    ch1 位姿表示和旋转矩阵
    jetson nano使用RealSenseD400深度相机
    jetson nano电源(性能)管理
    http://emanual.robotis.com/docs/en/platform/turtlebot3/overview/
    Jetson Nano配置与使用——中文输入法ibus配置
    jetson nano更改源
    ROS多机通信
  • 原文地址:https://www.cnblogs.com/mercuialC/p/6408317.html
Copyright © 2011-2022 走看看