适当的OO Pong

Tor*_*dek 10 oop

我应该如何设计一个"正确的"OO Pong?

正确的想法是任何元素都可以改变:球,球场和桨的形状,增加障碍物,甚至"通电",如"可以将球粘到桨上".

目前,两个更紧迫的问题是:

  • 谁检查了结果?和
  • 如果发生了分裂,谁告诉球如何反弹?

gno*_*ice 10

我想你可以制作一个物理引擎对象,你可以在给定的时间间隔内连续更新.它会检查碰撞,移动球,计算反弹角度等.

编辑#1:为了添加更多细节,"游戏物理"对象将存储对其他游戏对象(如球和球)的引用.游戏物理对象将具有"更新"方法,该方法将在游戏运行时被连续调用.此方法将执行的一些步骤是:

  • 获取拨片的当前位置(由玩家控制).
  • 根据球的上一个速度和方向以及自上次更新后经过的时间更新球的位置.
  • 检测与其他物体(桨叶,墙壁等)的碰撞.
  • 根据任何碰撞重新计算球的速度和方向.

只是一些想法.

编辑#2:详细阐述一下OO焦点......

各种物理对象,如球和桨,将存储固有的物理状态和参数作为属性(位置,速度,质量等).游戏物理对象基本上将所有物理运动方程表示为方法.

举个例子......假设你想模拟空气摩擦对球的影响.球对象将存储诸如"速度"和"阻力系数"的属性.游戏物理对象将具有通过获取该对象的必要属性并将它们插入到给定的流体阻力方程中来计算对象上的空气阻力的方法.

通过以这种方式封装内容,可以更轻松地更新代码.例如,如果要使用不同的方程进行流体拖动,则需要进行的唯一修改是游戏物理对象的相应方法.没有其他对象需要修改.