博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 推箱子(只有一关)
阅读量:4657 次
发布时间:2019-06-09

本文共 3161 字,大约阅读时间需要 10 分钟。

class Program

{
static void ditu(int[,] map) //建立一张地图的函数,10x10的
{
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
if (map[i, j] == 0)
{
Console.Write(" ");
}
else if (map[i, j] == 1)
{
Console.Write("■");
}
else if (map[i, j] == 2)
{
Console.Write("●");
}
else if (map[i, j] == 3)
{
Console.Write("★");
}
else if (map[i, j] == 4)
{
Console.Write("♀");
}
}
Console.WriteLine();
}

}

static void Main(string[] args)
{
int[,] Map = new int[10, 10]
{
{1,1,1,1,1,1,1,1,1,1},
{1,0,0,0,0,0,1,0,0,1},
{1,4,2,0,0,0,1,0,0,1},
{1,0,0,0,0,0,1,1,1,1},
{1,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,1},
{1,1,1,1,1,1,1,0,0,1},
{1,0,0,1,0,0,1,0,0,1},
{1,3,0,0,0,0,0,0,0,1},
{1,1,1,1,1,1,1,1,1,1},
};
int x = 2, y = 1, t = 0, t1 = 0, tx = 0;
while (true)
{
ditu(Map);
if (tx == 100) //最后一步提到前面。
{
Console.WriteLine("恭喜通第一关。");

break;

}
ConsoleKeyInfo s = Console.ReadKey(); //赋值一个按键的变量
#region====向上
if (s.Key.ToString() == "UpArrow")
{
if (Map[x - 1, y] == 2 && Map[x - 2, y] == 0)//两次冒泡
{
t = Map[x - 2, y];
Map[x - 2, y] = Map[x - 1, y];
Map[x - 1, y] = t;

t1 = Map[x - 1, y];

Map[x - 1, y] = Map[x, y];
Map[x, y] = t1;
x--;
}
else if (Map[x - 1, y] == 0)
{
t = Map[x - 1, y];
Map[x - 1, y] = Map[x, y];
Map[x, y] = t;
x--;
}
else if (Map[x - 1, y] == 1 || (Map[x - 1, y] == 2 && Map[x - 2, y] == 1))
{
Console.WriteLine("您未学会穿墙术,请去商城购买!");
Console.ReadLine(); //撞墙回车
}
}
#endregion
#region====向下
if (s.Key.ToString() == "DownArrow")
{
if (Map[x + 1, y] == 2 && Map[x + 2, y] == 0)
{
t = Map[x + 2, y];
Map[x + 2, y] = Map[x + 1, y];
Map[x + 1, y] = t;

t1 = Map[x + 1, y];

Map[x + 1, y] = Map[x, y];
Map[x, y] = t1;
x++;
}
else if (Map[x + 1, y] == 0)
{
t = Map[x + 1, y];
Map[x + 1, y] = Map[x, y];
Map[x, y] = t;
x++;
}
else if (Map[x + 1, y] == 1 || (Map[x + 1, y] == 2 && Map[x + 2, y] == 1))
{
Console.WriteLine("您未学会穿墙术,请去商城购买!");
Console.ReadLine(); //撞墙回车
}
}
#endregion
#region====向右
if (s.Key.ToString() == "RightArrow")
{
if (Map[x, y + 1] == 2 && Map[x, y + 2] == 0)
{
t = Map[x, y + 2];
Map[x, y + 2] = Map[x, y + 1];
Map[x, y + 1] = t;

t1 = Map[x, y + 1];

Map[x, y + 1] = Map[x, y];
Map[x, y] = t1;
y++;
}
else if (Map[x, y + 1] == 0)
{
t = Map[x, y + 1];
Map[x, y + 1] = Map[x, y];
Map[x, y] = t;
y++;
}
else if (Map[x, y + 1] == 1 || (Map[x, y + 1] == 2 && Map[x, y + 2] == 1))
{
Console.WriteLine("您未学会穿墙术,请去商城购买!");
Console.ReadLine(); //撞墙回车
}
}
#endregion
#region====向左
if (s.Key.ToString() == "LeftArrow")
{
if (Map[x, y - 1] == 2 && Map[x, y - 2] == 0)
{
t = Map[x, y - 2];
Map[x, y - 2] = Map[x, y - 1];
Map[x, y - 1] = t;

t1 = Map[x, y - 1];

Map[x, y - 1] = Map[x, y];
Map[x, y] = t1;
y--;
}
else if (Map[x, y - 1] == 0)
{
t = Map[x, y - 1];
Map[x, y - 1] = Map[x, y];
Map[x, y] = t;
y--;
}
else if (Map[x, y - 1] == 1 || (Map[x, y - 1] == 2 && Map[x, y - 2] == 1))
{
Console.WriteLine("您未学会穿墙术,请去商城购买!");
Console.ReadLine(); //撞墙回车
}
}
#endregion
#region====结束
if (Map[x, y - 1] == 2 && Map[x, y - 2] == 3)
{
Map[x, y - 2] = Map[x, y - 1];

Map[x, y - 1] = Map[x, y];

Map[x, y] = t;
tx = 100; //随意的赋值一个变量,作为后面IF的运行条件。
}

#endregion

Console.Clear(); //每运行一遍,刷新一次地图。

}

Console.ReadLine();

}
}

转载于:https://www.cnblogs.com/likaixuan/p/4336967.html

你可能感兴趣的文章
试一下:XP ( SP2 ) 本身就支持查杀流氓软件!
查看>>
centos6(7) minimal 基本环境配置
查看>>
maven 构建可执行jar文件
查看>>
P2837晚餐队列安排
查看>>
DP专题
查看>>
UVa 1402 Runtime Error 伸展树
查看>>
笔记本安装SSD固态硬盘详细的优化设置
查看>>
批处理语法介绍
查看>>
FFmpeg 基础库(三)模块组成
查看>>
Linq 查询 与方法调用
查看>>
iOS开源项目(旧)
查看>>
winform的datagridview控件滚动更新数据
查看>>
java中Object类 源代码详解
查看>>
开源控Meteor的个人资料
查看>>
kafka在zookeeper中的存储结构
查看>>
linux上FTP服务器搭建
查看>>
hdu 1506 Largest Rectangle in a Histogram dp
查看>>
华为机试测试-dna-字符串
查看>>
JSON序列化和解析
查看>>
20150221—LINQ to SQL 查询数据
查看>>