我正在pygame中设计一个篮球模拟器。
我需要它才能发挥作用,以便如果一支球队前方球员的空位清晰,他将向篮筐移动,如果不是,他将试图以预先成功越过防守的机会越过障碍物。< / p>
我第一次遇到一个问题,因为我正在使用进攻球员x坐标,只需将防守移至(x + 30),就像这样:
for i in range(numPlayers):
if possesion == ("team1"):
myGame1.team2players[i].x = (myGame1.team1players[i].x + 30)
myGame1.team2players[i].y = myGame1.team1players[i].y
然而,这引发了一个问题,因为尽管它有效,但是在游戏循环的每个周期都有一个短暂的时刻,防守被移动(x改变)并且进攻会看到这是“大开”:
for i in range(numPlayers):
if theBall.holder == myGame1.team2players[i] and myGame1.team1players[i].x != range(0,int(theBall.holder.x)):
print("Wide")
else:
print("Nope")
现在我已经改变了我的代码让玩家只在没有阻碍的情况下移动,这确实有效但是一旦他遇到防守他就不会继续移动(即使我设置他们将他们交叉到100%的机会)... 。
for i in range(numPlayers):
if (theBall.holder == myGame1.team2players[i] and myGame1.team1players[i].x <= theBall.holder.x) or (theBall.holder == myGame1.team1players[i] and myGame1.team2players[i].x > theBall.holder.x):
onballmove = Player.move(theBall.holder)
else:
cross = random.choices((True, False), [1,0])
if cross == (True):
onballmove = Player.move(theBall.holder)
是否有更有效(工作)的方法来解决这个问题?
请注意:
以下是运行显示的代码完整代码的图片(myGame1.team2players [i]是团队2中的每个玩家;团队2始终是球场右侧的团队(红色“CAVS”) :
这是游戏的截图。红色是上面的第2队。代码应该有意义。