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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王彬 中级黑马   /  2012-11-21 16:27  /  2418 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

骑士飞行棋学习结束了,我想绘制一副如图片所示的地图,请高手给一个思路?

QQ截图20121121162508.png (4.75 KB, 下载次数: 62)

QQ截图20121121162508.png

4 个回复

倒序浏览
本帖最后由 申延超 于 2012-11-21 17:12 编辑

一行一行的画,能写成方法的就写成方法,没啥简便的画法,最好先画个草图 把下标都仔细标下,
这样不容易出错   先确定横的和树的分别多少格   25格或者30格  再分别画每行的格子和空格
回复 使用道具 举报
螺旋式的!这个样有点小难度~!给个代码,看看谁能在其基础上改一改!!
代码: fly.rar (31.77 KB, 下载次数: 187)
回复 使用道具 举报
本帖最后由 申延超 于 2012-11-21 19:31 编辑
  1. /// <summary>
  2. /// 此方法用于绘制地图
  3. /// </summary>
  4. public static void DrowMap()
  5. {
  6. Console.WriteLine(" 图列:◎幸运轮盘 ☆地雷 ▲暂停 卐时空隧道");
  7. Console.WriteLine(" {0}用A表示,{1}用B表示.....", playNames[0], playNames[1]);
  8. //绘第一行地图
  9. Console.Write(" ");
  10. for (int i = 0; i <= 20; i++)
  11. {
  12. GetMapString(i);
  13. }
  14. Console.WriteLine();

  15. //绘2-4行地图

  16. for (int i = 21; i <= 23; i++)
  17. {
  18. Console.Write(" ");
  19. for (int k = 0; k < 20; k++)
  20. {
  21. Console.Write(" ");
  22. }
  23. GetMapString(i);
  24. Console.WriteLine();
  25. }
  26. #region 绘第五行
  27. Console.Write(" ");
  28. for (int i = 74; i <= 89; i++)
  29. {
  30. GetMapString(i);
  31. }
  32. for (int i = 0; i < 4; i++)
  33. {
  34. Console.Write(" ");
  35. }
  36. GetMapString(24);
  37. Console.WriteLine();
  38. #endregion

  39. //绘第6-9行
  40. Drow6To9(73, 90, 25);
  41. Drow6To9(72, 91, 26);
  42. Drow6To9(71, 92, 27);
  43. Drow6To9(70, 93, 28);

  44. #region 绘第10行地图
  45. Console.Write(" ");
  46. GetMapString(69);
  47. for (int i = 0; i < 4; i++)
  48. {
  49. Console.Write(" ");
  50. }
  51. for (int i = 116; i <= 121; i++)
  52. {
  53. GetMapString(i);
  54. }
  55. for (int i = 0; i < 4; i++)
  56. {
  57. Console.Write(" ");
  58. }
  59. GetMapString(94);
  60. for (int i = 0; i < 4; i++)
  61. {
  62. Console.Write(" ");
  63. }
  64. GetMapString(29);
  65. Console.WriteLine();
  66. #endregion
  67. //绘11-13行地图
  68. DrowTwelveToFifteen(68, 115, 122, 95, 30);
  69. DrowTwelveToFifteen(67, 114, 123, 96, 31);
  70. DrowTwelveToFifteen(66, 113, 124, 97, 32);

  71. #region 绘14行地图
  72. Console.Write(" ");
  73. GetMapString(65);
  74. for (int i = 0; i < 4; i++)
  75. {
  76. Console.Write(" ");
  77. }
  78. GetMapString(112);
  79. for (int i = 0; i < 9; i++)
  80. {
  81. Console.Write(" ");
  82. }
  83. GetMapString(98);
  84. for (int i = 0; i < 4; i++)
  85. {
  86. Console.Write(" ");
  87. }
  88. GetMapString(33);
  89. Console.WriteLine();
  90. #endregion
  91. #region 绘15行地图
  92. Console.Write(" ");
  93. GetMapString(64);
  94. for (int i = 0; i < 4; i++)
  95. {
  96. Console.Write(" ");
  97. }
  98. GetMapString(111);
  99. for (int i = 0; i < 9; i++)
  100. {
  101. Console.Write(" ");
  102. }
  103. GetMapString(99);
  104. for (int i = 0; i < 4; i++)
  105. {
  106. Console.Write(" ");
  107. }
  108. GetMapString(34);
  109. Console.WriteLine();
  110. #endregion

  111. #region 绘16行地图
  112. Console.Write(" ");
  113. GetMapString(63);
  114. for (int i = 0; i < 4; i++)
  115. {
  116. Console.Write(" ");
  117. }
  118. for (int i = 110; i >= 100; i--)
  119. {
  120. GetMapString(i);
  121. }
  122. for (int i = 0; i < 4; i++)
  123. {
  124. Console.Write(" ");
  125. }
  126. GetMapString(35);
  127. Console.WriteLine();
  128. #endregion

  129. //绘17-19行地图

  130. Drow17To19(62, 36);
  131. Drow17To19(61, 37);
  132. Drow17To19(60, 38);
  133. //绘20行地图
  134. Console.Write(" ");
  135. for (int i = 59; i >= 39; i--)
  136. {
  137. GetMapString(i);
  138. }
  139. Console.WriteLine();
  140. }

  141. /// <summary>
  142. /// 此方法用于绘制地图第6-9行
  143. /// </summary>
  144. /// <param name="num1"></param>
  145. /// <param name="num2"></param>
  146. /// <param name="num3"></param>
  147. public static void Drow6To9(int num1, int num2, int num3)
  148. {
  149. Console.Write(" ");
  150. GetMapString(num1);
  151. for (int i = 0; i < 14; i++)
  152. {
  153. Console.Write(" ");
  154. }
  155. GetMapString(num2);
  156. for (int i = 0; i < 4; i++)
  157. {
  158. Console.Write(" ");
  159. }
  160. GetMapString(num3);
  161. Console.WriteLine();
  162. }

  163. /// <summary>
  164. /// 此方法用于绘制11-13行地图
  165. /// </summary>
  166. /// <param name="num1"></param>
  167. /// <param name="num2"></param>
  168. /// <param name="num3"></param>
  169. /// <param name="num4"></param>
  170. /// <param name="num5"></param>
  171. public static void DrowTwelveToFifteen(int num1, int num2, int num3, int num4, int num5)
  172. {
  173. Console.Write(" ");
  174. GetMapString(num1);
  175. for (int i = 0; i < 4; i++)
  176. {
  177. Console.Write(" ");
  178. }
  179. GetMapString(num2);
  180. for (int i = 0; i < 4; i++)
  181. {
  182. Console.Write(" ");
  183. }
  184. GetMapString(num3);
  185. for (int i = 0; i < 4; i++)
  186. {
  187. Console.Write(" ");
  188. }
  189. GetMapString(num4);
  190. for (int i = 0; i < 4; i++)
  191. {
  192. Console.Write(" ");
  193. }
  194. GetMapString(num5);
  195. Console.WriteLine();
  196. }
  197. /// <summary>
  198. /// 绘18-21行地图
  199. /// </summary>
  200. /// <param name="num1"></param>
  201. /// <param name="num2"></param>
  202. public static void Drow17To19(int num1, int num2)
  203. {
  204. Console.Write(" ");
  205. GetMapString(num1);
  206. for (int i = 0; i < 19; i++)
  207. {
  208. Console.Write(" ");
  209. }
  210. GetMapString(num2);
  211. Console.WriteLine();
  212. }
复制代码

这是以前做的一个飞行棋   地图代码也给贴上了  楼主可以参考下
回复 使用道具 举报
本帖最后由 汤瑞贺 于 2012-11-22 01:22 编辑

{:soso_e118:}写了一晚上,画了这样一个草稿图,用java写的,
  1. class BendLine
  2. { static char[][] ch=new char[20][20];
  3. static int length=ch.length-1;
  4. public static void main(String[] args)
  5. {
  6. int x,y;
  7. for(x=0;x<length+1;x++)//初始化字符数组
  8. for(y=0;y<length+1;y++)
  9. ch[x][y]=' ';
  10. x=y=length;
  11. int count=0;
  12. while(count<(length+1)/2)
  13. {
  14. if(count%2==1)
  15. area(x,y,'*');
  16. else
  17. area(x,y,' ');

  18. x--;
  19. y--;
  20. count++;

  21. }

  22. for(x=0;x<length+1;x++)
  23. {
  24. System.out.print(ch[x]);
  25. System.out.println("");
  26. }

  27. }
  28. static void area(int x,int y,char c)
  29. {
  30. int i=length-x;
  31. int j=length-y;
  32. int n=0;
  33. int k=1;
  34. while(n<4)
  35. {
  36. if(n==0 && i<x)//n==0指左边
  37. ch[i++][j]=c;
  38. else if(n==0)
  39. {n++;i=x;}

  40. if(n==1 && j<y)//n==1指下边
  41. ch[i][j++]=c;
  42. else if(n==1)
  43. {n++;j=y;}

  44. if(n==2 && i>length-x)//n==2指右边
  45. ch[i--][j]=c;
  46. else if(n==2)
  47. {n++;j=x;}
  48. if(n==3 && j>length-x)//n==3指上边
  49. ch[i][j--]=c;
  50. else if(n==3)
  51. {n++;}

  52. }//while
  53. if(ch[length-x+1][y]=='*')
  54. ch[length-x+1][y]=' ';
  55. else
  56. ch[length-x+1][y]='*';
  57. }
  58. }

复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马