Bubble Blaster: verschil tussen versies
Naar navigatie springen
Naar zoeken springen
(Bubble blaster zelf programmeren) |
(Ik heb niet kloppende dingen weggehaald) Labels: Visuele tekstverwerker Vervangen |
||
Regel 1: | Regel 1: | ||
− | Bubble Blaster is een spel dat je makkelijk zelf kan programmeren in python (Gratis download voor Mac, Windows en Android op python.org), het doel is om zoveel mogelijk bellen kapot te prikken |
+ | Bubble Blaster is een spel dat je makkelijk zelf kan programmeren in python (Gratis download voor Mac, Windows en Android op python.org), het doel is om zoveel mogelijk bellen kapot te prikken. |
− | |||
− | from tkinter import * |
||
− | HEIGHT = 1080 |
||
− | WIDTH = 1920 |
||
− | window = Tk() |
||
− | window.title('Star Blaster') |
||
− | 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) |
||
− | 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) |
||
− | c.bind_all('<Key>', move_ship) |
||
− | from random import randint |
||
− | bub_id = list() |
||
− | bub_r = list() |
||
− | bub_speed = list() |
||
− | MIN_BUB_R = 10 |
||
− | MAX_BUB_R = 30 |
||
− | MAX_BUB_SPD = 10 |
||
− | GAP = 100 |
||
− | def create_bubble(): |
||
− | x = WIDTH + GAP |
||
− | y = randint(0, HEIGHT) |
||
− | r = randint(MIN_BUB_R, MAX_BUB_R) |
||
− | window.geometry |
||
− | bub_id.append(idl) |
||
− | 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) |
||
− | from math import sqrt |
||
− | 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 |
||
− | c.create_text(50, 30, text='TIME', fill='white' ) |
||
− | c.create_text(150, 30, text='SCORE', fill='white' ) |
||
− | time_text = c.create_text(50, 50, fill='white' ) |
||
− | score_text = c.create_text(150, 50, fill='white' ) |
||
− | def show_score(score): |
||
− | c.itemconfig(score_text, text=str(score)) |
||
− | def show_time(time_left): |
||
− | c.itemconfig(time_text, text=str(time_left)) |
||
− | from time import sleep, time |
||
− | BUB_CHANCE = 10 |
||
− | TIME_LIMIT = 30 |
||
− | BONUS_SCORE = 1000 |
||
− | score = 0 |
||
− | bonus = 0 |
||
− | end = time() + TIME_LIMIT |
||
− | from time import sleep, time |
||
− | BUB_CHANCE = 10 |
||
− | score = 0 |
||
− | #MAIN GAME LOOP |
||
− | while time() < end: |
||
− | if randint(1, BUB_CHANCE) == 1: |
||
− | create_bubble() |
||
− | move_bubbles() |
||
− | clean_up_bubs() |
||
− | score += collision() |
||
− | if (int(score / BONUS_SCORE)) > bonus: |
||
− | bonus += 1 |
||
− | end += TIME_LIMIT |
||
− | show_score(score) |
||
− | show_time(int(end - time())) |
||
− | window.update() |
||
− | sleep(0.01) |
||
− | c.create_text(MID_X, MID_Y, \ |
||
− | text='GAME OVER', fill='Yellow', font=('Helvetica',30)) |
||
− | c.create_text(MID_X, MID_Y + 30, \ |
||
− | text='Score: '+ str(score), fill='white') |
||
− | c.create_text(MID_X, MID_Y + 45, \ |
||
− | text='Bonus time: '+str(bonus*TIME_LIMIT), fill='white') |
Versie van 9 mrt 2020 14:49
Bubble Blaster is een spel dat je makkelijk zelf kan programmeren in python (Gratis download voor Mac, Windows en Android op python.org), het doel is om zoveel mogelijk bellen kapot te prikken.