网吧充值系统
namespace ConsoleApplication1 { class Program { struct huiyuan { public string name; public string password; public double yue; } static void Main(string[] aaa) { ArrayList Ul = new ArrayList(); while (true) { try { Console.WriteLine("请输入您要执行的操作:(1、会员管理 2、充值管理)"); int x = Convert.ToInt32(Console.ReadLine()); m(x, Ul); } catch (Exception) { } } } static void m(int x, ArrayList al) { switch (x) { case 1: Console.WriteLine("1、添加会员 2、删除会员 3、余额查询"); int xx = Convert.ToInt32(Console.ReadLine()); huiyuanfuwu(xx, al); break; case 2: Console.WriteLine("1、充值服务 2、扣费服务"); int xxx = Convert.ToInt32(Console.ReadLine()); chongzhiguanli(xxx, al); break; default: break; } } static void chongzhiguanli(int x, ArrayList al) { switch (x) { case 1: Console.Write("请输入要充值的用户名:"); string sname = Console.ReadLine(); foreach (huiyuan item in al) { if (item.name == sname) { Console.WriteLine("当前余额为:" + item.yue); Console.Write("请输入充值金额:"); double m = Convert.ToInt32(Console.ReadLine()); chongzhi(m, al, sname); break; } } break; default: break; } } static void chongzhi(double m, ArrayList al, string sname) { double x = 0;//奖励金额 if (m >= 10 && m < 20) { x = 2; } else if (m >= 20 && m < 50) { x = 5; } else if (m >= 50 && m < 100) { x = 20; } else if (m >= 100 && m < 200) { x = 50; } else if (m >= 200 && m < 300) { x = 150; } else if (m >= 300) { x = m; } else { x = 0; } huiyuan temp = new huiyuan(); for (int i = 0; i < al.Count; i++) { temp = ((huiyuan)al[i]); if (temp.name == sname) { temp.yue += Convert.ToDouble(m + x); Console.WriteLine("本次充值成功,充值金额为" + m + "。奖励金额为:" + x + ".充值后余额为:" + temp.yue); al.Insert(i, temp); al.RemoveAt(i + 1); break; } } } static void huiyuanfuwu(int x, ArrayList al) { switch (x) { case 1: huiyuan h = new huiyuan(); Console.Write("请输入用户名:"); h.name = Console.ReadLine(); Console.Write("请输入密码:"); h.password = Console.ReadLine(); h.yue = 0; al.Add(h); break; case 2: Console.Write("请输入要删除的用户名:"); string dname = Console.ReadLine(); foreach (huiyuan item in al) { if (item.name == dname) { al.Remove(item); Console.WriteLine("删除成功!"); break; } } break; case 3: Console.Write("请输入要查询的用户名:"); string sname = Console.ReadLine(); foreach (huiyuan item in al) { if (item.name == sname) { Console.WriteLine("当前余额为:" + item.yue); } } break; default: break; } } } }
简易的闹钟
namespace ConsoleApplication7 { class Program { static void Main(string[] args) { DateTime a = DateTime.Now;//定义一个新datetime类型变量并赋值为系统现在的时间 DateTime nz=Convert.ToDateTime("2015-4-13 17:30");定义并赋值一个datetime while (true) { a = a.AddMinutes(1);//a每次增加1分钟 if (nz.ToShortTimeString().Equals(a.ToShortTimeString()))//系统时间每次增加1分钟后如果等于设定的时间 { Console.WriteLine(a + "起床啦!"); Console.Write("是否关闭闹钟?Y/N"); string s = Console.ReadLine(); if (s=="y.ToUpper()") { break; } else { nz = nz.AddMinutes(5);如果不关闭,则闹钟累加5分钟后,系统时间再累加直到与nz相同,循环。。。。。。 } } } } } }
出租车计费
namespace ConsoleApplication23 { class Program { static void Main(string[] args) { while (true) { double i,l, m1 = 8,m2=1.2,m3=1.5,m4=2.4; Console.Write("请输入坐车距离:"); i = Convert.ToDouble(Console.ReadLine()); if (i>0&&i<=3) { Console.WriteLine("您的行车费用为:"+m1); } else if (i>3&&i<=5) { l = m1 + (i - 3) * m2; Console.WriteLine("您的行车费用为:" + l); } else if (i>5) { l = m1 + m4 + (i - 5) * m3; Console.WriteLine("您的行车费用为:" + l); } else { Console.WriteLine("您的输入有误!"); } } } } }
简单计算器:
namespace 第一次 { class Program { static void Main(string[] args) {double a, b; //做一个简单的计算器 while (true) { Console.WriteLine("加法:"); Console.Write("请输入第一个数:"); a = Convert.ToDouble(Console.ReadLine()); Console.Write("请输入第二个数:"); b = Convert.ToDouble(Console.ReadLine()); Console.WriteLine("结果为:"+(a+b)); Console.WriteLine("减法:"); Console.Write("请输入第一个数:"); a = Convert.ToDouble(Console.ReadLine()); Console.Write("请输入第二个数:"); b = Convert.ToDouble(Console.ReadLine()); Console.WriteLine("结果为:" + (a - b)); Console.WriteLine("乘法:"); Console.Write("请输入第一个数:"); a = Convert.ToDouble(Console.ReadLine()); Console.Write("请输入第二个数:"); b = Convert.ToDouble(Console.ReadLine()); Console.WriteLine("结果为:" + (a * b)); Console.WriteLine("除法:"); Console.Write("请输入第二个数:"); a = Convert.ToDouble(Console.ReadLine()); Console.Write("请输入第二个数:"); b = Convert.ToDouble(Console.ReadLine()); Console.WriteLine("结果为:" + (a / b)); } } } }
对战游戏;
namespace ConsoleApplication5 { class Program { struct player { public string name; public int hp; public int attack; public int defend; public int quick; public WuGong WG; } struct WuGong { public string name; public int atk; } static void Main(string[] args) { Console.BackgroundColor = ConsoleColor.White; Console.ForegroundColor = ConsoleColor.Black; Console.Clear(); player p1 = new player(); player p2 = new player(); Random r = new Random(); //生成两个玩家 Console.Write("请输入第一个战士的名字:"); p1.name = Console.ReadLine(); Console.Write("请输入第二个战士的名字:"); p2.name = Console.ReadLine(); //生成血量 p1.hp = r.Next(1, 1000) + 1000;//初始血量 p2.hp = r.Next(1, 1000) + 1000; //生成攻防 p1.attack = r.Next(1, 50) + 80; p2.attack = r.Next(1, 50) + 80; p1.defend = r.Next(1, 50) + 50; p2.defend = r.Next(1, 50) + 50; //生成身法-敏捷度 p1.quick = r.Next(100); p2.quick = r.Next(100); Console.WriteLine("玩家:" + p1.name + " 血量:" + p1.hp + " 攻击力:" + p1.attack + " 物防:" + p1.defend + " 敏捷度:" + p1.quick); Console.WriteLine("VS"); Console.WriteLine("玩家:" + p2.name + " 血量:" + p2.hp + " 攻击力:" + p2.attack + " 物防:" + p2.defend + " 敏捷度:" + p2.quick); Console.WriteLine("点击任意键开始游戏....."); Console.ReadKey(); while (true) { // 得出最后结果,跳出循环 if (p1.hp <= 0 && p2.hp <= 0) { Console.WriteLine(p1.name + "与" + p2.name + "同归于尽!"); Console.ReadLine(); break; } if (p1.hp <= 0) { Console.WriteLine(p2.name + "把" + p1.name + "KO.."); Console.ReadLine(); break; } if (p2.hp <= 0) { Console.WriteLine(p1.name + "把" + p2.name + "KO.."); Console.ReadLine(); break; } //对战 WuGong[] wg = new WuGong[3]; //gongfu(wg); wg[0].name = "降龙十八掌"; wg[0].atk = 500; wg[1].name = "打狗棒法"; wg[1].atk = 600; wg[2].name = "独孤九剑"; wg[2].atk = 600; //大招 int dz1 = r.Next(10);//大招随机 if (dz1 >= 5) //从1到9的随机数里 取8和9 有20%的几率用大招。 { Random x = new Random(); int a = x.Next(0, 3); int dx1 = r.Next(100);//声明 掉血 变量 int gj1 = r.Next(100) - 50;//为了浮动 P2的 攻击力; int fy1 = r.Next(100) - 50;//为了浮动 P1的防御力; dx1 = ((dx1 + wg[a].atk) - (p1.defend + fy1)) < 0 ? 0 : ((dx1 + wg[a].atk) - (p1.defend + fy1)); //为了防止掉血 出现负值 p1.hp -= dx1; if (p1.hp < 0) { p1.hp = 0; } Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(p2.name + "使用大招 " + wg[a].name + " 攻击,对" + p1.name + "造成" + dx1 + "的伤害。"); } else //平常招式 { //躲闪 int sf1 = r.Next(80);//身法的随机数 if (p1.quick - sf1 >= 0) { Console.ForegroundColor = ConsoleColor.Black; Console.WriteLine(p1.name + "躲闪" + p2.name + "的攻击"); } else { int dx1 = r.Next(100);//声明 掉血 变量 int gj1 = r.Next(100) - 50;//为了浮动 P2的 攻击力; int fy1 = r.Next(100) - 50;//为了浮动 P1的防御力; dx1 = (dx1 + (p2.attack + gj1) - (p1.defend + fy1)) < 0 ? 0 : (dx1 + (p2.attack + gj1) - (p1.defend + fy1)); //为了防止掉血 出现负值 p1.hp -= dx1; if (p1.hp < 0) { p1.hp = 0; } Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(p1.name + "使用普通攻击,对" + p2.name + "造成" + dx1 + "的伤害。"); } } //稍等一下 System.Threading.Thread.Sleep(1000); int dz2 = r.Next(10); if (dz2 >= 5) { Random y = new Random(); int b = y.Next(0, 3); int dx2 = r.Next(100); int gj2 = r.Next(100) - 50;//为了浮动 P1的 攻击力; int fy2 = r.Next(100) - 50;//为了浮动 P2的防御力; dx2 = ((dx2 + wg[b].atk) - (p2.defend + fy2)) < 0 ? 0 : ((dx2 + wg[b].atk) - (p2.defend + fy2)); //为了防止掉血 出现负值 p2.hp -= dx2; if (p2.hp < 0) { p2.hp = 0; } Console.ForegroundColor = ConsoleColor.DarkMagenta; Console.WriteLine(p1.name + "使用大招 " + wg[b].name + " 攻击,对" + p2.name + "造成" + dx2 + "的伤害。"); } else { //躲闪 int sf2 = r.Next(80); if (p2.quick - sf2 > sf2) { Console.ForegroundColor = ConsoleColor.Black; Console.WriteLine(p2.name + "躲闪" + p1.name + "的攻击"); } else { int dx2 = r.Next(100); int gj2 = r.Next(100) - 50;//为了浮动 P1的 攻击力; int fy2 = r.Next(100) - 50;//为了浮动 P2的防御力; dx2 = (dx2 + (p1.attack + gj2) - (p2.defend + fy2)) < 0 ? 0 : (dx2 + (p1.attack + gj2) - (p2.defend + fy2)); //为了防止掉血 出现负值 p2.hp -= dx2; if (p2.hp < 0) { p2.hp = 0; } Console.ForegroundColor = ConsoleColor.DarkMagenta; Console.WriteLine(p2.name + "使用普通攻击,对" + p1.name + "造成" + dx2 + "的伤害。"); } } //稍等一下 System.Threading.Thread.Sleep(1000); Console.ForegroundColor = ConsoleColor.DarkBlue; Console.WriteLine("玩家:" + p1.name + " 血量:" + p1.hp + " "); Console.WriteLine("玩家:" + p2.name + " 血量:" + p2.hp); } } } }
等额本金法
等额本金法最大的特点是每月的还款额不同,呈现逐月递减的状态;它是将贷款本金按还款的总月数均分,再加上上期剩余本金的利息,这样就形成月还款额,所以等额本金法第一个月的还款额最多 ,然后逐月减少,越还越少,计算公式为:
每月还本付息金额=(本金/还款月数)+(本金-累计已还本金)×月利率
每月本金=总本金/还款月数
每月利息=(本金-累计已还本金)×月利率
还款总利息=(还款月数+1)*贷款额*月利率/2
还款总额=(还款月数+1)*贷款额*月利率/2+贷款额
namespace ConsoleApplication28 { class Program { static void Main(string[] args) { double m, n, d = 0.0655, e = 0.0405, x, y, z,p,q,h; Console.Write("请选择房贷类型?A商业贷款;B公积金贷款:"); string a = Console.ReadLine(); if (a=="A") { Console.Write("请选择房贷期限?A10年;B20;年C30年 :"); string b = Console.ReadLine(); if (b=="A") { Console.Write("请输入贷款金额:"); m = Convert.ToInt32(Console.ReadLine()); Console.Write("请输入第几个还款月:"); n = Convert.ToInt32(Console.ReadLine()); x = m / 120; y = x + (m-x)* (d/12); z = x + (m - (n - 1)*x) * (d / 12); p = (120 + 1) * m * (d / 12) / 2; q = p + m; Console.WriteLine("您当前月份的还款金额为:" + z); Console.WriteLine("您每期偿还的本金为:" + x); Console.WriteLine("您的最大月供为:" + y); Console.WriteLine("您应当还款的总利息为:" + p); Console.WriteLine("您应当还款的总金额为:" + q); for (int i = 0; i < 120; i++) { h = x + (m - i*x) * (d / 12); Console.WriteLine("第"+(i+1)+"还款:"+h+"当月偿还的利息为:"+(h-x)+"剩余本金为:"+(m-x*(i+1))); } } else if (b=="B") { Console.Write("请输入贷款金额:"); m = Convert.ToInt32(Console.ReadLine()); Console.Write("请输入第几个还款月:"); n = Convert.ToInt32(Console.ReadLine()); x = m / 180; y = x + (m - x) * (d / 12); z = x + (m - (n - 1) * x) * (d / 12); p = (180 + 1) * m * (d / 12) / 2; q = p +m; Console.WriteLine("您当前月份的还款金额为:" + z); Console.WriteLine("您每期偿还的本金为:" + x); Console.WriteLine("您的最大月供为:" + y); Console.WriteLine("您应当还款的总利息为:" + p); Console.WriteLine("您应当还款的总金额为:" + q); for (int i = 0; i < 180; i++) { h = x + (m - i * x) * (d / 12); Console.WriteLine("第" + (i + 1) + "还款:" + h + "当月偿还的利息为:" + (h - x) + "剩余本金为:" + (m - x * (i + 1))); } } else if (b=="C") { Console.Write("请输入贷款金额:"); m = Convert.ToInt32(Console.ReadLine()); Console.Write("请输入第几个还款月:"); n = Convert.ToInt32(Console.ReadLine()); x = m / 240; y = x + (m - x) * (d / 12); z = x + (m - (n - 1) * x) * (d / 12); p = (240 + 1) * m * (d / 12) / 2; q = p + m; Console.WriteLine("您当前月份的还款金额为:" + z); Console.WriteLine("您每期偿还的本金为:" + x); Console.WriteLine("您的最大月供为:" + y); Console.WriteLine("您应当还款的总利息为:" + p); Console.WriteLine("您应当还款的总金额为:" + q); for (int i = 0; i < 240; i++)//依次列出每个月应该还多少,利息多少,剩余多少,for循环 { h = x + (m - i * x) * (d / 12); Console.WriteLine("第" + (i + 1) + "还款:" + h + "当月偿还的利息为:" + (h - x) + "剩余本金为:" + (m - x * (i + 1))); } } else { Console.WriteLine("请您选择正确的代号!"); } } else if (a=="B") { Console.Write("请选择房贷期限?A10年;B20;年C30年 :"); string b = Console.ReadLine(); if (b == "A") { Console.Write("请输入贷款金额:"); m = Convert.ToInt32(Console.ReadLine()); Console.Write("请输入第几个还款月:"); n = Convert.ToInt32(Console.ReadLine()); x = m / 120; y = x + (m - x) * (e / 12); z = x + (m - (n - 1) * x) * (e / 12); p = (120 + 1) * m * (e / 12) / 2; q = p + m; Console.WriteLine("您当前月份的还款金额为:" + z); Console.WriteLine("您每期偿还的本金为:" + x); Console.WriteLine("您的最大月供为:" + y); Console.WriteLine("您应当还款的总利息为:" + p); Console.WriteLine("您应当还款的总金额为:" + q); for (int i = 0; i < 120; i++) { h = x + (m - i * x) * (e / 12); Console.WriteLine("第" + (i + 1) + "还款:" + h + "当月偿还的利息为:" + (h - x) + "剩余本金为:" + (m - x * (i + 1))); } } else if (b == "B") { Console.Write("请输入贷款金额:"); m = Convert.ToInt32(Console.ReadLine()); Console.Write("请输入第几个还款月:"); n = Convert.ToInt32(Console.ReadLine()); x = m / 180; y = x + (m - x) * (e / 12); z = x + (m - (n - 1) * x) * (e / 12); p = (180 + 1) * m * (e / 12) / 2; q = p + m; Console.WriteLine("您当前月份的还款金额为:" + z); Console.WriteLine("您每期偿还的本金为:" + x); Console.WriteLine("您的最大月供为:" + y); Console.WriteLine("您应当还款的总利息为:" + p); Console.WriteLine("您应当还款的总金额为:" + q); for (int i = 0; i < 180; i++) { h = x + (m - i * x) * (e / 12); Console.WriteLine("第" + (i + 1) + "还款:" + h + "当月偿还的利息为:" + (h - x) + "剩余本金为:" + (m - x * (i + 1))); } } else if (b == "C") { Console.Write("请输入贷款金额:"); m = Convert.ToInt32(Console.ReadLine()); Console.Write("请输入第几个还款月:"); n = Convert.ToInt32(Console.ReadLine()); x = m / 240; y = x + (m - x) * (e / 12); z = x + (m - (n - 1) * x) * (e / 12); p = (240 + 1) * m * (e / 12) / 2; q = p + m; Console.WriteLine("您当前月份的还款金额为:" + z); Console.WriteLine("您每期偿还的本金为:" + x); Console.WriteLine("您的最大月供为:" + y); Console.WriteLine("您应当还款的总利息为:" + p); Console.WriteLine("您应当还款的总金额为:" + q); for (int i = 0; i < 240; i++) { h = x + (m - i * x) * (e / 12); Console.WriteLine("第" + (i + 1) + "还款:" + h + "当月偿还的利息为:" + (h - x) + "剩余本金为:" + (m - x * (i + 1))); } } else { Console.WriteLine("请您选择正确的代号!"); } } else { Console.WriteLine("请您选择正确的代号!"); } Console.Read(); } } }
随机生成10个不重复的50以内的整数
1。。。。
.
2.。。。
推箱子
namespace ConsoleApplication15//推箱子本质就是变量的相互替换,3个变量的循环赋值 { class Program { static void Main(string[] args) { int x = 1, y = 1, i = 0; int[, ,] dt = new int[2, 30, 30] //定义一个二维数组用于接收地图 { { {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, {1,4,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1} }, { {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, {1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1} } }; try { while (true) { int temp = 0; ConsoleKeyInfo s = Console.ReadKey(); //s用于接收用户输入的键 if (s.Key.ToString() == "DownArrow") { if (dt[i, x + 1, y] == 0)//如果小人的下一步是0(空格),则两个元素交换 (下同) { temp = dt[i, x, y]; dt[i, x, y] = dt[i, x + 1, y]; dt[i, x + 1, y] = temp; x++; } else if (dt[i, x + 1, y] == 2 && dt[i, x + 2, y] == 0)//如果小人的下一步是箱子,箱子的下一步是空格,则三个元素进行交换 (下同) { temp = dt[i, x + 2, y]; dt[i, x + 2, y] = dt[i, x + 1, y]; dt[i, x + 1, y] = temp; temp = dt[i, x + 1, y]; dt[i, x + 1, y] = dt[i, x, y]; dt[i, x, y] = temp; x++; } else if (dt[i, x + 2, y] == 3 && dt[i, x + 1, y]==2) //如果小人的下面第二个元素是“★” { dt[i, x+2, y ] = 2; //让五角星变成箱子 dt[i, x+1, y ] = 4;// 让箱子变成小人 dt[i, x, y] = 0; //让小人变成空格 temp = 6; //给临时变量赋一个值作为跳出循环的条件 } } else if (s.Key.ToString() == "UpArrow") { if (dt[i, x - 1, y] == 0) { temp = dt[i, x - 1, y]; dt[i, x - 1, y] = dt[i, x, y]; dt[i, x, y] = temp; x--; } else if (dt[i, x - 1, y] == 2 && dt[i, x - 2, y] == 0) { temp = dt[i, x - 2, y]; dt[i, x - 2, y] = dt[i, x - 1, y]; dt[i, x - 1, y] = temp; temp = dt[i, x, y]; dt[i, x, y] = dt[i, x - 1, y]; dt[i, x - 1, y] = temp; x--; } else if (dt[i, x - 2, y] == 3 && dt[i, x - 1, y]==2) //如果小人的下面第二个元素是“★” { dt[i, x - 2, y] = 2; //让五角星变成箱子 dt[i, x - 1, y] = 4;// 让箱子变成小人 dt[i, x, y] = 0; //让小人变成空格 temp = 6; //给临时变量赋一个值作为跳出循环的条件 } } else if (s.Key.ToString() == "LeftArrow") { if (dt[i, x, y - 1] == 0) { temp = dt[i, x, y - 1]; dt[i, x, y - 1] = dt[i, x, y]; dt[i, x, y] = temp; y--; } else if (dt[i, x, y - 1] == 2 && dt[i, x, y - 2] == 0) { temp = dt[i, x, y - 2]; dt[i, x, y - 2] = dt[i, x, y - 1]; dt[i, x, y - 1] = temp; temp = dt[i, x, y]; dt[i, x, y] = dt[i, x, y - 1]; dt[i, x, y - 1] = temp; y--; } else if (dt[i, x, y - 2] == 3&&dt[i, x, y - 1] == 2) //如果小人的下面第二个元素是“★” { dt[i, x, y - 2] = 2; //让五角星变成箱子 dt[i, x, y - 1] = 4;// 让箱子变成小人 dt[i, x, y] = 0; //让小人变成空格 temp = 6; //给临时变量赋一个值作为跳出循环的条件 } } else if (s.Key.ToString() == "RightArrow") { if (dt[i, x, y + 1] == 0) { temp = dt[i, x, y + 1]; dt[i, x, y + 1] = dt[i, x, y]; dt[i, x, y] = temp; y++; } else if (dt[i, x, y + 1] == 2 && dt[i, x, y + 2] == 0) { temp = dt[i, x, y + 2]; dt[i, x, y + 2] = dt[i, x, y + 1]; dt[i, x, y + 1] = temp; temp = dt[i, x, y + 1]; dt[i, x, y + 1] = dt[i, x, y]; dt[i, x, y] = temp; y++; } else if (dt[i, x, y + 2] == 3&&dt[i, x, y + 1] == 2) //如果小人的下面第二个元素是“★”而且小人下面第一个元素是 { dt[i, x, y + 2] = 2; //让五角星变成箱子 dt[i, x, y + 1] = 4;// 让箱子变成小人 dt[i, x, y] = 0; //让小人变成空格 temp = 6; //给临时变量赋一个值作为跳出循环的条件 } } Console.Clear(); //清屏 ditu(dt, i);// 调用ditu函数打印地图;一开始就从这里开始,前面没有打印地图。 if (temp == 6)// 跳出循环 { Console.WriteLine("恭喜您过关了!"); Console.WriteLine("按任意键进入下一关!"); Console.ReadKey(); x = 1; y = 1;//初始化小人的位置 i++; } } } catch (Exception) { Console.WriteLine("暂时只有两张图!"); Console.ReadKey(); } } private static void ditu(int[, ,] dt, int i) { for (int j = 0; j < 30; j++) { for (int k = 0; k < 30; k++) { if (dt[i, j, k] == 0) { Console.Write(" "); } else if (dt[i, j, k] == 1) { Console.Write("■"); } else if (dt[i, j, k] == 2) { Console.Write("□"); } else if (dt[i, j, k] == 3) { Console.Write("★"); } else if (dt[i, j, k] == 4) { Console.Write("♀"); } } Console.Write(" "); } } } }