博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c#推箱子小游戏代码_用C#制作推箱子小游戏
阅读量:6361 次
发布时间:2019-06-23

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

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Collections;namespaceConsoleApplication1

{classProgram

{static void Main(string[] args)

{//推箱子//一、设计地图 空地为0,墙为1,箱子=2,人=3,目标=4,完成=5

int[,] map = new int[12, 13]

{

{0,0,0,0,0,1,1,1,1,1,1,1,0},

{0,0,0,0,0,1,0,0,1,0,0,1,0},

{0,0,0,0,0,1,0,0,2,2,0,1,0},

{1,1,1,1,1,1,0,2,1,0,0,1,0},

{1,4,4,4,1,1,1,0,1,0,0,1,1},

{1,4,0,0,1,0,0,2,0,1,0,0,1},

{1,4,0,0,0,0,2,0,2,0,2,0,1},

{1,4,0,0,1,0,0,2,0,1,0,0,1},

{1,4,4,4,1,1,1,0,1,0,0,1,1},

{1,1,1,1,1,1,0,2,0,0,0,1,0},

{0,0,0,0,0,1,0,3,1,0,0,1,0},

{0,0,0,0,0,1,1,1,1,1,1,1,0}

};int[,] map0 = new int[12, 13]

{

{0,0,0,0,0,1,1,1,1,1,1,1,0},

{0,0,0,0,0,1,0,0,1,0,0,1,0},

{0,0,0,0,0,1,0,0,0,0,0,1,0},

{1,1,1,1,1,1,0,0,1,0,0,1,0},

{1,4,4,4,1,1,1,0,1,0,0,1,1},

{1,4,0,0,1,0,0,0,0,1,0,0,1},

{1,4,0,0,0,0,0,0,0,0,0,0,1},

{1,4,0,0,1,0,0,0,0,1,0,0,1},

{1,4,4,4,1,1,1,0,1,0,0,1,1},

{1,1,1,1,1,1,0,0,0,0,0,1,0},

{0,0,0,0,0,1,0,0,1,0,0,1,0},

{0,0,0,0,0,1,1,1,1,1,1,1,0}

};//小人的初始坐标

int y = 10, x = 7;//让小人动起来(用方向键↑↓←→控制),即改变小人的坐标位置,与下一个坐标内容互换,如果指定方向的下一个坐标是1(即面对墙),小人坐标不变(if进行判断)//for循环中控制,清屏后打印新位置

for(; ; )

{//打印新地图

for (int i = 0; i < 12; i++)

{for (int j = 0; j < 13; j++)

{if (map[i, j] == 0)

{

Console.Write(" ");

}if (map[i, j] == 1)

{

Console.Write("■");

}if (map[i, j] == 2)

{

Console.Write("□");

}if (map[i, j] == 3)

{

Console.Write("♀");

}if (map[i, j] == 4)

{

Console.Write("☆");

}if (map[i, j] == 5)

{

Console.Write("★");

}

}

Console.WriteLine();

}//接收输入的按键

ConsoleKeyInfo aj =Console.ReadKey();//清屏

Console.Clear();//向上移动

if (aj.Key.ToString() == "UpArrow")

{if (map[y - 1, x] == 0 || map[y - 1, x] == 4)//小人的下一个坐标为空地,进行移动

{if (map0[y,x]==4)//如果小人现在的坐标是目标点的坐标

{

map[y- 1, x] = 3;

map[y, x]= 4;

y--;

}else//如果小人现在的坐标不是目标点的坐标

{

map[y- 1, x] = 3;

map[y, x]= 0;

y--;

}

}else if (map[y - 1, x] == 1)//小人的下一个坐标为墙,跳过此次循环

{ continue; }else if (map[y - 1, x] == 2 || map[y - 1, x] == 5)//小人的下一个坐标为未到达目标的箱子或到达目标的箱子

{if (map[y - 2, x] == 1 || map[y - 2, x] == 2 || map[y - 2, x] == 5)//箱子的下一个目标为墙或空箱子或到达目标的箱子

{ continue; }else if (map[y - 2, x] == 0)//箱子的下一个目标为空地

{if (map0[y, x] == 4)//如果小人现在的坐标是目标点的坐标

{

map[y- 2, x] = 2;

map[y- 1, x] = 3;

map[y, x]= 4;

y--;

}else//如果小人现在的坐标不是目标点的坐标

{

map[y- 2, x] = 2;

map[y- 1, x] = 3;

map[y, x]= 0;

y--;

}

}else if (map[y - 2, x] == 4)//箱子的下一个目标为目标点

{if (map0[y, x] == 4)//如果小人现在的坐标是目标点的坐标

{

map[y- 2, x] = 5;

map[y- 1, x] = 3;

map[y, x]= 4;

y--;

}else//如果小人现在的坐标不是目标点的坐标

{

map[y- 2, x] = 5;

map[y- 1, x] = 3;

map[y, x]= 0;

y--;

}

}

}

}//向下移动

if (aj.Key.ToString() == "DownArrow")

{if (map[y + 1, x] == 0 || map[y + 1, x] == 4)//小人的下一个坐标为空地,进行移动

{if (map0[y, x] == 4)//如果小人现在的坐标是目标点的坐标

{

map[y+ 1, x] = 3;

map[y, x]= 4;

y++;

}else//如果小人现在的坐标不是目标点的坐标

{

map[y+ 1, x] = 3;

map[y, x]= 0;

y++;

}

}else if (map[y + 1, x] == 1)//小人的下一个坐标为墙,跳过此次循环

{ continue; }else if (map[y + 1, x] == 2 || map[y + 1, x] == 5)//小人的下一个坐标为未到达目标的箱子或到达目标的箱子

{if (map[y + 2, x] == 1 || map[y + 2, x] == 2 || map[y + 2, x] == 5)//箱子的下一个目标为墙或空箱子或到达目标的箱子

{ continue; }else if (map[y + 2, x] == 0)//箱子的下一个目标为空地

{if (map0[y, x] == 4)//如果小人现在的坐标是目标点的坐标

{

map[y+ 2, x] = 2;

map[y+ 1, x] = 3;

map[y, x]= 4;

y++;

}else//如果小人现在的坐标不是目标点的坐标

{

map[y+ 2, x] = 2;

map[y+ 1, x] = 3;

map[y, x]= 0;

y++;

}

}else if (map[y + 2, x] == 4)//箱子的下一个目标为目标点

{if (map0[y, x] == 4)//如果小人现在的坐标是目标点的坐标

{

map[y+ 2, x] = 5;

map[y+ 1, x] = 3;

map[y, x]= 4;

y++;

}else//如果小人现在的坐标不是目标点的坐标

{

map[y+ 2, x] = 5;

map[y+ 1, x] = 3;

map[y, x]= 0;

y++;

}

}

}

}//向左移动

if (aj.Key.ToString() == "LeftArrow")

{if (map[y, x - 1] == 0 || map[y, x - 1] == 4)//小人的下一个坐标为空地,进行移动

{if (map0[y, x] == 4)//如果小人现在的坐标是目标点的坐标

{

map[y, x- 1] = 3;

map[y, x]= 4;

x--;

}else//如果小人现在的坐标不是目标点的坐标

{

map[y, x- 1] = 3;

map[y, x]= 0;

x--;

}

}else if (map[y, x - 1] == 1)//小人的下一个坐标为墙,跳过此次循环

{ continue; }else if (map[y, x - 1] == 2 || map[y, x - 1] == 5)//小人的下一个坐标为未到达目标的箱子或到达目标的箱子

{if (map[y, x - 2] == 1 || map[y, x - 2] == 2 || map[y, x - 2] == 5)//箱子的下一个目标为墙或空箱子或到达目标的箱子

{ continue; }else if (map[y, x - 2] == 0)//箱子的下一个目标为空地

{if (map0[y, x] == 4)//如果小人现在的坐标是目标点的坐标

{

map[y, x- 2] = 2;

map[y, x- 1] = 3;

map[y, x]= 4;

x--;

}else//如果小人现在的坐标不是目标点的坐标

{

map[y, x- 2] = 2;

map[y, x- 1] = 3;

map[y, x]= 0;

x--;

}

}else if (map[y, x - 2] == 4)//箱子的下一个目标为目标点

{if (map0[y, x] == 4)//如果小人现在的坐标是目标点的坐标

{

map[y, x- 2] = 5;

map[y, x- 1] = 3;

map[y, x]= 4;

x--;

}else//如果小人现在的坐标不是目标点的坐标

{

map[y, x- 2] = 5;

map[y, x- 1] = 3;

map[y, x]= 0;

x--;

}

}

}

}//向右移动

if (aj.Key.ToString() == "RightArrow")

{if (map[y, x + 1] == 0 || map[y, x + 1] == 4)//小人的下一个坐标为空地,进行移动

{if (map0[y, x] == 4)//如果小人现在的坐标是目标点的坐标

{

map[y, x+ 1] = 3;

map[y, x]= 4;

x++;

}else//如果小人现在的坐标不是目标点的坐标

{

map[y, x+ 1] = 3;

map[y, x]= 0;

x++;

}

}else if (map[y, x + 1] == 1)//小人的下一个坐标为墙,跳过此次循环

{ continue; }else if (map[y, x + 1] == 2 || map[y, x + 1] == 5)//小人的下一个坐标为未到达目标的箱子或到达目标的箱子

{if (map[y, x + 2] == 1 || map[y, x + 2] == 2 || map[y, x + 2] == 5)//箱子的下一个目标为墙或空箱子或到达目标的箱子

{ continue; }else if (map[y, x + 2] == 0)//箱子的下一个目标为空地

{if (map0[y, x] == 4)//如果小人现在的坐标是目标点的坐标

{

map[y, x+ 2] = 2;

map[y, x+ 1] = 3;

map[y, x]= 4;

x++;

}else//如果小人现在的坐标不是目标点的坐标

{

map[y, x+ 2] = 2;

map[y, x+ 1] = 3;

map[y, x]= 0;

x++;

}

}else if (map[y, x + 2] == 4)//箱子的下一个目标为目标点

{if (map0[y, x] == 4)//如果小人现在的坐标是目标点的坐标

{

map[y, x+ 2] = 5;

map[y, x+ 1] = 3;

map[y, x]= 4;

x++;

}else//如果小人现在的坐标不是目标点的坐标

{

map[y, x+ 2] = 5;

map[y, x+ 1] = 3;

map[y, x]= 0;

x++;

}

}

}

}

}

Console.ReadLine();

}

}

}

转载地址:http://dbima.baihongyu.com/

你可能感兴趣的文章
在html 的img属性里只显示图片的部分区域(矩形,给出开始点和结束点),其他部份不显示,也不要拉伸...
查看>>
程序员第二定律:量化管理在程序员身上永无可能
查看>>
ubuntu一些脚本的执行顺序
查看>>
类继承的结构
查看>>
Intel 被 ARM 逼急了
查看>>
testng + reportng 测试结果邮件发送
查看>>
百度亮相iDASH,推动隐私保护在人类基因组分析领域的应用
查看>>
Python「八宗罪」
查看>>
你的隐私还安全吗?社交网络中浏览历史的去匿名化
查看>>
NeurIPS 2018|如何用循环关系网络解决数独类关系推理任务?
查看>>
Windows 10 份额突破 40%,Windows 7 连跌四月终回升
查看>>
怎么把Maven项目转为动态Web项目?
查看>>
Arm发布Cortex-A76AE自动驾驶芯片架构,宣示车载系统市场主权
查看>>
Hibernate入门教程
查看>>
Java支付宝扫码支付[新]
查看>>
SpringMVC 拦截器 筛选
查看>>
第十八章:MVVM(八)
查看>>
点击表头切换升降序排序方式
查看>>
第26天,Django之include本质
查看>>
Java中静态变量和实例变量的区别
查看>>