对于它的价值,我通常发现尝试从问题领域开始思考,远离其他人已经触及的代码,这很有成效。
我假设它是一个类似大富翁的棋盘游戏。支付在现实生活中会如何发展?实际尝试建模的过程是什么?
我知道你已经说过你有一个银行账户类,但如果这个过程是乔·布洛格斯实际支付现金(从他藏在马桶水箱里的钱),弗雷德,与银行没有任何关系,那么他不会需要一个银行账户。如果 Fred 然后选择在某个时候将其存入银行——而不是一直把它塞在床垫(或游戏板)下——那么到那时他将需要一个银行和一个账户。
假设玩家可以获取/拥有其他玩家的句柄,第一个过程将看到(在 Player 中)类似:
void payPlayer( player, amount )
{
spendCash( amount ); // reduces stash by "amount"
player.recieveCash( amount );
}
现金储备的大小可能只是玩家类别的一个属性。
第二个活动是完全不同的事情。弗雷德现在必须首先告诉他的银行他想存入 100 美元,然后他的银行,无论是通过墙洞还是出纳员,都会(希望)记入他的账户。所以弗雷德现在确实需要一家银行,可能还需要一个账户。但他为什么需要账户? 它在游戏中的用途是什么?它绝对是该计划的必要组成部分,还是只是因为银行是现实生活中资金流向的地方?
还有一种情况是玩家确实想将他或她账户中的银行资金转移到另一个玩家的账户作为付款。在这种情况下,两个玩家都需要银行和账户,但只有银行才能真正转移资金,所以他们只需要了解银行即可。当然,只有在银行在游戏中扮演其他重要角色时,人们才会这样做。
So the answer to how to implement the transfer of money in the game depends entirely on the game mechanics. If you really need a bank account-like class then it's a pretty safe bet you should have a bank. But you have to ask yourself why do you really need bank account objects flying around in the first place? And if a player's bank account is directly associated with them, is it really a bank account any more, or just Joe dipping his hand into the toilet cistern?