对于我的10年级计算机科学项目,我和我的合作伙伴正在创建一个带有html和Javascript(带jquery)的汽车游戏。没有面向对象的编程是否可行且可行,我的老师告诉我们,我们不能使用?
答案 0 :(得分:2)
是的,OOP是一种相对较新的编程范例,虽然在某些情况下有利,但它绝不是唯一的编码方式。问题在于在“对象”和“数据结构”之间划线。
程序编程早于面向对象编程,相对简单,依赖于通过数据结构传递信息。
让我们假设一个非常基本的双人街头赛车游戏,沿着直线轨道,随机间隔有障碍物。赛道的速度是固定的,但是球员的加速度有一点摆动空间,因此可以控制它们与屏幕相比的位置,但不能脱离它。
因此,“汽车”可以作为仅包含2个组件的数据结构存储在编程逻辑中:X
,Y
。同样有障碍。
每场比赛都打勾:
因此,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)
你能这样做吗?
当然,虽然您必须重复大量代码,但面向对象编程的主要优点(在本例中)是您可以轻松创建任意数量的具有略微不同统计数据的汽车实例,或相同这个问题的统计数据。
没有面向对象编程这样做会简单地相同,但重复次数更多。您可以不断设置汽车对象,而不必重复相同的代码来创建几个具有相同特征的汽车个体实例。
总而言之,你的老师这样做意味着你必须重复(复制粘贴,真的)更多代码,这在现实世界中是不好的做法。但这样做的范围很广。