C# 推箱子(只有一关)

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();
}
}

时间: 2024-10-05 23:46:46

C# 推箱子(只有一关)的相关文章

使用 C# 开发智能手机软件:推箱子(十八)

这是"使用 C# 开发智能手机软件:推箱子" 系列文章的第十八篇.在这篇文章中.介绍 Window/SelectLevelDlg.cs 源程序文件. 这个源程序文件包括 SelectLevelDlg 类,该类继承自 System.Windows.Forms.Form 类.表示推箱子的"选关"对话框.例如以下图所看到的: 以下是 Window/SelectLevelDlg.Designer.cs 的源程序的部分代码: namespace Skyiv.Ben.PushB

推箱子小游戏《格鲁的实验室》13关 - bfs最短路径

下载了一款推箱子小游戏,第13关的时候怎么也破不了最佳纪录(最少步数是9而我们最好的方案是10步),因为数据比较小(6*8的方阵),所以写了个BFS来找最短路. 游戏的目标是把小黄人推到黄色球,小绿人推到绿色球,有个限制是,小黄/绿人运动时会沿某一个方向一直走直到遇到边界或者障碍物,如果途中遇到传送带还会改变运动方向. -----------------------------------------------------------------------------------------

12月28日 二维数组的应用:第一个小游戏(推箱子)

小游戏:******推箱子******** static void Main(string[] args) { int i, j; int[,] a = new int[10, 10]                  //二维数组的定义           类型[,] 数组名 = new  类型 [行数, 列数] {赋值}:   或单个赋值 a[i,j]=1; { {1,1,1,1,1,1,1,1,1,1}, {1,0,0,0,0,0,0,0,0,1}, {1,0,2,0,0,8,0,0,0,

专业实训题目需求分析(3D推箱子)

业务需求:    游戏提供主菜单让玩家进行游戏设置.帮助说明,推箱子的小人可以前后左右转动,箱子可以被上下左右的推动,要有关卡设置,障碍物设置,游戏提供背景音乐的功能,要实现3D效果. 面向的用户类型:会使用手机软件的人 用户需求:可以对游戏进行设置,可以上下左右的推箱子,移动小人,要有关卡的转换,有个美好的体验. 软件需求:用户可以对游戏进行设置,用户通过移动小人来改变箱子的位置,游戏每关的关卡都要不一样,有独特的地图,给用户一个美好的体验.

JavaScript写一个小乌龟推箱子游戏

推箱子游戏是老游戏了, 网上有各种各样的版本, 说下推箱子游戏的简单实现,以及我找到的一些参考视频和实例: 推箱子游戏的在线DEMO : 打开 如下是效果图: 这个拖箱子游戏做了移动端的适配, 我使用了zepto的touch模块, 通过手指滑动屏幕就可以控制乌龟走不同的方向: 因为推箱子这个游戏比较简单, 直接用了过程式的方式写代码, 模块也就是两个View 和 Model, 剩下就是用户的事件Controller, 用户每一次按下键盘的方向键都会改变数据模型的数据,然后重新生成游戏的静态htm

推箱子 只有一个地图 初练

namespace 自己琢磨推箱子{    class Program    {        static void Main(string[] args)        {            //定义一个地图            int x=2,y=1;//小人的位置                          int temp = 0;            int[,] map = new int[10, 10]            {              {1,1,

第十二天学习内容 综合应用 推箱子和对战游戏

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks; namespace day12{    class Program    {        static void Main(string[] args)        { //推箱子游戏            int x = 1, y = 1, i = 0;        

结对作业--推箱子

一.负责内容 测试代码 并做心得 二选择程序对友选择推箱子小游戏 三代码 #include <dos.h> #include <stdio.h> #include <stdlib.h>#include <ctype.h> #include <conio.h> #include <bios.h> #include <alloc.h> /* 定义二维数组ghouse来记录屏幕上各点的状态, 其中:0表示什么都没有,'b'表示箱

推箱子游戏

本游戏为推箱子游戏,即通过移动方向键来控制小人去推动箱子,直到把所有的箱子都推动到各个目标中.游戏需要在人物行走过程中无法穿越墙和箱子,并在有限的范围中放好各箱子,且每次只能搬运一个箱子.所基于的语言是8086汇编,使用的编译环境是唐都的集中开发环境TD-PIT. 本次设计的基本思想是通过将不同的元素(墙.路.箱子.人.目标位)抽象为不同的矩阵,然后将所设计的地图描抽象成一个控制矩阵来控制图像的显示,每一个控制矩阵块代表一个元素,我们通过不断刷新控制矩阵来达到显示人物移动及推箱子的效果. 1.1

jQuery版推箱子游戏详解和源码

前言 偶然间看到很多用js写游戏的感觉很炫酷的样子,所以就想试试,就看了一些资料和某前端站点的视屏.于是乎就自己动手实践了一下,上推箱子截图 感觉很丑陋,但是功能是实现了.再说貌似大多都是这样的吧,这一关其实还是有点难度的,我做完之后想检测一下下一关正确么,居然还玩了以后才通关. 如果你看到这张图让你想起了你童年的回忆,说明你老了,这里可以试玩一下(很遗憾没有链接地址,最后又源码可以下载). css布局 主要考虑的是地图是怎么动态生成的,地图中有灰色的,还有墙,箱子,蓝色,红色背景,人物.先看c