前提:

遇到许多问题,没有参考大佬一些方法是敲不出来的。。。Orz

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace control_move
{
class Map
{
public const int mapsize = 11;
private int r;//行
private int c;//列
public string[,] map = new string[mapsize,mapsize]; public void creat()//画边界
{
for(r=0;r<mapsize;r++)
{
for(c=0;c<mapsize;c++)
{
if (r == 0 || r == 10)
map[r, c] = "█";
else map[r, c] = " ";
map[r, 0] = "█";
map[r, 10] = "█";
Console.Write(map[r, c]);
}
Console.WriteLine();
}
}
}
class body//物体属性
{
public int x = 1,y=1;//一开始位置
public string mark = "sb";//人物图标
}
class play//进行操作变化
{
body p = new body();
public char move;//输入键
public void movement(char move, Map map)
{
switch (move)
{
case 'a':
case 'A':
{
if(map.map[p.y-1,p.x]!= "█")//不撞墙
{
map.map[p.y, p.x] = " ";//将原本位置的人物标识,变空
Console.SetCursorPosition(2 * p.y, p.x);//这边真的不太懂,没有这个是不行的,会出错,会出现重复像
Console.Write(map.map[p.y, p.x]);//这边输出
p.y = p.y - 1;
map.map[p.y, p.x] = p.mark;//移动到的位置
Console.SetCursorPosition(2 * p.y, p.x);
Console.Write(map.map[p.y, p.x]);//输出该位置,以下同理
}
break;
}
case 'd':
case 'D':
{
if (map.map[p.y + 1, p.x] != "█")
{
map.map[p.y, p.x] = " ";
Console.SetCursorPosition(2 * p.y, p.x);
Console.Write(map.map[p.y, p.x]);
p.y = p.y + 1;
map.map[p.y, p.x] = p.mark;
Console.SetCursorPosition(2 * p.y, p.x);
Console.Write(map.map[p.y, p.x]);
}
break;
}
case 'w':
case 'W':
{
if (map.map[p.y, p.x-1] != "█")
{
map.map[p.y, p.x] = " ";
Console.SetCursorPosition(2 * p.y, p.x);
Console.Write(map.map[p.y, p.x]);
p.x = p.x - 1;
map.map[p.y, p.x] = p.mark;
Console.SetCursorPosition(2 * p.y, p.x);
Console.Write(map.map[p.y, p.x]);
}
break;
}
case 's':
case 'S':
{
if (map.map[p.y, p.x+1] != "█")
{
map.map[p.y, p.x] = " ";
Console.SetCursorPosition(2 * p.y, p.x);
Console.Write(map.map[p.y, p.x]);
p.x = p.x + 1;
map.map[p.y, p.x] = p.mark;
Console.SetCursorPosition(2 * p.y, p.x);
Console.Write(map.map[p.y, p.x]);
}
break;
}
}
}
}
class Program
{
static void Main(string[] args)
{
Map world = new Map();
play player = new play();
ConsoleKeyInfo input;//从键盘键入
world.creat();
while(true)
{
input = Console.ReadKey();//输入方向
player.move = input.KeyChar;//进行转化
player.movement(player.move, world);
Console.SetCursorPosition(0,11);//重置光标位置
Console.Write(' ');//
Console.SetCursorPosition(0, 11);//没有以下这几个会使得你输入的键出现在游戏中
}
}
}
}

大部分问题都还好,最后都能知道其操作方法了,就是光标的重置问题不是很懂

github

2D命令行小游戏Beta1.0的更多相关文章

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

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

  2. C#2d命令行小游戏

    [ 星 辰 · 第 二 条 约 定 ] 要求 空地:空格 | 边界/墙:'█' | 人物:'♜' 实现人物的上下左右移动 记录关系图.流程图.设计过程遇到的问题及解决 项目压缩包 [项目源码](htt ...

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

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

  4. 一个打砖块的小游戏1.0 KILL THE BLOCKS !

    /******************************************** * 程序名称:MR.DUAN 的打砖块(KILL THE BLOCKS !) * 作 者:WindAutum ...

  5. 软件工程:黄金G点小游戏1.0

    我们要做的是黄金G点小游戏: N个同学(N通常大于10),每人写一个0~100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值. ...

  6. python写的battle ship小游戏 - 1.0

    最近学python,这是今天写的一个小游戏. from random import randint class Board(object): board = [] def __init__(self, ...

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

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

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

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

  9. Linux命令行小插曲

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

随机推荐

  1. null == undefined ?

    最近在看<JavaScript高级程序设计>一书,书中讲到相等操作符(==)时说,要比较相等性之前,不能将 null 和 undefined 转换成其他任何值,但要记住 null == u ...

  2. 6.linux下部署 web 项目

    安装java 1.下载 linux 环境的jdk 2.上传该压缩包到 linux 系统中并且解压 tar -zxvf 压缩包名 3.配置环境变量并且刷新配置 export JAVA_HOME=/ali ...

  3. ios UIButton改背景

    以下orangeButton.png与orangeButtonHighlight.png分别用于按钮平常状态和被点击时的状态: UIImage *buttonImage = [[UIImage ima ...

  4. 解决js中post提交数据并且跳转到指定页面的问题总结

    今天在开发中过程中遇到了这个问题,js中利用JQuery中的 $.post("url", id, function(){}); 这个方法是数据提交正常,但是后台处理完成之后跳转无法 ...

  5. angular学习(一)-- Expression

    1.1 表达式:Expression 在AngularJS中,表达式是一种类似于模板引擎的语法, 可以在书写的位置 "输出" 数据. 基本使用 表达式写在双大括号内:{{ expr ...

  6. %appdata%目录下配置文件修改

    %appdata%目录下配置文件修改 1.假设%appdata%\leez Program目录下有Cache子目录和配置文件Config.ini内容为: [Version] Version=1.0.0 ...

  7. Cache替换算法:LRU与LFU的区别

    LFU(Least Frequently Used)最近最少使用算法.它是基于“如果一个数据在最近一段时间内使用次数很少,那么在将来一段时间内被使用的可能性也很小”的思路.LRU(Least Rece ...

  8. WebClient 调用api

    使用: /// <summary> /// 获取用户信息 /// </summary> /// <param name="code"></ ...

  9. 【Tomcat】Invalid character found in the request target

    Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC ...

  10. 【Ubuntu 16】源码包安装Apache Httpd

    源码包安装适合初学者使用. 背景信息 APR (Apache Portable Runtime) Apache可移植运行的任务(APR)项目是创建和维护软件库,为底层平台的具体实现提供了一个可预见的和 ...