A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 782385854 中级黑马   /  2013-10-25 10:46  /  1460 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 782385854 于 2013-10-25 14:48 编辑

再写的过程中,写到那个幸运轮盘的时候,哦,总是出错·····死循环里面了···出不来了,可是找不到哪里错了,我先贴代码,到底哪里错了呢
  1.     class Program
  2.     {
  3.         static int[] map = new int[100];
  4.         static int[] playerpost = {0,0};

  5.         static void Main(string[] args)
  6.         {
  7.             int input = 0;
  8.             Random r = new Random();//产生随机数
  9.             int step = 0;//存放随机数
  10.             showUI();
  11.             string[] name = new string[2];
  12.             Console.WriteLine("请输入玩家A的名字:");
  13.             name[0] = Console.ReadLine();


  14.             while (name[0] == "")
  15.             {
  16.                 Console.WriteLine("输入不能为空,请重新输入:");
  17.                 name[0] = Console.ReadLine();
  18.             }
  19.             Console.WriteLine("请输入玩家B的名字:");
  20.             name[1] = Console.ReadLine();
  21.             while (name[1] == name[0] || name[1] == "")
  22.             {
  23.                 if (name[1] == "")
  24.                 {
  25.                     Console.WriteLine("玩家B的名字不能为空,请重新输入");
  26.                 }
  27.                 if (name[1] == name[0])
  28.                 {
  29.                     Console.WriteLine("该用户名已存在,请重新输入");
  30.                 }
  31.                 name[1] = Console.ReadLine();
  32.             }
  33.                 Console.Clear();
  34.                 showUI();
  35.                 Console.WriteLine("游戏开始......");
  36.                 Console.WriteLine("{0}的士兵表示A",name[0]);
  37.                 Console.WriteLine("{0}的士兵表示B", name[1]);
  38.                 inmap();
  39.                 DrowMap();
  40.                 Console.WriteLine();
  41.                 while (playerpost[0]<99&&playerpost[1]<99)
  42.                 {
  43.                     Console.WriteLine("请玩家{0}按任意键扔色子",name[0]);
  44.                     Console.ReadKey(true);
  45.                   step =  r.Next(1, 9);
  46.                   Console.WriteLine("{0}扔出了{1}",name[0],step);
  47.                   Console.WriteLine("用户按任意键 开始行动");
  48.                   Console.ReadKey(true);
  49.                   playerpost[0] = playerpost[0] + step;
  50.                   checkbos();
  51.                   Console.Clear();
  52.                   DrowMap();
  53.                   Console.WriteLine();
  54.                   switch (map[playerpost[0]])
  55.                   {
  56.                       case 0 :
  57.                           //普通

  58.                           break;
  59.                       case 1:
  60.                           //幸运轮盘
  61.                           Console.Clear();
  62.                           
  63.                           DrowMap();
  64.                           Console.WriteLine("你走到了幸运轮盘,请选择运气···");
  65.                           Console.WriteLine("1:交换位置 2:轰炸对方");
  66.                           input = int.Parse(Console.ReadLine());
  67.                           input = Readint(1, 2);

  68.                           //int userselect = Readint(1, 2);
  69.                           if (input==1)
  70.                           {
  71.                               int temp = playerpost[0];
  72.                               playerpost[0] = playerpost[1];
  73.                               playerpost[1] = temp;
  74.                           }
  75.                           else
  76.                           {
  77.                               playerpost[1] = playerpost[1] - 6;
  78.                               checkbos();
  79.                           }
  80.                           break;
  81.                       case 2:
  82.                           //地雷
  83.                           playerpost[0] = playerpost[0] - 6;
  84.                           checkbos();
  85.                           break;
  86.                       case 3:
  87.                           //暂停
  88.                           break;
  89.                       case 4:
  90.                           playerpost[0] = playerpost[0] + 10;
  91.                           //时空隧道
  92.                           break;
  93.                       default:
  94.                           break;
  95.                   }
  96.                 }
  97.                 Console.Clear();
  98.                 DrowMap();
  99.                 Console.WriteLine("{0}扔出了{1}",name[0],step);
  100.                 Console.WriteLine("{0}的位置为{1}",name[0],playerpost[0]);
  101.                 Console.WriteLine("{0}的位置为{1}", name[1], playerpost[1]);
  102.                 Console.ReadKey();
  103.            
  104.         }
  105.         static int Readint()
  106.         {
  107.             int i = Readint(int.MinValue, int.MaxValue);
  108.             return i;
  109.         }
  110.         static int Readint(int min, int max)
  111.         {
  112.             while (true)
  113.             {
  114.                 try
  115.                 {
  116.                     int number = Convert.ToInt32(Console.ReadLine());
  117.                     if (number<min||number>max)
  118.                     {
  119.                         Console.WriteLine("只能输入{0}-{1}之间的数",min,max);
  120.                         continue;
  121.                     }
  122.                 }
  123.                 catch
  124.                 {

  125.                     Console.WriteLine("只能输入数字,请重新输入```") ;
  126.                 }
  127.             }
  128.         }
  129.         static void checkbos()
  130.         {
  131.             for (int i = 0; i < 2; i++)
  132.             {
  133.                 if (playerpost[i]>99)
  134.                 {
  135.                     playerpost[i] = 99;
  136.                 }
  137.                 if (playerpost[i]<0)
  138.                 {
  139.                     playerpost[i] = 0;
  140.                 }
  141.             }
  142.         }
  143.         static string  GetmapString(int pos)
  144.         {
  145.             string result = "";
  146.             if (playerpost[0] == pos && playerpost[1] == pos)
  147.             {
  148.                result = "><";
  149.             }
  150.             else if (playerpost[0] == pos)
  151.             {
  152.                 result = "A";
  153.             }
  154.             else if (playerpost[1] == pos)
  155.             {
  156.                 result = "B";
  157.             }
  158.             else
  159.             {
  160.                 switch (map[pos])
  161.                 {
  162.                     case 0:
  163.                         Console.ForegroundColor = ConsoleColor.White;
  164.                         result = "□";
  165.                         break;
  166.                     case 1:
  167.                         Console.ForegroundColor = ConsoleColor.DarkMagenta;
  168.                         result ="◎";
  169.                         break;
  170.                     case 2:
  171.                         Console.ForegroundColor = ConsoleColor.Gray;
  172.                         result = "¤";
  173.                         break;
  174.                     case 3:
  175.                         Console.ForegroundColor = ConsoleColor.Magenta;
  176.                         result = "△";
  177.                         break;
  178.                     case 4:
  179.                         Console.ForegroundColor = ConsoleColor.Yellow;
  180.                         result = "卍";
  181.                         break;
  182.                     default:
  183.                         break;
  184.                 }
  185.             }
  186.             return result;
  187.         }
  188.         static void inmap()
  189.         {
  190.             //用于储存地图下标
  191.             //❤表示幸运转盘
  192.             // ¤表示地雷
  193.             //卍表示时空隧道
  194.             //△表示暂停
  195.             //□表示普通
  196.             int[] luckpanturn = { 6, 9, 23, 57, 34,89, 55 };//幸运转盘1
  197.             int[] dilei = { 44, 46, 7, 47, 49 };//地雷2
  198.             int[] pause = { 54, 56, 58,32,35,77, 71 };//暂停3
  199.             int[] timesuidao = { 20, 22, 26, 28, 66 };//时空隧道   4
  200.             for (int i = 0; i < luckpanturn.Length; i++)
  201.             {
  202.                 map[luckpanturn[i]] = 1;
  203.             }
  204.             for (int i = 0; i < dilei.Length; i++)
  205.             {
  206.                 map[dilei[i]] = 2;
  207.             }
  208.             for (int i = 0; i < pause.Length; i++)
  209.             {
  210.                 map[pause[i]] = 3;
  211.             }
  212.             for (int i = 0; i < timesuidao.Length; i++)
  213.             {
  214.                 map[timesuidao[i]] = 4;
  215.             }
  216.         }
  217.         static void DrowMap()
  218.         {
  219.             Console.WriteLine("游戏规则: ◎表示幸运转盘  ¤表示地雷 卍表示时空隧道  △表示暂停 □表示普通");
  220.             for (int i = 0; i < 30; i++)
  221.             {
  222.              Console.Write(GetmapString(i));
  223.             }
  224.             Console.WriteLine();
  225.             for (int i = 30; i < 35; i++)
  226.             {
  227.                 for (int j = 0; j < 29; j++)
  228.                 {
  229.                     Console.Write("  ");
  230.                 }
  231.                 Console.WriteLine(GetmapString(i));
  232.             }
  233.             for (int i = 64; i >= 35; i--)
  234.             {
  235.                 Console.Write(GetmapString(i));
  236.             }
  237.             Console.WriteLine();
  238.             for (int i = 65; i < 70; i++)
  239.             {
  240.                 Console.WriteLine(GetmapString(i));
  241.             }
  242.             for (int i = 70; i < 100; i++)
  243.             {
  244.                 Console.Write(GetmapString(i));
  245.             }
  246.         }

  247.         public static void showUI()
  248.         {
  249.             Console.WriteLine("**************************************************************************");
  250.             Console.WriteLine("*****                                                                 ****");
  251.             Console.WriteLine("*****                     飞行骑士游戏                                ****");
  252.             Console.WriteLine("*****                                                                 ****");
  253.             Console.WriteLine("**************************************************************************");
  254.         }
  255.     }
复制代码

评分

参与人数 1技术分 +1 收起 理由
haxyek + 1

查看全部评分

6 个回复

倒序浏览
你参考下我的代码吧!我的博客里面,太长了粘贴不了http://blog.csdn.net/zk672756448
回复 使用道具 举报
input = int.Parse(Console.ReadLine());
input = Readint(1, 2);
这两句上面那个可以省略,在readint方法里 没有返回值 加个else return number即可。
而且,这是一个人的游戏----循环掷骰子的时候  你只有玩家1掷骰子 没有条件说什么时候玩家2掷骰子...


评分

参与人数 1技术分 +1 收起 理由
haxyek + 1

查看全部评分

回复 使用道具 举报
芦路 发表于 2013-10-25 11:27
input = int.Parse(Console.ReadLine());
input = Readint(1, 2);
这两句上面那个可以省略,在readint方法 ...

·····还没有写到第二个玩家了···第一个就出不来了,只要遇到幸运轮盘,就陷进去了···出不来,我调试过一直进到Readint里面不出来了·····这是怎么回事呢,变量和其他东西都没错啊,
回复 使用道具 举报
追溯客 发表于 2013-10-25 10:58
你参考下我的代码吧!我的博客里面,太长了粘贴不了http://blog.csdn.net/zk672756448

哦哦,是我的ReadInt方法有毛病,已经改过,谢谢了
回复 使用道具 举报
每次写while(true){}的时候一定要注意怎么跳出循环,以前老是犯这种错误啊!
回复 使用道具 举报
{:soso__3669389859068460655_3:}楼上是感叹么
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马