我是一名新手程序员,在用JavaScript编写游戏时遇到了OOP问题:
这是一个Bughouse国际象棋游戏。它由2个棋盘上的4名玩家组成: 每个棋盘都是对方球队成员之间的独立国际象棋比赛,一个棋盘中的白人球员与另一个棋盘上的黑人球员在一个球队中。当有人抓住一块时,它会传递给他的队友,然后他可以把它放在他的棋盘上的任何地方,而不是正常的国际象棋棋盘游戏。 Bughouse Chess - Wikipedia
我有一个BughouseMatch对象,其中包含BughouseGame类型的2个属性 - 这些是同时播放的2个游戏。
BughouseGame对象继承自Game,这是一款定期独立的国际象棋游戏。 BughouseGame包含属性“link”,它被设置为对其他BughouseGame的引用。它允许在游戏之间传递棋子并传达在其中一场比赛中取得的胜利。
它还包含属性玩家,这是对阵球队的2名球员(类型为球员)的阵列,其中一名是白人,另一名是黑人。 我遇到的问题是我不知道保持比赛得分的正确方法是什么 - 在哪里放置一个能保持每支球队获胜次数的属性?
分数将保留在BughouseMatch中似乎很自然,但我不能从BughouseGame访问它,因为它是BughouseMatch的财产。 我最终要做的是创建一个Score对象,该对象来自每个团队中的2个队友(一个棋盘中的Black玩家和另一个棋盘中的White),其中有一个属性可以保持团队的胜利数量。 我从来没有做过这样的事情 - 其中2个对象指向另一个对象的同一个实例,这感觉就像是一个错误。 使用我制作的图表更容易理解它: Image of the relations between objects
我很想听听你对我在每个BughouseGame中制作“链接”属性的想法的看法,并在队友的玩家中制作共享的“得分”对象。另外,如果您已经了解如何在C#中解决这个问题,这是一种合适的OOP语言,我也很乐意听到这个问题。 提前致谢!
答案 0 :(得分:-3)
关注你的问题标题'如何访问JS中的父对象?'有几个选择。你可以使用jQuery:
$(this).closest('selector');
或普通JS(您可以使用任何文档方法):
parent.getElementById('Id');
如果你必须使用JS并且需要遍历层次结构,你可以做这样的事情,虽然我不推荐它:
parent.parent.parent.Method();