python - Galaga game not running due to an empty range - Stack Overflow

时间: 2025-01-06 admin 业界

I am following a tutorial on how to create a Galaga clone, and after finishing the enemy spawner, I tried to run it and I'm receiving a ValueError saying that:

empty range in randrange(0,-131).

I don't know what's wrong, since I followed the tutorial to the letter and it worked there.

I tried rewatching and checking for typos but nothing

Main code:

import pygame
from ship import Ship
import constants as c
from background import BG
from enemy_spanner import EnemySpanner

#Display setup
display = pygame.display.set_mode(c.DISPLAY_SIZE)
fps = 60
clock = pygame.time.Clock()
black = (0,0,0)

#Object setup
bg = BG()
player = Ship()
bg_group = pygame.sprite.Group()
bg_group.add(bg)
sprite_group = pygame.sprite.Group()
sprite_group.add(player)
enemy_spanner = EnemySpanner()

running =  True
while running:
    clock.tick(fps) #Tick clock
    #Handle events
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            quit()
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_RIGHT:
                player.velocity_x = player.speed
            elif event.key == pygame.K_LEFT:
                player.velocity_x = -player.speed
            if event.key == pygame.K_SPACE:
                player.shoot()
        if event.type == pygame.KEYUP:
            if event.key == pygame.K_RIGHT:
                player.velocity_x = 0
            elif event.key == pygame.K_LEFT:
                player.velocity_x = 0

    #Update all the objects
    sprite_group.update()
    bg_group.update()
    enemy_spanner.update()
    #Render the display
    display.fill(black)
    bg_group.draw(display)
    sprite_group.draw(display)
    player.bullets.draw(display)
    enemy_spanner.enemy_group.draw(display)
    pygame.display.update()

Enemy Spanwer code:

import pygame
from enemy import Enemy
import random

class EnemySpanner:
    def __init__(self):
        self.enemy_group = pygame.sprite.Group()
        self.spawn_timer = random.randrange(30,120)
    def update(self):
        self.enemy_group.update()
        if self.spawn_timer == 0:
            self.spawn_enemy()
            self.spawn_timer = random.randrange(30,120)
        else:
            self.spawn_timer -= 1
    def spawn_enemy(self):
        new_enemy = Enemy()
        self.enemy_group.add(new_enemy)