gpt4 book ai didi

Python:随机数

转载 作者:太空宇宙 更新时间:2023-11-04 05:46:49 26 4
gpt4 key购买 nike

我正在制作一款有 6 名防守球员的足球比赛。我将这段代码设置为随机让他们都向四分卫移动。

我想知道是否有更好的方法来做到这一点。我知道必须有一种方法可以在没有这么多 if 语句的情况下循环它,但我对 python 很陌生。

我只包括与玩家移动相关的部分,只是为了让代码更易于阅读。

import pygame
import random

x = 215
y = 223
step = 50
frame_count = 0
side = True
hike = True

p1d1x = 265
p1d1y = 174
p1d2x = 265
p1d2y = 224
p1d3x = 265
p1d3y = 274
p1d4x = 465
p1d4y = 174
p1d5x = 365
p1d5y = 224
p1d6x = 565
p1d6y = 274

p2d1x = 415
p2d1y = 174
p2d2x = 415
p2d2y = 224
p2d3x = 415
p2d3y = 274
p2d4x = 215
p2d4y = 174
p2d5x = 315
p2d5y = 224
p2d6x = 115
p2d6y = 274

(I draw all my players using the x and y variables above)

(I use my frame_count which is built into my counter or game timer to move players at an appropriate speed. The rest is all in my main loop)

frame_count += 1

defense = random.randrange(0,6,1)
if side == True and frame_count == 45:
if defense == 0:
if p1d1x > x:
p1d1x -= step
if p1d1y > y:
p1d1y -= step
if p1d1x < x:
p1d1x += step
if p1d1y < y:
p1d1y += step
elif defense == 1:
if p1d2x > x:
p1d2x -= step
if p1d2y > y:
p1d2y -= step
if p1d2x < x:
p1d2x += step
if p1d2y < y:
p1d2y += step
elif defense == 2:
if p1d3x > x:
p1d3x -= step
if p1d3y > y:
p1d3y -= step
if p1d3x < x:
p1d3x += step
if p1d3y < y:
p1d3y += step
elif defense == 3:
if p1d4x > x:
p1d4x -= step
if p1d4y > y:
p1d4y -= step
if p1d4x < x:
p1d4x += step
if p1d4y < y:
p1d4y += step
elif defense == 4:
if p1d5x > x:
p1d5x -= step
if p1d5y > y:
p1d5y -= step
if p1d5x < x:
p1d5x += step
if p1d5y < y:
p1d5y += step
elif defense == 5:
if p1d6x > x:
p1d6x -= step
if p1d6y > y:
p1d6y -= step
if p1d6x < x:
p1d6x += step
if p1d6y < y:
p1d6y += step
elif side == False and frame_count == 45:
if defense == 0:
if p2d1x > x:
p2d1x -= step
if p2d1y > y:
p2d1y -= step
if p2d1x < x:
p2d1x += step
if p2d1y < y:
p2d1y += step
elif defense == 1:
if p2d2x > x:
p2d2x -= step
if p2d2y > y:
p2d2y -= step
if p2d2x < x:
p2d2x += step
if p2d2y < y:
p2d2y += step
elif defense == 2:
if p2d3x > x:
p2d3x -= step
if p2d3y > y:
p2d3y -= step
if p2d3x < x:
p2d3x += step
if p2d3y < y:
p2d3y += step
elif defense == 3:
if p2d4x > x:
p2d4x -= step
if p2d4y > y:
p2d4y -= step
if p2d4x < x:
p2d4x += step
if p2d4y < y:
p2d4y += step
elif defense == 4:
if p2d5x > x:
p2d5x -= step
if p2d5y > y:
p2d5y -= step
if p2d5x < x:
p2d5x += step
if p2d5y < y:
p2d5y += step
elif defense == 5:
if p2d6x > x:
p2d6x -= step
if p2d6y > y:
p2d6y -= step
if p2d6x < x:
p2d6x += step
if p2d6y < y:
p2d6y += step

当我将四分卫设置为球员移动的箭头键时,这基本上就是移动我的计算机球员的一切。

最佳答案

使用元组列表而不是每个坐标的变量。这将大大缩短代码的长度。

编辑 1
为了让它更短,我使用了 ternary expressions .

编辑 2
只需使用一个函数将其收紧一点。我不认为它可以变得更短,但我会看看我能做些什么;)

import pygame
from random import randrange

x = 215
y = 223
step = 50
frame_count = 0
side = True
hike = True

p1 = [(265, 274), (265, 224), (265, 274), (465, 174), (365, 224), (565, 274)]
p2 = [(415, 174), (415, 224), (415, 274), (215, 174), (315, 224), (115, 274)]

frame_count += 1

def move(p):
defense = randrange(len(p))
if frame_count == 45:
if p[defense][0] != x:
p[defense][0] += step if p[defense][0] < x else -step
if p[defense][1] != y:
p[defense][1] += step if p[defense][1] < y else -step

move(p1 if side else p2)

关于Python:随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31910853/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com