For practice programming, I made a game in Python with turtle graphics and tkinter. I have a problem: if I press a key, the game loop stops and the enemies don't move. Is there any solution for this problem?
import random
import time
import turtle
from tkinter import *
running = True
#window
wn = Tk()
wn.geometry("900x700")
canvas = Canvas(wn, width=750, height=600)
canvas.pack()
canvas.place(relx=0.5, rely=0.5, anchor=CENTER)
#player
player = turtle.RawTurtle(canvas)
player_speed = 3
#enemies
enemies = []
for enemy in range(5):
enemies.append((turtle.RawTurtle(canvas), 10))
for enemy in enemies:
enemy[0].penup()
enemy[0].speed(0)
enemy[0].setheading(90)
enemy[0].goto(enemy_position_x(), enemy_position_y())#random position
#move the player
def move_left(event):
player.setheading(180)
player.setx(player.xcor() - player_speed)
def move_right(event):
player.setheading(360)
player.setx(player.xcor() + player_speed)
def move_up(event):
player.setheading(90)
player.sety(player.ycor() + player_speed)
def move_down(event):
player.setheading(270)
player.sety(player.ycor() - player_speed)
def shoot(event):
#I don't write the shoot function, because it's long
print("shoot")
wn.bind('<Left>', move_left)
wn.bind('<Right>', move_right)
wn.bind('<Up>', move_up)
wn.bind('<Down>', move_down)
wn.bind('<space>', shoot)
#game loop
while running:
#move the enemy
for this_enemy in enemies:
if this_enemy[0].xcor() < player.xcor():
this_enemy[0].setx(this_enemy[0].xcor() + 3)
time.sleep(0.1)
if this_enemy[0].xcor() > player.xcor():
this_enemy[0].setx(this_enemy[0].xcor() - 3)
time.sleep(0.1)
if this_enemy[0].ycor() < player.ycor():
this_enemy[0].sety(this_enemy[0].ycor() + 3)
time.sleep(0.1)
if this_enemy[0].ycor() > player.ycor():
this_enemy[0].sety(this_enemy[0].ycor() - 3)
time.sleep(0.1)
wn.mainloop()