这个问题想要的不是具体的代码实现,而是思路。
首先我的需求是,小游戏里需要建立各种足球队。球队里有球员,还有阵型,替补席什么的。
球员分4种:①上场的球员(10个)②上场门将(1个)③替补球员(最多21个)④替补门将(最多6个)
要求:其中阵型是死的,比如说433阵型的中间是10号,那么交换球员位置(不管是和替补换还是和场上的人换)后,10号仍然在原位,只不过新的人变成了10号,原来的10号位跑别处了。然后还可以增加球员或者删除球员。
如果有现成的思路,可以不看我后面的絮叨(最好稍微看下),直接看最后的问题。
我目前是这样做的:
class character用它来建立角色
然后
class Team
self.队伍名 = 队伍名字
读含有球队信息的csv文件,根据队伍名字获得球员名单:info列表,里面含有所有人员名字(只要有名字,就能通过character创建角色)
其中,上场人员是固定的11个,但是替补数量不定,有的队伍可能一个没有,有的可能有好多。但不管多少,我会确保len(info)=10+1+21+6=38,如果不够就补None,因为如果名字是None,后面就会创建个队员None
self.门将 = character(A)
self.1号 = character(B)
self.2号 = character(B)
以此类推
self.替补 = character(C)
这里一共有38行代码,38个位置。这也是我前面要补None的原因,否则会报错
问题1:我尝试过用exec("self.x号 = character(A) ")来批量创建变量名,给球队添加角色,但是出现了些问题,我觉得难以解决,最终没采用,还是一行行敲出来的。这个是否能用问题二里我的方法解决?感觉可以,但不知道有没有更好方法来实现?
问题二:有时候Team需要换人,这个我最后用改变Team的_dic_强行解决了,虽然这样有点粗暴。这里有没有优化的方法?
问题三:更大的问题来了,如果有剧情的话,比如要增加一个球员Z,用它把球员B换掉。正常来说,我的流程是:把Z加到替补里→用问题二里换人的方法,把Z和B换位置。但是我换人是用self.x号和self.y号交换的(也就是几号和几号换),而刚才的流程需要以名字为准(也就是先找到self.x号.name = Z, self.y号 = B,然后才能x和y交换),如果玩家过程中改变了站位,就不能以x号找人了
有没有解决方法或者思路呢?