Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Tk_Bubble_Blaster.py
- # set for 10'000 points
- from tkinter import *
- from random import randint
- from time import sleep, time
- from math import sqrt
- HEIGHT = 500
- WIDTH = 800
- SHIP_R = 20
- MID_X = WIDTH/2
- MID_Y = HEIGHT/2
- SHIP_SPD = 10
- bub_id = list()
- bub_r = list()
- bub_speed = list()
- MIN_BUB_R = 5
- MAX_BUB_R = 30
- MAX_BUB_SPD = 10
- GAP = 100
- score = 0
- TIME_LIMIT = time()+60
- def move_ship(event):
- if go:
- if event.keysym == 'Up':
- c.move(ship_id, 0, -SHIP_SPD)
- c.move(ship_id2, 0, -SHIP_SPD)
- elif event.keysym == 'Down':
- c.move(ship_id, 0, SHIP_SPD)
- c.move(ship_id2, 0, SHIP_SPD)
- elif event.keysym == 'Left':
- c.move(ship_id, -SHIP_SPD, 0)
- c.move(ship_id2, -SHIP_SPD, 0)
- elif event.keysym == 'Right':
- c.move(ship_id, SHIP_SPD, 0)
- c.move(ship_id2, SHIP_SPD, 0)
- 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 = points+int((250-bub_r[bub]*5+bub_speed[bub])/3)
- del_bubble(bub)
- return points
- def show_score(score):
- c.itemconfig(score_text, text=str(score))
- def show_time(time_left):
- c.itemconfig(time_text, text=str(time_left))
- window = Tk()
- window.title('Bubble Blaster')
- c = Canvas(window, width=WIDTH, height=HEIGHT, bg='darkblue')
- c.pack()
- ship_id = c.create_polygon(5, 5, 5, 25, 30, 15, fill='lime')
- ship_id2 = c.create_oval(0, 0, 30, 30, outline='lime')
- c.bind_all('<Key>', move_ship)
- c.move(ship_id, MID_X, MID_Y)
- c.move(ship_id2, MID_X, MID_Y)
- c.create_text(50, 30, text='TIME', fill='white', font=('Verdana' ,12))
- c.create_text(150, 30, text='SCORE', fill='white', font=('Verdana' ,12))
- time_text = c.create_text(50, 50, fill='white', font=('Verdana' ,12))
- score_text = c.create_text(150, 50, fill='white', font=('Verdana' ,12))
- #MAIN GAME LOOP
- go = 1
- while time() < TIME_LIMIT:
- if len(bub_id) < 100:
- create_bubble()
- move_bubbles()
- clean_up_bubs()
- score += collision()
- show_score(score)
- show_time(int(TIME_LIMIT-time()))
- window.update()
- sleep(0.01)
- go = 0
- c.create_text(MID_X, MID_Y, \
- text='GAME OVER', fill='white', font=('Arial' ,60))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement