是否有可能在没有面向对象编程的情况下创建基本的汽车游戏?

时间:2014-10-30 00:29:10

标签: javascript

对于我的10年级计算机科学项目,我和我的合作伙伴正在创建一个带有html和Javascript(带jquery)的汽车游戏。没有面向对象的编程是否可行且可行,我的老师告诉我们,我们不能使用?

2 个答案:

答案 0 :(得分:2)

是的,OOP是一种相对较新的编程范例,虽然在某些情况下有利,但它绝不是唯一的编码方式。问题在于在“对象”和“数据结构”之间划线。

程序编程早于面向对象编程,相对简单,依赖于通过数据结构传递信息。

让我们假设一个非常基本的双人街头赛车游戏,沿着直线轨道,随机间隔有障碍物。赛道的速度是固定的,但是球员的加速度有一点摆动空间,因此可以控制它们与屏幕相比的位置,但不能脱离它。

因此,“汽车”可以作为仅包含2个组件的数据结构存储在编程逻辑中:XY。同样有障碍。

每场比赛都打勾:

  • 道路和障碍物在汽车下移动
  • 玩家可以输入上,下,左或右
  • 在顶部绘制障碍物并从底部移除。

因此,out out可以像这样编程,使用一个循环:

cars = [(0,0),(10,0)]
obstacles = []
games_speed = 10
Game = "on"

WHILE game NOT "over":
   REDRAW ROAD
   FOR car in cars:
      GET INPUT FOR car
      UPDATE car
      DRAW car
   FOR obstacle IN obstacles
      REDRAW obstacles
   FOR car, obstacle IN cars * obstacles
      IF (DETECT_COLLISION car, obstacle)
         GAME = "over"

FUNCTION DETECT_COLLISION (object1, object2)
    // Are the X values within some delta?
    if (ABS(object1[0] - object2[0]) < delta)
       RETURN true
    // Same but for Y values
    if (ABS(object1[1] - object2[1]) < delta)
       RETURN true
    RETURN false

答案 1 :(得分:1)

你能这样做吗?

当然,虽然您必须重复大量代码,但面向对象编程的主要优点(在本例中)是您可以轻松创建任意数量的具有略微不同统计数据的汽车实例,或相同这个问题的统计数据。

没有面向对象编程这样做会简单地相同,但重复次数更多。您可以不断设置汽车对象,而不必重复相同的代码来创建几个具有相同特征的汽车个体实例。

总而言之,你的老师这样做意味着你必须重复(复制粘贴,真的)更多代码,这在现实世界中是不好的做法。但这样做的范围很广。