Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python3
- # Requires Python 3.6+
- import tkinter as tk
- from random import randint
- w, h = 800, 600
- s = 80 # size of disk
- root = tk.Tk()
- canvas = tk.Canvas(root, width=w, height=h, bg="black")
- canvas.pack()
- player = canvas.create_oval(0, 0, s, s, fill='white')
- canvas.move(player, w // 2 -15, h // 2 -15)
- arrows = {"Up":(0,-5), "Down":(0,5), "Left":(-5,0), "Right":(5,0)}
- for key in arrows:
- moves = lambda _, key=key: canvas.move(player, *arrows[key])
- canvas.bind_all(f'<KeyPress-{key}>', moves)
- def collisions():
- px, py = canvas.bbox(player)[0:2]
- if not 0 <= px + 1 <= w - s or not 0 <= py + 1 <= h - s:
- canvas.itemconfig(player, fill='red')
- return False
- for enemy in enemies:
- canvas.move(enemy, randint(-1, 1), randint(-1, 1))
- ex, ey = canvas.bbox(enemy)[0:2]
- dist = ((px - ex) ** 2 + (py - ey) ** 2) ** 0.5
- if dist < s:
- canvas.itemconfig(enemy, fill='red')
- return False
- return True
- def spawn():
- if randint(0, 5) == 0:
- px, py = canvas.bbox(player)[0:2]
- enemy = canvas.create_oval(-s, -s, 0, 0, fill="green")
- ex, ey = randint(0, w - s), randint(0, h - s)
- dist = ((px - ex) ** 2 + (py - ey) ** 2) ** 0.5
- if dist > s * 1.1:
- canvas.move(enemy, ex + 1 + s, ey + 1 + s)
- enemies.append(enemy)
- else:
- del enemy
- if collisions():
- root.after(50, spawn)
- enemies = []
- spawn()
- root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment