Pygame使一个圆圈与另一个圆圈一致

时间:2018-02-13 17:59:52

标签: python python-3.x pygame drawing space-partitioning

我正在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)

是否有更有效(工作)的方法来解决这个问题?

请注意:

  • 玩家必须在没有障碍的情况下移动
  • 当被阻挡时,必须计算继续他的路径的可能性
  • 防守必须在不落后的上方(必须停止他们的x)的进攻球员面前移动

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

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

Red is team 2 as explained above: code should make sense with this

0 个答案:

没有答案