C# 推箱子游戏&对战游戏
推箱子游戏提纲,只有向右向上的操作,向左向下同理,后期需完善。
1 namespace 推箱子 2 { 3 class Program 4 { 5 static void Main(string[] args) 6 { 7 //小人初始位置的索引 8 int x = 1; 9 int y = 8; 10 11 int end1x = 7; 12 int end1y = 1; 13 14 #region 画地图 15 string[,] map = new string[10, 10] { 16 {" "," ","■","■","■","■","■","■","■","■"}, 17 {" "," ","■"," "," "," "," ","☆"," ","■"}, 18 {"■","■","■"," "," "," "," "," "," ","■"}, 19 {"■"," "," "," "," "," "," "," "," ","■"}, 20 {"■"," "," "," "," "," "," "," "," ","■"}, 21 {"■"," "," ","□"," "," "," "," "," ","■"}, 22 {"■"," "," "," "," "," ","■","■","■","■"}, 23 {"■"," "," "," "," "," ","■"," "," "," "}, 24 {"■","♀"," "," "," "," ","■"," "," "," "}, 25 {"■","■","■","■","■","■","■"," "," "," "}, 26 }; 27 #endregion 28 29 while (true) 30 { 31 Console.Clear();//清空掉所有已经打印的内容 32 #region 打印地图 33 for (int i = 0; i < 10; i++) 34 { 35 for (int j = 0; j < 10; j++) 36 { 37 Console.Write(map[i, j]); 38 } 39 Console.WriteLine(); 40 } 41 #endregion 42 43 if (map[end1y, end1x] == "★") 44 { 45 Console.WriteLine("恭喜过关"); 46 break; 47 } 48 49 ConsoleKeyInfo key = Console.ReadKey(); 50 //向上 51 if (key.Key.ToString() == "UpArrow") 52 { 53 //小人当前的位置与要去的下一步位置内容互换 54 if (map[y - 1, x] == "■")//如果小人的下一步是墙,什么都不干 55 { 56 } 57 else //小人的下一步不是墙 58 { 59 if (map[y - 1, x] == "□" && map[y - 2, x] != "■") 60 { 61 if (map[y - 2, x] == "☆") 62 { 63 //箱子的下一步是目标点,让箱子填满目标点 64 map[y - 2, x] = "★"; 65 map[y - 1, x] = " "; 66 string temp = map[y, x]; 67 map[y, x] = map[y - 1, x]; 68 map[y - 1, x] = temp; 69 y--;//真正改变小人的位置 70 } 71 else if (map[y - 2, x] == " ") 72 { 73 //推着箱子走,箱子的下一步是空地才可以走 74 //先让箱子和箱子的下一步互换 75 string temp = map[y - 1, x]; 76 map[y - 1, x] = map[y - 2, x]; 77 map[y - 2, x] = temp; 78 temp = map[y, x]; 79 map[y, x] = map[y - 1, x]; 80 map[y - 1, x] = temp; 81 y--;//真正改变小人的位置 82 } 83 } 84 else if (map[y - 1, x] == " ") 85 { 86 //正常行走 87 string temp = map[y, x]; 88 map[y, x] = map[y - 1, x]; 89 map[y - 1, x] = temp; 90 y--;//真正改变小人的位置 91 } 92 } 93 } 94 //向下 95 else if (key.Key.ToString() == "DownArrow") 96 { 97 string temp = map[y, x]; 98 map[y, x] = map[y + 1, x]; 99 map[y + 1, x] = temp; 100 y++;//真正改变小人的位置 101 } 102 //向左 103 else if (key.Key.ToString() == "LeftArrow") 104 { 105 string temp = map[y, x]; 106 map[y, x] = map[y, x - 1]; 107 map[y, x - 1] = temp; 108 x--;//真正改变小人的位置 109 } 110 //向右 111 else if (key.Key.ToString() == "RightArrow") 112 { 113 //小人当前的位置与要去的下一步位置内容互换 114 if (map[y, x + 1] == "■")//如果小人的下一步是墙,什么都不干 115 { 116 } 117 else //小人的下一步不是墙 118 { 119 if (map[y, x + 1] == "□" && map[y, x + 2] != "■") 120 { 121 //先让箱子和箱子的下一步互换 122 string temp = map[y, x + 1]; 123 map[y, x + 1] = map[y, x + 2]; 124 map[y, x + 2] = temp; 125 temp = map[y, x]; 126 map[y, x] = map[y, x + 1]; 127 map[y, x + 1] = temp; 128 x++;//真正改变小人的位置 129 } 130 else if (map[y, x + 1] == " ") 131 { 132 //正常行走 133 string temp = map[y, x]; 134 map[y, x] = map[y, x + 1]; 135 map[y, x + 1] = temp; 136 x++;//真正改变小人的位置 137 } 138 } 139 } 140 } 141 142 143 //是否胜利 144 145 Console.ReadKey(); 146 Console.ReadKey(); 147 } 148 } 149 }
对战游戏提纲,简单从操作:
1 namespace 对战游戏2._0 2 { 3 class Program 4 { 5 public struct ZhanShi 6 { 7 public string MingZi; 8 public int GongJi; 9 public int XueLiang; 10 } 11 12 public struct JiNeng 13 { 14 public string MingCheng; 15 public double ShangHai; 16 } 17 18 public struct WuQi 19 { 20 public string MingCheng; 21 public int GongJiLi; 22 } 23 24 25 static void Main(string[] args) 26 { 27 Random ran = new Random(); 28 29 #region 技能生成 30 ArrayList JiNengMen = new ArrayList(); 31 JiNeng jn1 = new JiNeng(); 32 jn1.MingCheng = "降龙十八掌"; 33 jn1.ShangHai = 2; 34 JiNeng jn2 = new JiNeng(); 35 jn2.MingCheng = "佛山无影脚"; 36 jn2.ShangHai = 1.5; 37 JiNeng jn3 = new JiNeng(); 38 jn3.MingCheng = "如来神掌"; 39 jn3.ShangHai = 3; 40 JiNengMen.Add(jn1); 41 JiNengMen.Add(jn2); 42 JiNengMen.Add(jn3); 43 #endregion 44 45 #region 生成武器库 46 WuQi wq1 = new WuQi(); 47 wq1.MingCheng = "树枝"; 48 wq1.GongJiLi = 50; 49 WuQi wq2 = new WuQi(); 50 wq2.MingCheng = "菜刀"; 51 wq2.GongJiLi = 200; 52 WuQi wq3 = new WuQi(); 53 wq3.MingCheng = "圣剑"; 54 wq3.GongJiLi = 500; 55 #endregion 56 57 #region 创建战士 58 ZhanShi zs1 = new ZhanShi(); 59 Console.Write("请输入第一个战士的姓名:"); 60 zs1.MingZi = Console.ReadLine(); 61 zs1.GongJi = ran.Next(100, 201); 62 zs1.XueLiang = ran.Next(2000, 4000); 63 //100 10以下 圣剑 11~40 菜刀 41~90 树枝 91~100啥也没有 64 int HDWQ = ran.Next(1, 101); 65 if (HDWQ <= 10) 66 { 67 Console.WriteLine(zs1.MingZi + "获得了武器:" + wq3.MingCheng); 68 zs1.GongJi += wq3.GongJiLi; 69 } 70 else if (HDWQ <= 40) 71 { 72 Console.WriteLine(zs1.MingZi + "获得了武器:" + wq2.MingCheng); 73 zs1.GongJi += wq2.GongJiLi; 74 } 75 else if (HDWQ <= 90) 76 { 77 Console.WriteLine(zs1.MingZi + "获得了武器:" + wq1.MingCheng); 78 zs1.GongJi += wq1.GongJiLi; 79 } 80 else 81 { 82 Console.WriteLine("嘿嘿嘿,啥也木有哇!"); 83 } 84 Console.WriteLine("第一个战士:" + zs1.MingZi + ",攻击力:" + zs1.GongJi + ",血量:" + zs1.XueLiang); 85 86 ZhanShi zs2 = new ZhanShi(); 87 Console.Write("请输入第二个战士的姓名:"); 88 zs2.MingZi = Console.ReadLine(); 89 zs2.GongJi = ran.Next(100, 201); 90 zs2.XueLiang = ran.Next(500, 2000); 91 92 HDWQ = ran.Next(1, 101); 93 if (HDWQ <= 10) 94 { 95 Console.WriteLine(zs2.MingZi + "获得了武器:" + wq3.MingCheng); 96 zs2.GongJi += wq3.GongJiLi; 97 } 98 else if (HDWQ <= 40) 99 { 100 Console.WriteLine(zs2.MingZi + "获得了武器:" + wq2.MingCheng); 101 zs2.GongJi += wq2.GongJiLi; 102 } 103 else if (HDWQ <= 90) 104 { 105 Console.WriteLine(zs2.MingZi + "获得了武器:" + wq1.MingCheng); 106 zs2.GongJi += wq1.GongJiLi; 107 } 108 else 109 { 110 Console.WriteLine("嘿嘿嘿,啥也木有哇!"); 111 } 112 113 114 Console.WriteLine("第二个战士:" + zs2.MingZi + ",攻击力:" + zs2.GongJi + ",血量:" + zs2.XueLiang); 115 #endregion 116 117 Console.WriteLine("请按任意键开始战斗!!!"); 118 Console.ReadKey(); 119 120 Console.ForegroundColor = ConsoleColor.White; 121 //对打 122 while (true) 123 { 124 int ShangHai = 0; 125 126 #region 第一个战士攻击 127 int SYJN = ran.Next(1, 11); 128 if (SYJN <= 3) 129 { 130 JiNeng jn = (JiNeng)JiNengMen[ran.Next(0, JiNengMen.Count)]; 131 ShangHai = Convert.ToInt32(Program.PuTongGongJi(zs1.GongJi) * jn.ShangHai); 132 zs2.XueLiang = zs2.XueLiang - ShangHai; 133 134 Console.ForegroundColor = ConsoleColor.Green; 135 Console.WriteLine(zs1.MingZi + " 对 " + zs2.MingZi + " 发动了☆☆☆" + jn.MingCheng + "☆☆☆,造成了" + ShangHai + "点伤害, " + zs2.MingZi + " 剩余" + zs2.XueLiang + "点血量!"); 136 Console.WriteLine(); 137 System.Threading.Thread.Sleep(1000); 138 } 139 else 140 { 141 Console.ForegroundColor = ConsoleColor.White; 142 ShangHai = Program.PuTongGongJi(zs1.GongJi); 143 zs2.XueLiang = zs2.XueLiang - ShangHai; 144 Console.WriteLine(zs1.MingZi + " 对 " + zs2.MingZi + " 发动了普通攻击,造成了" + ShangHai + "点伤害, " + zs2.MingZi + " 剩余" + zs2.XueLiang + "点血量!"); 145 Console.WriteLine(); 146 System.Threading.Thread.Sleep(1000); 147 } 148 #endregion 149 150 #region 第二个战士攻击 151 SYJN = ran.Next(1, 11); 152 if (SYJN <= 3) 153 { 154 JiNeng jn = (JiNeng)JiNengMen[ran.Next(0, JiNengMen.Count)]; 155 ShangHai = Convert.ToInt32(Program.PuTongGongJi(zs2.GongJi) * jn.ShangHai); 156 zs1.XueLiang = zs1.XueLiang - ShangHai; 157 158 Console.ForegroundColor = ConsoleColor.Yellow; 159 Console.WriteLine(zs2.MingZi + " 对 " + zs1.MingZi + " 发动了☆☆☆" + jn.MingCheng + "☆☆☆,造成了" + ShangHai + "点伤害, " + zs1.MingZi + " 剩余" + zs1.XueLiang + "点血量!"); 160 Console.WriteLine(); 161 System.Threading.Thread.Sleep(1000); 162 } 163 else 164 { 165 Console.ForegroundColor = ConsoleColor.White; 166 ShangHai = Program.PuTongGongJi(zs2.GongJi); 167 zs1.XueLiang = zs1.XueLiang - ShangHai; 168 169 Console.WriteLine(zs2.MingZi + " 对 " + zs1.MingZi + " 发动了普通攻击,造成了" + ShangHai + "点伤害, " + zs1.MingZi + " 剩余" + zs1.XueLiang + "点血量!"); 170 Console.WriteLine(); 171 172 System.Threading.Thread.Sleep(1000); 173 } 174 #endregion 175 176 #region 判断胜负 177 if (zs1.XueLiang <= 0 || zs2.XueLiang <= 0) 178 { 179 if (zs1.XueLiang <= 0 && zs2.XueLiang <= 0) 180 { 181 Console.WriteLine("二位同归于尽了!!!"); 182 } 183 else 184 { 185 if (zs1.XueLiang <= 0) 186 { 187 Console.WriteLine(zs2.MingZi + "获得了最终胜利!!!"); 188 } 189 else 190 { 191 Console.WriteLine(zs1.MingZi + "获得了最终胜利!!!"); 192 } 193 } 194 break; 195 } 196 #endregion 197 } 198 199 Console.ReadKey(); 200 } 201 202 /// <summary> 203 /// 生成普通攻击的浮动攻击值 204 /// </summary> 205 /// <param name="a">普通攻击的基础攻击力</param> 206 /// <returns></returns> 207 public static int PuTongGongJi(int a) 208 { 209 int cc = 0; 210 Random r = new Random(); 211 int aa = r.Next(0, 141); 212 int bb = r.Next(0, 2); 213 if (bb == 0) 214 { 215 cc = a + aa; 216 } 217 else 218 { 219 cc = a - aa; 220 } 221 return cc; 222 } 223 } 224 }