【 星 辰 · 第 二 条 约 定 】

要求

  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)

C#2d命令行小游戏的更多相关文章

  1. 2d命令行小游戏源码

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  2. 2D命令行小游戏Beta1.0

    前提: 遇到许多问题,没有参考大佬一些方法是敲不出来的...Orz using System; using System.Collections.Generic; using System.Linq; ...

  3. 写了个 Markdown 命令行小工具,希望能提高园友们发文的效率!

    写了个 Markdown 命令行小工具,希望能提高园友们发文的效率! 前言 笔者使用 Typora 来编写 Markdown 格式的博文,图片采用的是本地相对路径存储(太懒了不想折腾图床). 时间久了 ...

  4. 分区表,桶表,外部表,以及hive一些命令行小工具

    hive中的表与hdfs中的文件通过metastore关联起来的.Hive的数据模型:内部表,分区表,外部表,桶表受控表(managed table):包括内部表,分区表,桶表 内部表: 我们删除表的 ...

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

    链接数据库并且打印出数据的流程:1.在CMD里面输入 mongod 2.在CMD里面输入 mongo 3.在输入mongodb命令行里面进行操作,首先输入 show dbs 来查看是否能够链接得上库4 ...

  6. Linux命令行小插曲

    当命令行出错活出现<时,可使用 ctrl+c强制退出

  7. win32命令行小程序获取指定文件夹或者目录下面的所有文件大小,文件数量,目录数量

    #include <Windows.h> #include <stdio.h> #include <tchar.h> LARGE_INTEGER       lgA ...

  8. Linux命令行 3大技巧归纳

    在软件开发的世界中,作为web端程序猿打交道最多的操作系统相信就是Linux系统了吧.而对于Linux系统的使用,如果能掌握一些小技巧,在程序开发.调试的过程中,相信做事的效率也会有一些提升.下面就和 ...

  9. 个推Node.js 微服务实践:基于容器的一站式命令行工具链

    作者:个推Node.js 开发工程师 之诺 背景与摘要 由于工程数量的快速增长,个推在实践基于 Node.js 的微服务开发的过程中,遇到了如下问题: 1. 每次新建项目都需要安装一次依赖,这些依赖之 ...

随机推荐

  1. Linux中JDK的安装步骤

    1.下载jdk安装包rpm格式安装 http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa8 ...

  2. Python-知识点小计

    1.python赋值.浅拷贝.深拷贝区别:https://www.cnblogs.com/xueli/p/4952063.html: 2.python的hasattr(),getattr(),sett ...

  3. lamp 安装 apache

    lamp安装 httpd-2.2.4.tar.gz :http://download.csdn.net/detail/wulvla020311/8046141 先检查一下装的东西都在不在:rpm -q ...

  4. day 19 反射

    1.isinstance, type, issubclass 的含义 isinstance:  判断你给对象时候是xxx类型的.(向上判断) type: 返回xxx对象的数据类型 issubclass ...

  5. QOS-配置拥塞避免机制

    QOS-配置拥塞避免机制 2018年7月7日 20:29 尾丢弃及其导致的问题: 队列满时路由器进行尾丢弃,即新到的所有数据包都全部丢弃 丢弃的结果造成高延迟.高抖动.丧失服务保证.TCP全局同步.T ...

  6. VIM 键

    输入 vimtutor命令,可以打开Linux使用手册(基本使用). ***. 插入键: A: 行尾插入 a: 字符后面插入 i: 字符前面插入 I: 行首插入 r:只替换一次字符  R:一直替换,直 ...

  7. Prism for WPF 搭建一个简单的模块化开发框架(六)隐藏菜单、导航

    原文:Prism for WPF 搭建一个简单的模块化开发框架(六)隐藏菜单.导航 这个实际上是在聊天之前做的,一起写了,也不分先后了 看一下效果图,上面是模块主导航,左侧是模块内菜单,现在加一下隐藏 ...

  8. 武汉Uber优步司机奖励政策

    ·武汉奖励前提 *必须满足当周平均评分4.7星及以上,且当周接单率70%及以上,才有资格获得奖励 *刷单和红线行为立即封号并取消当周全部奖励及车费! *从4月20日起,所有ETC和机场高速费用不参与奖 ...

  9. LeetCode:35. Search Insert Position(Easy)

    1. 原题链接 https://leetcode.com/problems/search-insert-position/description/ 2. 题目要求 给定一个已经排好序的数组和一个目标值 ...

  10. 4、Java并发编程:synchronized

    Java并发编程:synchronized 虽然多线程编程极大地提高了效率,但是也会带来一定的隐患.比如说两个线程同时往一个数据库表中插入不重复的数据,就可能会导致数据库中插入了相同的数据.今天我们就 ...