2

我正在pygame中设计一个篮球模拟器。

我需要它发挥作用,以便如果一支球队的一名球员前面的空间是空的,他会向篮筐移动,如果不是,他会尝试以预定的机会成功越过防线越过所述障碍物。

我第一次遇到一个问题是因为我使用进攻球员 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)

有没有更有效(有效)的方法来解决这个问题?

请注意:

  • 玩家必须在不受阻碍时移动
  • 当被阻挡时,必须计算他的路径继续前进的概率
  • 防守必须移动到进攻球员的前面而不是后面或上方(必须停止他们的x)

这是运行显示的代码完整代码的图片(myGame1.team2players[i] 是第 2 队的每个球员;第 2 队始终是球场右侧的球队(红色的“CAVS”):

这是游戏的截图。红色是上面的第 2 队。代码应该对此有意义。

如上所述,红色是团队 2:代码应该对此有意义

4

0 回答 0