黑马程序员技术交流社区

标题: 骑士飞行棋 [打印本页]

作者: 黑色L    时间: 2013-10-3 17:03
标题: 骑士飞行棋
本帖最后由 黑色L 于 2013-10-3 20:23 编辑

骑士飞行棋 下标为什么能用 i 表示

QQ图片20131003170014.jpg (72.45 KB, 下载次数: 48)

QQ图片20131003170014.jpg

QQ图片20.jpg (35.71 KB, 下载次数: 41)

QQ图片20.jpg

作者: 追溯客    时间: 2013-10-8 20:30
下标只能用数字表示,我的飞行器代码你可以参考一下http://blog.csdn.net/zk672756448/article/details/12395819
作者: ˋ初°见    时间: 2013-10-11 12:37
i代表下标,由于要画0-29格,用for循环控制i(0--29)
作者: 卡兔斯基    时间: 2013-10-11 20:52
呵呵 你是不是看错了。那 i 是地图格子的下表,而playerPos[]里面装的是两个玩家, 这个 if 是判断两个玩家是不是在同一个地图位置上。
作者: 卡兔斯基    时间: 2013-10-11 20:54
我想说 他定义了 i 他为什么不能用呢少年? 这可能吗? 定义了 i 不能用,他还定义干什么。 你看他的 for(int i=0;i<=29;i++)这里面不是定义了 i 吗?他而且还画了30个格子。这30个格子都是用下标画的。格子里面的东西都是空的,所以只能判断位置来定义玩家的位置。
作者: 夏闯富    时间: 2013-10-12 10:00
  1.         static string getMapString(int pos) //pos是指要绘制的那一格的坐标
  2.         {
  3.             string result = "";
  4.             if (playerPos[0] == pos && playerPos[1] == pos)
  5.             {
  6.                 Console.ForegroundColor = ConsoleColor.Yellow; //对所输出的图案附上颜色。
  7.                 result = "<>";
  8.             }
  9.             else if (playerPos[0] == pos)     //A在当前画的格上
  10.             {
  11.                 Console.ForegroundColor = ConsoleColor.Yellow;
  12.                 result = "A";
  13.             }
  14.             else if (playerPos[1] == pos)
  15.             {
  16.                 Console.ForegroundColor = ConsoleColor.Yellow;
  17.                 result = "B";             //B在当前画的格上
  18.             }
  19.             else
  20.             {
  21.                 switch (Map[pos])
  22.                 {
  23.                     case 0:
  24.                         Console.ForegroundColor = ConsoleColor.Gray;
  25.                         result = "口";
  26.                         break;
  27.                     case 1:
  28.                         Console.ForegroundColor = ConsoleColor.Red;
  29.                         result = "◎";
  30.                         break;
  31.                     case 2:
  32.                         Console.ForegroundColor = ConsoleColor.Blue;
  33.                         result = "★";
  34.                         break;
  35.                     case 3:
  36.                         Console.ForegroundColor = ConsoleColor.Yellow;
  37.                         result = "▲";
  38.                         break;
  39.                     case 4:

  40.                         result = "卍";
  41.                         Console.ForegroundColor = ConsoleColor.Green;
  42.                         break;
  43.                 }
  44.             }

  45.             return result;


  46.         }
复制代码

作者: 夏闯富    时间: 2013-10-12 10:02
本帖最后由 夏闯富 于 2013-10-12 10:08 编辑

对应的格子输出什么内容在getMapString()中就写好了,这里是对给  对应的输出的内容   布局,比如:在绘制完30个格的时候换一下行。
  1. static void DrawMap()     {
  2.             Console.WriteLine("图例:幸运轮盘:◎   地雷:★   暂停:▲   时空隧道:卍");
  3.             //画第一行
  4.             for (int i = 0; i < 30; i++)
  5.             {
  6.                 string result = getMapString(i);
  7.                 Console.Write(result);
  8.             }
  9.             Console.WriteLine();    //在绘制完30个格的时候换一下行。
  10.             //画第一列
  11.             for (int i = 30; i <= 34; i++)
  12.             {

  13.                 //绘制29个双空格,因为全角的字符是两个空格
  14.                 for (int j = 0; j < 29; j++)
  15.                 {
  16.                     Console.Write("  ");
  17.                 }
  18.                 string result = getMapString(i);
  19.                 Console.WriteLine(result);

  20.             }
  21.             //画第二行
  22.             for (int i = 64; i >= 35; i--)  //注意 i--
  23.             {
  24.                 Console.Write(getMapString(i));
  25.             }
  26.             Console.WriteLine();   //注意:绘制完第二行注意换行
  27.             //画第二列
  28.             for (int i = 65; i < 70; i++)
  29.             {
  30.                 Console.WriteLine(getMapString(i));

  31.             }
  32.             //绘制第三行
  33.             for (int i = 70; i < 100; i++)
  34.             {
  35.                 Console.Write(getMapString(i));
  36.             }
  37.             Console.WriteLine();
  38.             Console.ResetColor();    //绘制完地图,记得把颜色恢复到默认颜色
  39.         }
复制代码

作者: 无风的风    时间: 2013-10-13 16:03
因为首先在mian()方法外已经定义了static int[] PlayerPos={0,0},已经将PlayerPos这个数组视为全局量了,所以你在DrawMap方法中直接使用PlayerPos这个数组是可以获取PlayerPos中的下表数字的,至于第二个问题,那个PlayerPos[0]或PlayerPos[1]中的数字本来就代表玩家的坐标位置量,将这个量和代表坐标的变量i进行比较是非常合理的,你再仔细的想想吧~~ 希望能帮到你....




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2