Processing math: 100%

Prijavi problem


Obeleži sve kategorije koje odgovaraju problemu

Još detalja - opišite nam problem


Uspešno ste prijavili problem!
Status problema i sve dodatne informacije možete pratiti klikom na link.
Nažalost nismo trenutno u mogućnosti da obradimo vaš zahtev.
Molimo vas da pokušate kasnije.

Кртице

Напиши програм који имплементира игрицу хватања кртица. На пољу постоји 9 кртица, оне насумично излазе из рупе и задржавају се на површини или у рупи насумично одређено време. Када играш кликне мишем на кртицу док је ван рупе, она се сматра ухваћеном (и више се не спушта). Циљ игре је да се ухвате све кртице.

Анимацију можеш реализовати помоћу следећих слика кртице (именоване као krtica1.png, …, krtica10.png).

../_images/krtica1.png ../_images/krtica2.png ../_images/krtica3.png ../_images/krtica4.png ../_images/krtica5.png ../_images/krtica6.png ../_images/krtica7.png ../_images/krtica8.png ../_images/krtica9.png ../_images/krtica10.png
 
1
import random
2
import pygame as pg
3
import pygamebg
4
5
(sirina, visina) = (600, 600)  # otvaramo prozor
6
prozor = pygamebg.open_window(sirina, visina, "Кртице")
7
8
pg.key.set_repeat(10, 10)  # podešavamo dogadjaje tastature
9
10
11
krtice = [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
12
pogodjena = [[False, False, False], [False, False, False], [False, False, False]]
13
14
# učitavamo u listu slike setanje1.png, setanje2.png, ..., setanje5.png
15
slike_krtica = []   # niz u koji dodajemo slike
16
for i in range(1, 11):
17
    naziv_slike = "krtica" + str(i) + ".png"  # gradimo naziv slike od delova
18
    slika = pg.image.load(naziv_slike)
19
    slike_krtica.append(slika)
20
21
def gornji_levi_ugao_slike_krtice(i, j):
22
    x = j * (sirina / 3)
23
    y = (i + 1) * (visina / 3) - slike_krtica[abs(krtice[i][j])].get_height()
24
    return (x, y)
25
26
def broj_vidljivih_nepogodjenih():
27
    broj = 0
28
    for i in range(len(krtice)):
29
        for j in range(len(krtice[i])):
30
            if krtice[i][j] != 0 and not pogodjena[i][j]:
31
                broj += 1
32
    return broj
33
34
def broj_nepogodjenih():
35
    broj = 0
36
    for i in range(len(krtice)):
37
        for j in range(len(krtice[i])):
38
            if not pogodjena[i][j]:
39
                broj += 1
40
    return broj
41
42
def tekst_centar(x, y, tekst, velicina):
43
    font = pg.font.SysFont("Arial", velicina)
44
    tekst = font.render(tekst, True, pg.Color("black"))
45
    (sirina_teksta, visina_teksta) = (tekst.get_width(), tekst.get_height())
46
    (x, y) = (x - sirina_teksta / 2, y - visina_teksta / 2)
47
    prozor.blit(tekst, (x, y))
48
49
def crtaj():
50
    prozor.fill(pg.Color("white"))     # bojimo pozadinu prozora u belo
51
    if broj_nepogodjenih() == 0:
52
        tekst_centar(sirina / 2, visina / 2, "Браво", 100)
53
    else:
54
        for i in range(len(krtice)):
55
            for j in range(len(krtice[i])):
56
                (x, y) = gornji_levi_ugao_slike_krtice(i, j)
57
                prozor.blit(slike_krtica[abs(krtice[i][j])], (x, y))
58
59
def novi_frejm():
60
    if broj_vidljivih_nepogodjenih() == 0:
61
        verovatnoca = 20
62
    else:
63
        verovatnoca = 100
64
    for i in range(len(krtice)):
65
        for j in range(len(krtice[i])):
66
            if krtice[i][j] == 0:
67
                if random.randint(1, verovatnoca) == 1:
68
                    krtice[i][j] = 1
69
            elif krtice[i][j] == 9 and not pogodjena[i][j]:
70
                if random.randint(1, 20) == 1:
71
                    krtice[i][j] = -9
72
            elif krtice[i][j] < 9:
73
                krtice[i][j] += 1
74
            elif krtice[i][j] < 0 and not pogodjena[i][j]:
75
                krtice[i][j] += 1
76
    crtaj()
77
78
79
def obradi_dogadjaj(dogadjaj):
80
    global pogodak
81
    if dogadjaj.type == pg.MOUSEBUTTONDOWN:
82
        for i in range(len(krtice)):
83
            for j in range(len(krtice[i])):
84
                if abs(krtice[i][j]) >= 5:
85
                    (x, y) = gornji_levi_ugao_slike_krtice(i, j)
86
                    (xm, ym) = dogadjaj.pos
87
                    if (x <= xm and xm <= x + slike_krtica[abs(krtice[i][j])].get_width() and
88
                       y <= ym and ym <= y + slike_krtica[0].get_height()):
89
                        pogodjena[i][j] = True
90
    
91
92
pygamebg.frame_loop(10, novi_frejm, obradi_dogadjaj)
93

(krtice)