from tkinter import * from time import sleep, time from random import randint from math import sqrt HEIGHT = 500 WIDTH = 800 window = Tk() window.title("Stoppa bubblorna!") c = Canvas(window, width=WIDTH, height=HEIGHT, bg="darkblue") c.pack() ship_id = c.create_polygon(5, 5, 5, 25, 30, 15, fill="red") ship_id2 = c.create_oval(0, 0, 30, 30, outline="red") SHIP_R = 15 MID_X = WIDTH / 2 MID_Y = HEIGHT / 2 c.move(ship_id, MID_X, MID_Y) c.move(ship_id2, MID_X, MID_Y) SHIP_SPD = 10 def move_ship(event): if event.keysym == "Up": c.move(ship_id, 0, -SHIP_SPD) c.move(ship_id2, 0, -SHIP_SPD) if event.keysym == "Down": c.move(ship_id, 0, SHIP_SPD) c.move(ship_id2, 0, SHIP_SPD) if event.keysym == "Right": c.move(ship_id, SHIP_SPD, 0) c.move(ship_id2, SHIP_SPD, 0) if event.keysym == "Left": c.move(ship_id, -SHIP_SPD, 0) c.move(ship_id2, -SHIP_SPD, 0) c.bind_all("<Key>", move_ship) bub_id = list() bub_r = list() bub_speed = list() MIN_BUB_R = 10 MAX_BUB_R = 30 MAX_BUB_SPD = 5 GAP = 100 def create_bubble(): x = WIDTH + GAP y = randint(0, HEIGHT) r = randint(MIN_BUB_R, MAX_BUB_R) id1 = c.create_oval(x - r, y - r, x + r, y + r, outline="white") bub_id.append(id1) bub_r.append(r) bub_speed.append(randint(1, MAX_BUB_SPD)) def move_bubbles(): for i in range(len(bub_id)): c.move(bub_id[i], -bub_speed[i], 0) def get_coords(id_num): pos = c.coords(id_num) x = (pos[0] + pos[2])/2 y = (pos[1] + pos[3])/2 return x, y def del_bubble(i): del bub_r[i] del bub_speed[i] c.delete(bub_id[i]) del bub_id[i] def clean_up_bubs(): for i in range(len(bub_id)-1, -1, -1): x, y = get_coords(bub_id[i]) if x < -GAP: del_bubble(i) def distance(id1, id2): x1, y1 = get_coords(id1) x2, y2 = get_coords(id2) return sqrt((x2 - x1)**2 + (y2 - y1)**2) def collision(): points = 0 for bub in range(len(bub_id)-1, -1, -1): if distance(ship_id2, bub_id[bub]) < (SHIP_R + bub_r[bub]): points += (bub_r[bub] + bub_speed[bub]) del_bubble(bub) return points score = 0 BUB_CHANCE = 10 #GLOBAL LOOP while True: if randint(1, BUB_CHANCE) == 1: create_bubble() move_bubbles() clean_up_bubs() score += collision() print(score) window.update() sleep(0.01)
Larz60+ write Nov-26-2020, 10:37 PM:
Please post all code, output and errors (it it's entirety) between their respective tags. Refer to BBCode help topic on how to post. Use the "Preview Post" button to make sure the code is presented as you expect before hitting the "Post Reply/Thread" button.
I fixed for you this time. Please use bbcode tags on all future posts.
Please post all code, output and errors (it it's entirety) between their respective tags. Refer to BBCode help topic on how to post. Use the "Preview Post" button to make sure the code is presented as you expect before hitting the "Post Reply/Thread" button.
I fixed for you this time. Please use bbcode tags on all future posts.