Floor.cs
上传用户:yiyuerguo
上传日期:2014-09-27
资源大小:3781k
文件大小:2k
源码类别:

C#编程

开发平台:

Others

  1. using System;
  2. using System.Drawing;
  3. namespace WindowsApplication9
  4. {
  5. /// <summary>
  6. /// Floor 的摘要说明。这是主蛇运动的场所类,
  7. /// </summary>
  8. public class Floor
  9. {
  10. public Floor(Point p)
  11. {
  12. //
  13. // TODO: 在此处添加构造函数逻辑
  14. //
  15. vertex = p;
  16. s = new Snake(p, 10);
  17. currentBean = new Bean();
  18. currentBean.Origin = new Point(p.X +30,p.Y + 30);
  19. //Pen p = new Pen(Color.Orange);
  20. //g.DrawRectangle(p, vertex.X,vertex.Y,width,height);
  21. }
  22. //单位长度
  23. private static int unitLength = 5;
  24. //长与宽
  25. private int width = 60 * unitLength;
  26. private int height = 30 * unitLength;
  27. //顶点
  28. private Point vertex;
  29. //蛇
  30. private Snake s;
  31. public Snake S
  32. {
  33. get { return s; }
  34. }
  35. //豆,
  36. private Bean currentBean;
  37. //显示豆
  38. public void DisplayNextBean(Graphics g)
  39. {
  40. currentBean.UnDisplay(g);//消掉当前的豆
  41. currentBean = getRandomBean();
  42. currentBean.Display(g);
  43. }
  44. //随机产生一个豆
  45. private Bean getRandomBean()
  46. {
  47. Random random = new Random();
  48. int x = random.Next(width/unitLength);
  49. int y = random.Next(height/unitLength);
  50. Point p = new Point(vertex.X + x * 5, vertex.Y + y * 5);
  51. Bean newB = new Bean();
  52. newB.Origin = p;
  53. return newB;
  54. }
  55. //重新开始
  56. public void ReSet(Graphics g)
  57. {
  58. s.UnDisplay(g);//消除以前蛇的形状。
  59. s.Reset(vertex, 10);
  60. }
  61. //初始化场所形状
  62. public void initFloor(Graphics g)
  63. {
  64. Pen p = new Pen(Color.Red);
  65. g.DrawRectangle(p, vertex.X,vertex.Y,width,height);
  66. }
  67. //显示
  68. public void Display(Graphics g)
  69. {
  70. Pen p = new Pen(Color.Red);
  71. g.DrawRectangle(p, vertex.X,vertex.Y,width,height);
  72. currentBean.Display(g);
  73. CheckBean(g);
  74. CheckSnake();
  75. s.Display(g);
  76. }
  77. //检查蛇是否吃了豆
  78. public void CheckBean(Graphics g)
  79. {
  80. if (currentBean.Origin.Equals(s.getHeadPoint))
  81. {
  82. currentBean.Function(s);
  83. this.DisplayNextBean(g);
  84. }
  85. }
  86. //检查蛇是否撞墙
  87. public void CheckSnake()
  88. {
  89. if ((vertex.X <= s.getHeadPoint.X && s.getHeadPoint.X < (vertex.X + width)) && 
  90. (vertex.Y <= s.getHeadPoint.Y && s.getHeadPoint.Y < (vertex.Y + height)) && !s.getHitSelf)
  91. {
  92. return;
  93. }
  94. else
  95. {
  96. //蛇死亡
  97. s.SnakeDie();
  98. }
  99. }
  100. }
  101. }