前提:

遇到许多问题,没有参考大佬一些方法是敲不出来的。。。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. hdu--1026--Ignatius and the Princess I(bfs搜索+dfs(打印路径))

    Ignatius and the Princess I Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (J ...

  2. 线程池ThreadPoolExecutor与阻塞队列BlockingQueue应用

    1.线程池介绍 JDK5.0以上: java.util.concurrent.ThreadPoolExecutor  构造函数签名: public ThreadPoolExecutor( int co ...

  3. 使用 Node.js 搭建一个 API 网关

    原文地址:Building an API Gateway using Node.js 外部客户端访问微服务架构中的服务时,服务端会对认证和传输有一些常见的要求.API 网关提供共享层来处理服务协议之间 ...

  4. 【算法与数据结构】Java实现字符串的全排列及组合

    注:本文记录了代码编写及调试过程,想直接浏览正确答案的请移步文章结尾. 一.字符串的全排列问题 1. 下面是最初的代码(答案有错误-重复输出) import java.util.Scanner; pu ...

  5. 001-centos6.5下安装jenkins

    Jenkins是开源的,使用Java编写的持续集成的工具,在Centos上可以通过yum命令行直接安装. 需要先安装Java,如果已经Java可以跳过该步骤.   如果已安装java,可以通过该命令查 ...

  6. Masonry1.0.2 源码解析

    在了解Masonry框架之前,有必要先了解一下自动布局的概念.在iOS6之前,UI布局的方式是通过frame属性和Autoresizing来完成的,而在iOS6之后,苹果公司推出了AutoLayout ...

  7. IOS中的单例设计模式

    单例设计模式是IOS开发中一种很重要很常用的一种设计模式.它的设计原理是无论请求多少次,始终返回一个实例,也就是一个类只有一个实例.下面是苹果官方文档中关于单例模式的图片: 如图所示,左边的图是默认的 ...

  8. JSP是什么?

    JSP      [1] 简介           > HTML                - HTML擅长显示一个静态的网页,但是不能调用Java程序.           > Se ...

  9. Java微信公众平台开发之获取地理位置

    本部分需要用到微信的JS-SDK,微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包.通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照.选图.语音.位置等手机系统 ...

  10. ExpandableListView实现手风琴效果

    1. 效果示例图 2. 创建方法 (1)第一种方法与ListView等普通控件一样,直接在布局文件中添加ExpandableListView控件即可. (2)第二种方法则是创建一个Activity继承 ...