Mein programmiertes Spiel funktioniert nicht
Verfasst: Donnerstag 20. Januar 2022, 14:47
Liebe Programmierer/in ich habe ein spiel in Pygame auf repl.it programiert doch die Ganze zeit kommen Errors aus den Bibiliotheken die verwendet werden. Also wollte ich fragen ob jemand m8ir bitte eine Lösung sagen könnte womit man das spiel zum laufen bringen könnte.
Code: Alles auswählen
import pgzrun
import math
WIDTH = 800
HEIGHT = 600
CENTRE_X = WIDTH / 2
CENTRE_Y = HEIGHT / 2
CENTRE = (CENTRE_X, CENTRE_Y)
FONT_COLOUR = (0, 0, 0)
EGG_TARGET = 20
HERO_START = (200, 300)
ATTACK_DISTANCE = 200
DRAGON_WAKE_TIME = 2
EGG_HIDE_TIME = 2
MOVE_DISTANCE = 5
lives = 3
eggs_colleted = 0
game_over = False
game_complete = False
reset_required = False
easy_lair = {
"dragon": Actor("dragon-asleep", pos=(600, 100)),
"eggs": Actor("one-egg", pos=(450, 100)),
"egg_count": 1,
"egg_hidden": False,
"egg_hide_counter": 0,
"sleep_length": 10,
"sleep_counter": 0,
"wake_counter": 0,
}
medium_lair = {
"dragon": Actor("dragon-asleep", pos=(600, 300)),
"eggs": Actor("two-egg", pos=(450, 300)),
"egg_count": 2,
"egg_hidden": False,
"egg_hide_counter": 0,
"sleep_length": 7,
"sleep_counter": 0,
"wake_counter": 0,
}
hard_lair = {
"dragon": Actor("dragon-asleep", pos=(600, 500)),
"eggs": Actor("three-egg", pos=(450, 500)),
"egg_count": 3,
"egg_hidden": False,
"egg_hide_counter": 0,
"sleep_length": 4,
"sleep_counter": 0,
"wake_counter": 0,
}
lairs = [easy_lair, medium_lair, hard_lair]
hero = Actor("hero", pos=HERO_START)
def draw():
global lairs, eggs_collected, lives, game_complete
screen.clear()
screen.blit("dungeon", (0, 0))
if game_over:
screen.draw.text("Game Over!", fontsize=60, center=CENTRE, color=FONT_COLOUR)
elif game_complete:
screen.draw.text("You Win!", fontsize=60, center=CENTRE, color=FONT_COLOUR)
else:
hero.draw()
draw_lairs(lairs)
draw_counters(eggs_collected, lives)
def draw_lairs(lairs_to_draw):
for lair in lairs_to_draw:
lair["dragon"].draw()
if lair["egg_hidden"] is False:
lair["eggs"].draw()
def draw_counters(eggs_collected, lives):
screen.blit("egg_count", (0, Height - 30))
screen.draw.text(str(eggs_colleted),
fontsize=40,
pos=(30, Height - 30),
color=FONT_COLOUR)
screen.draw.blit("life-count", (60, Height - 30))
screen.draw.text(str(lives),
fontsize=40,
pos=(90, Height - 30),
color=FONT_COLOUR)
screen.draw.text(str(lives),
fontsize=40,
pos=(90, Height - 30),
color=FONT_COLOUR)
def update():
if keyboard.right:
hero.x += MOVE_DISTANCE
if hero.x > WIDTH:
hero.x = WIDTH
elif keyboard.left:
hero.x -= MOVE_DISTANCE
if hero.x < 0:
hero.x = 0
elif keyboard.down:
hero.y += MOVE_DISTANCE
if hero.y > HEIGHT:
hero.y = HEIGHT
elif keyboard.up:
hero.y -= MOVE_DISTANCE
if hero.y < 0:
hero.y = 0
check_for_collisions()
def update_lairs():
global lairs, hero, lives
for lair in lairs:
if lair["dragon"].image == "dragon-asleep":
update_sleeping_dragon(lair)
elif lair["dragon"].image == "dragon-awake":
update_awake_dragon(lair)
update_egg(lair)
clock.schedule_interval(update_lairs, 1)
def update_sleeping_dragon(lair):
if lair["sleep_counter"] >= lair["sleep_lenght"]:
lair["dragon"].image = "dragon-awake"
lair["sleep_counter"] = 1
else:
lair["sleep_counter"] += 1
def update_egg(lair):
if lair["egg_hidden"] is True:
if lair["egg_hidden_counter"] >= EGG_HIDE_TIME:
lair["egg_hidden"] = False
lair["egg_hide_counter"] = 0
else:
lair["egg_hide_counter"] += 1
def check_for_collisions():
global lairs, eggs_collected, lives, reset_required, game_complete
for lair in lairs:
if lair["egg_hidden"] is False:
check_for_egg_collision(lair)
if lair["dragon"].image == "dragon_awake" and reset_requierd is False:
check_for_dragon_collision(lair)
def check_for_dragon_collision(lair):
x_distance = hero.x - lair["dragon"].x
y_distance = hero.y - lair["drragon"].y
distance = math.hypot(x_distance, y_distance)
if distance < ATACK_DISTANCE:
handle_dragon_collision()
def handle_dragon_collision():
global reset_required
reset_requierd = True
animate(hero, pos=HERO_START, on_finnished=subtract_life)
def check_for_egg_collision(lair):
global eggs_collected, game_complete
if hero.colliderect(lair["eggs"]):
lair["eggs_hidden"] = True
eggs_collected += lair["egg_count"]
if eggs_collected >= EGG_TARGET:
game_complete = true
def subtract_life():
global lives, reset_required, game_over
lives -= 1
if lives == 0:
game_over = True
reset_required = False
pgzrun.go()
math.go()]
import pgzrun
import math