gpt4 book ai didi

python - 如何在 random.randrange 中使用负数

转载 作者:行者123 更新时间:2023-11-30 22:42:43 25 4
gpt4 key购买 nike

我正在尝试制作一个游戏,在这个游戏中我想在 0 到 -100 之间的随机 Y 位置上制作 100 个对象。

但是当我尝试random.randrange(0, -100)时,它返回一条错误消息:

Traceback (most recent call last):
File "main.py", line 144, in <module>
main();
File "main.py", line 30, in main
setGlobalValues();
File "main.py", line 23, in setGlobalValues
food = Food();
File "main.py", line 92, in __init__
self.y = random.randrange(0, -100);
File "C:\Users\sidna\AppData\Local\Programs\Python\Python36-32\lib\random.py", line 198, in randrange
raise ValueError("empty range for randrange() (%d,%d, %d)" % (istart, istop, width))
ValueError: empty range for randrange() (0,-100, -100)

完整代码如下:

Python

# IMPORTS
import pygame, random;

# GLOBALS
global screen, displayW, displayH;
global clock, FPS;
global end, food, player;

# SETGLOBALVALUES
def setGlobalValues():
global screen, displayW, displayH;
global clock, FPS;
global end, food, player;

displayW = 800;
displayH = 600;
screen = pygame.display.set_mode((displayW, displayH));

clock = pygame.time.Clock();
FPS = 60;

end = False;
food = Food();
player = Player();

# MAIN
def main():
pygame.init();

setGlobalValues();
setup();
gameLoop();
quitGame();

# GAMELOOP
def gameLoop():
global end, player;

while(not end):
for event in pygame.event.get():
# ONCLICK QUIT
if(event.type == pygame.QUIT):
end = True;

# KEYDOWN
if(event.type == pygame.KEYDOWN):
if(event.key == pygame.K_LEFT):
player.velX -= 1;
if(event.key == pygame.K_RIGHT):
player.velX += 1;

# KEYUP
if(event.type == pygame.KEYUP):
if(event.key == pygame.K_LEFT):
player.velX = 0;
if(event.key == pygame.K_RIGHT):
player.velX = 0;

draw();
animate();


# DRAW
def draw():
global screen, food, player;

# fill background
screen.fill((255, 255, 255));

food.draw();

# update
pygame.display.update();

# ANIMATE
def animate():
global food, player;

food.animate();
player.animate();

# COLLISION
def collision():
pass;

# CLASSES
class Food():
def __init__(self, x=0, y=0, w=0, h=0, velY=0, color=()):
global displayW;

self.x = random.randrange(0, displayW);
self.y = random.randrange(0, -100);
self.w = 20;
self.h = 20;
self.velY = 0.7;
self.color = (255, 0, 0);

def draw(self):
global screen;

for amount in range(100):
pygame.draw.rect(screen, self.color, (self.x, self.y, self.w, self.h));

def animate(self):
self.y += self.velY;

def collision(self):
global displayW, displayH;

pass;

class Player():
def __init__(self, x=0, y=0, velX=0, velY=0, w=0, h=0, color=()):
global displayW, displayH;

self.w = 20;
self.h = 20;
self.x = displayW / 2 - self.w / 2;
self.y = displayH - 100;
self.velX = 0;
self.velY = 0;
self.color = (0, 0, 0);

def draw(self):
global screen;

pygame.draw.ellipse(screen, self.color, (self.x, self.y, self.w, self.h));

def animate(self):
self.x += self.velX;
self.y += self.velY;

# SETUP
def setup():
pygame.display.set_caption("Food Catcher");

# QUIT GAME
def quitGame():
pygame.quit();
quit();

# CALL MAIN
if(__name__ == "__main__"):
main();

最佳答案

smaller number should be the first argument (如果您使用多个参数):

import random
random.randrange(-100, 1)

不包含第二个参数,因此如果您希望 0 作为可能的结果,则需要将其设置为 1

<小时/>

但是,如果您实际上没有使用 step 参数,那么还有 random.randint :

random.randint(-100, 0)  # randint includes the "stop"!

关于python - 如何在 random.randrange 中使用负数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42035598/

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