import random
WIDTH = 800
HEIGHT = 500
background = Actor("background")
player = Actor("player")
enemy = Actor("enemy")
money = Actor("money", pos=(300,300))
player2 = Actor("alien")
score = 0
score2 = 0
player.x = 200
player.y = 200
player2.x= 400
player2.y= 400
def draw():
screen.clear()
background.draw()
player.draw()
enemy.draw()
money.draw()
player2.draw()
def update():
global score
if keyboard.right:
player.x = player.x + 4
if keyboard.left:
player.x = player.x - 4
if keyboard.down:
player.y = player.y + 4
if keyboard.up:
player.y = player.y - 4
if player.x > WIDTH:
player.x = WIDTH
if player.x < 0:
player.x = 0
if player.y < 0:
player.y = 0
if player.y > HEIGHT:
player.y = HEIGHT
if keyboard.d:
player2.x = player2.x + 4
if keyboard.a:
player2.x = player2.x - 4
if keyboard.s:
player2.y = player2.y + 4
if keyboard.w:
player2.y = player2.y - 4
if player.colliderect(player2):
exit()
if player2.x > WIDTH:
player2.x = WIDTH
if player2.x < 0:
player2.x = 0
if player2.y < 0:
player2.y = 0
if player2.y > HEIGHT:
player2.y = HEIGHT
dx1, dy1 = player.x - enemy.x, player.y - enemy.y
dx2, dy2 = player2.x - enemy.x, player2.y - enemy.y
dist1sq = dx1*dx1 + dy1*dy1
dist2sq = dx2*dx2 + dy2*dy2
player_near = player if dist1sq < dist2sq else player2
if enemy.x < player_near.x:
enemy.x += 1
if enemy.x > player_near.x:
enemy.x -= 1
if enemy.y < player_near.y:
enemy.y += 1
if enemy.y > player_near.y:
enemy.y -= 1
if player.colliderect(enemy):
exit()
if player2.colliderect(enemy):
exit()
if money.colliderect(player):
money.x = random.randint(0, WIDTH)
money.y = random.randint(0, HEIGHT)
score = score + 1
if money.colliderect(player2):
money.x = random.randint(0, WIDTH)
money.y = random.randint(0, HEIGHT)
score2 += 1
if keyboard.d:
player2.x = player2.x + 4
if keyboard.a:
player2.x = player2.x - 4
if keyboard.s:
player2.y = player2.y + 4
if keyboard.w:
player2.y = player2.y - 4
if player.colliderect(player2):
exit()
if player2.x > WIDTH:
player2.x = WIDTH
if player2.x < 0:
player2.x = 0
if player2.y < 0:
player2.y = 0
if player2.y > HEIGHT:
player2.y = HEIGHT
This is a python game made in mu editor. Whenever player2 collides with money, player2 is supposed to collect it and gain score. Whenever player2 is colliding with money, it crashes the game and it gives me an error saying this Error Message: UnboundLocalError: local variable 'score2' referenced before assignment.
You missed to declare gloabl score2
:
def update():
global score, score2 # <----
# [...]
if money.colliderect(player2):
money.x = random.randint(0, WIDTH)
money.y = random.randint(0, HEIGHT)
score2 += 1
Note, if you don't declare score2
as a global
variable, then scope2
is assumed to be a variable in scope of update
, because the variable is set in score2 += 1
. But, the statement score2 += 1
causes an exception, because it tries to read the variabel before it is defined.