Папир, камен, маказе¶
Напиши програм који имплементира играње игре папир-камен-маказе против рачунара. Човек свој предмет бира помоћу тастера P, K или M, док рачунар свој предмет увек бира насумично.
Можеш употребити слике paper.png
, rock.png
и
scissors.png
.



1
import random
2
import pygame as pg
3
import pygamebg
4
5
(sirina, visina) = (300, 300) # otvaramo prozor
6
prozor = pygamebg.open_window(sirina, visina,"Папир, камен, маказе")
7
8
9
PAPIR = 0
10
KAMEN = 1
11
MAKAZE = 2
12
13
slike = [pg.image.load("paper.png"),
14
pg.image.load("rock.png"),
15
pg.image.load("scissors.png")]
16
17
covek = 0
18
racunar = 0
19
covek_poeni = 0
20
racunar_poeni = 0
21
22
def pobedio(igracA, igracB):
23
return ((igracA == PAPIR and igracB == KAMEN) or
24
(igracA == KAMEN and igracB == MAKAZE) or
25
(igracA == MAKAZE and igracB == PAPIR))
26
27
def crtaj_igraca(igrac, tekst, cx, cy, pobednik):
28
dim = 150
29
if pobednik:
30
pg.draw.rect(prozor, pg.Color("gray"), (cx - dim/2, cy - dim/2, dim, dim))
31
(x, y) = (cx - slike[igrac].get_width() / 2, cy - slike[igrac].get_height() / 2)
32
pg.draw.rect(prozor, pg.Color("black"), (x-1, y-1, slike[igrac].get_width() + 1, slike[igrac].get_height() + 1), 2)
33
prozor.blit(slike[igrac], (x, y))
34
font = pg.font.SysFont("Arial", 20)
35
tekst = font.render(tekst, True, pg.Color("black"))
36
prozor.blit(tekst, (cx - tekst.get_width() / 2, cy - dim / 2 - tekst.get_height() - 10))
37
38
39
def crtaj():
40
prozor.fill(pg.Color("white"))
41
crtaj_igraca(covek, "Човек: " + str(covek_poeni), sirina / 4, visina / 2, pobedio(covek, racunar))
42
crtaj_igraca(racunar, "Рачунар: " + str(racunar_poeni), 3 * sirina / 4, visina / 2, pobedio(racunar, covek))
43
44
45
def obradi_dogadjaj(dogadjaj):
46
global covek, racunar, covek_poeni, racunar_poeni
47
if dogadjaj.type == pg.KEYDOWN:
48
racunar = random.randint(0, 2)
49
if dogadjaj.key == pg.K_p:
50
covek = PAPIR
51
elif dogadjaj.key == pg.K_k:
52
covek = KAMEN
53
elif dogadjaj.key == pg.K_m:
54
covek = MAKAZE
55
if pobedio(covek, racunar):
56
covek_poeni += 1
57
if pobedio(racunar, covek):
58
racunar_poeni += 1
59
return True
60
return False
61
62
63
pygamebg.event_loop(crtaj, obradi_dogadjaj)
64
(papir_kamen_makaze)