fork download
  1. class Field
  2. {
  3. GameObject[] go; ///このフィールドにあるオブジェクト。
  4.  
  5. ///ゲーム時間が経過した時の、フィールド内の処理(オブジェクトの衝突検知とか)を書く。
  6. public void timeForward()
  7. {
  8. foreach(v; go)
  9. {
  10. v.timeForward();
  11. //他に衝突の処理など。
  12. if(/*衝突した!*/)
  13. {
  14. v.collideReaction(other/*←相手のオブジェクト*/);
  15. }
  16. }
  17. }
  18. }
  19.  
  20. class abstract GameObject
  21. {
  22. public float x; ///このオブジェクトのx座標。
  23. public float y; ///このオブジェクトのy座標。
  24.  
  25. /**
  26. ゲーム時間が経過した時の、このオブジェクトの挙動を書く。 
  27. FieldのtimeForward()から呼び出される。
  28. */
  29. public void timeForward();
  30.  
  31. /**
  32. このオブジェクトが他のオブジェクトと衝突した時の挙動を書く。
  33. FieldのtimeForward()から呼び出される。
  34. Params:
  35. go = このオブジェクトと衝突したオブジェクトが渡される。
  36. */
  37. public void collideReaction(GameObject go);
  38.  
  39. /**
  40. ダメージに対するリアクションの処理
  41. Params:
  42. power = 与えられた攻撃力。
  43. Returns:
  44. 実際に与えたダメージ。
  45. */
  46. public int damegeReaction(int power)
  47. {
  48. //基本的なリアクション。
  49. }
  50.  
  51. /**
  52. ふっ飛ばしに対するリアクション。
  53. Params:
  54. v = 吹っ飛ばす力。
  55. Returns:
  56. 実際に吹っ飛んだ速度。
  57. */
  58. public Vector blownReaction(Vector v)
  59. {
  60. //基本的な(ry
  61. }
  62. }
  63.  
  64. class Missile : GameObject
  65. {
  66. public int power; ///ミサイルの攻撃力。
  67. public int speed; ///ミサイルの推進力。
  68.  
  69. public override void timeForward()
  70. {
  71. //前に推進する処理とか。
  72. }
  73.  
  74. public override void collideReaction(GameObject go)
  75. {
  76. //爆発処理とか。
  77. }
  78.  
  79. public override Vector blownReaction(Vector v)
  80. {
  81. //ミサイル固有の吹っ飛びの処理(ってなんだろう?w)。
  82. }
  83. }
  84.  
  85. class HomingMissile : Missile
  86. {
  87. public int lead; ///誘導性能。
  88.  
  89. public override void timeForward()
  90. {
  91. //追加で誘導処理でも。
  92. }
  93.  
  94. //衝突処理には変更無し。
  95. }
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty