Предмет: Информатика, автор: oolegovich08

Создать оконное приложение на языке python. Срочно, даю 40 баллов!!!!!!

Ответы

Автор ответа: robert2702
0

Ответ:

Смотри

Объяснение:

from tkinter import *

HEIGHT = 500

WIDTH = 800

window = Tk() # make window

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="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 # Apakšelements pārvietosies tik tālu, kad tiek nospiests taustiņš

def move_ship(event):

   if event.keysym == "Up":

       c.move(ship_id, 0, -SHIP_SPD)

       c.move(ship_id2, 0, -SHIP_SPD) # Nospiežot augšupvērstās bultiņas taustiņu, pārvieto abas apakšdaļas daļas uz augšu

   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) # Iestata burbuļa pozīciju uz audekla

   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 # Izstrādā burbuļa vidusdaļas x koordinātu

   y = (pos[1] + pos[3])/2 # Izstrādā burbuļa vidusdaļas y koordinātu

   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]) # Noskaidro, kur atrodas burbulis

       if x < -GAP:

           del_bubble(i) # Ja burbulis ir ārpus ekrāna, tas tiek izdzēsts - pretējā gadījumā tas palēninās spēli

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): # Šī cikls iet cauri visam burbuļu sarakstam (tas iet atpakaļ, lai izvairītos no kļūdām dzēšot burbuļus)

       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" ) # Iestata punktu skaitu un atlikušo laiku

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

#main game loop

while time() < end:

   if randint(1, BUB_CHANCE) == 1: # Ģenerē nejaušu skaitli no 1 līdz 10

       create_bubble()

   move_bubbles()

   clean_up_bubs()

   score += collision()

   if (int(score / BONUS_SCORE)) > bonus: # Aprēķina, kad piešķirt bonusa laiku

       bonus += 1

       end += TIME_LIMIT

   show_score(score)

   show_time(int(end - time()))

   print(score)

   window.update()

   sleep(0.01)

c.create_text(MID_X, MID_Y, \

   text="GAME OVER", fill="white", 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")

Похожие вопросы
Предмет: Другие предметы, автор: anastasikw01