经典小游戏--推箱子
生活随笔
收集整理的這篇文章主要介紹了
经典小游戏--推箱子
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
//0是空位,1是墻,2是人,3是箱子,4是終點int[][,] a = new int[2][,];int[,] b0 = new int[10, 10]{{1,1,1,1,1,1,1,1,1,1},{1,0,0,0,1,0,1,0,0,1},{1,0,0,0,1,0,1,0,0,1},{1,0,3,0,1,0,1,0,0,1},{1,0,0,0,1,1,1,0,0,1},{1,0,0,0,0,0,0,0,0,1},{1,0,0,1,0,0,0,0,0,1},{1,2,0,1,1,1,1,0,0,1},{1,0,0,1,0,4,0,0,0,1},{1,1,1,1,1,1,1,1,1,1}};int[,] b1 = new int[10, 10]{{1,1,1,1,1,1,1,1,1,1},{1,0,0,0,1,0,1,0,0,1},{1,0,3,0,1,0,1,3,0,1},{1,0,0,0,1,0,1,0,0,1},{1,0,0,0,1,1,1,0,0,1},{1,0,0,0,0,0,0,0,0,1},{1,0,0,1,4,0,0,0,0,1},{1,2,0,1,1,1,1,0,0,1},{1,0,0,1,0,4,0,0,0,1},{1,1,1,1,1,1,1,1,1,1}};//int[,]b2=new int[15,15]{//{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},//{1,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,1},//{1,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,1},//{1,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,1},//{1,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,1},//{1,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,1},//{1,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,1},//{1,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}}
a[0] = b0;a[1] = b1;for (int z = 0; z < 2; z++) //如果增加地圖,需修改判斷條件
{Console.Clear();Console.WriteLine("第{0}關!", z + 1);ConsoleKeyInfo start = Console.ReadKey();string st = start.Key.ToString();st = st.ToLower();//游戲開始if (st == "spacebar"){int[,] map = a[z]; //取出地圖//判斷人的位置,i為行,j為列int i = 0, j = 0;for (int m = 0; m < 10; m++){for (int n = 0; n < 10; n++){if (map[m, n] == 2){i = m;j = n;break;}}}//判斷終點個數int over = 0;for (int m = 0; m < 10; m++){for (int n = 0; n < 10; n++){if (map[m, n] == 4){over++;}}}//顯示及操作for (; true; ){//輸出顯示
Console.Clear();for (int x = 0; x < 10; x++){for (int y = 0; y < 10; y++){if (map[x, y] == 0){Console.Write(" ");}else if (map[x, y] == 1){Console.Write("■");}else if (map[x, y] == 2 || map[x, y] == 6){Console.Write("♀");}else if (map[x, y] == 3 || map[x, y] == 7){Console.Write("□");}else if (map[x, y] == 4){Console.Write("※");}}Console.Write("\n"); //換行
}//判斷有箱子的終點個數int over1 = 0;for (int m = 0; m < 10; m++){for (int n = 0; n < 10; n++){if (map[m, n] == 7){over1++;}}}//判斷是否所有終點有箱子if (over1 == over){Console.WriteLine("過關!");break;}//操作部分ConsoleKeyInfo K = Console.ReadKey();string k = K.Key.ToString();k = k.ToLower();if (k == "uparrow") //判斷人是否是向上
{if (map[i - 1, j] == 0 || map[i - 1, j] == 4) //判斷人上方是不是空位
{map[i - 1, j] = map[i - 1, j] + 2;map[i, j] = map[i, j] - 2;i--;}else if ((map[i - 1, j] == 3 || map[i - 1, j] == 7) && map[i - 2, j] != 1) //人上方是箱子,判斷箱子上方是否是空位
{map[i - 2, j] = map[i - 2, j] + 3;map[i - 1, j] = map[i - 1, j] - 3 + 2;map[i, j] = map[i, j] - 2;i--;}else //如果人無法移動,輸出提示音Console.Write("\a");}else if (k == "downarrow"){if (map[i + 1, j] == 0 || map[i + 1, j] == 4){map[i + 1, j] = map[i + 1, j] + 2;map[i, j] = map[i, j] - 2;i++;}else if ((map[i + 1, j] == 3 || map[i + 1, j] == 7) && map[i + 2, j] != 1){map[i + 2, j] = map[i + 2, j] + 3;map[i + 1, j] = map[i + 1, j] - 3 + 2;map[i, j] = map[i, j] - 2;i++;}elseConsole.Write("\a");}else if (k == "leftarrow"){if (map[i, j - 1] == 0 || map[i, j - 1] == 4){map[i, j - 1] = map[i, j - 1] + 2;map[i, j] = map[i, j] - 2;j--;}else if ((map[i, j - 1] == 3 || map[i, j - 1] == 7) && map[i, j - 2] != 1){map[i, j - 2] = map[i, j - 2] + 3;map[i, j - 1] = map[i, j - 1] - 3 + 2;map[i, j] = map[i, j] - 2;j--;}elseConsole.Write("\a");}else if (k == "rightarrow"){if (map[i, j + 1] == 0 || map[i, j + 1] == 4){map[i, j + 1] = map[i, j + 1] + 2;map[i, j] = map[i, j] - 2;j++;}else if ((map[i, j + 1] == 3 || map[i, j + 1] == 7) && map[i, j + 2] != 1){map[i, j + 2] = map[i, j + 2] + 3;map[i, j + 1] = map[i, j + 1] - 3 + 2;map[i, j] = map[i, j] - 2;j++;}elseConsole.Write("\a");}else if (k == "b") //按“B”鍵,重新開始
{z--;break;}else if (k == "n") //按“N”鍵,進入下一關
{continue;}}//顯示及操作}//游戲開始elsez--;}//for,逐次取地圖
}
?
轉載于:https://www.cnblogs.com/DORCASQING/p/3943967.html
總結
以上是生活随笔為你收集整理的经典小游戏--推箱子的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CentOS6安装redmine
- 下一篇: Java集合:HashMap源码剖析