-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathclovece.py
154 lines (134 loc) · 5.57 KB
/
clovece.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
import random
# veľkosť n*n hracej plochy
n=int(input("Zadaj veľkosť hracej plochy: "))
# funkcia vygeneruje a vráti hraciu plochu, n musí byť nepárne a väčšie ako 3
# pre nedostatok predstavivosti vyzerá sachovnica rovnako ako na obrázku v zadaní
def gensachovnicu(n):
sachovnica=[]
if n%2==0 or n<4:
print('Treba zadať nepárne číslo väčšie ako 3')
else:
for riadok in range(n):
sachovnicax=[]
for stlpec in range(n):
if riadok==((n-1)/2) and stlpec==((n-1)/2):
sachovnicax.append("X")
elif riadok==0 and stlpec==((n-1)/2):
sachovnicax.append("*")
elif riadok==((n-1)/2) and stlpec==0:
sachovnicax.append("*")
elif riadok==((n-1)/2) and stlpec==n-1:
sachovnicax.append("*")
elif riadok==n-1 and stlpec==((n-1)/2):
sachovnicax.append("*")
elif riadok==((n-1)/2) :
sachovnicax.append("D")
elif stlpec==((n-1)/2):
sachovnicax.append("D")
elif riadok==((n-1)/2)+1 or riadok==((n-1)/2)-1 or stlpec==((n-1)/2)+1 or stlpec==((n-1)/2)-1:
sachovnicax.append("*")
else:
sachovnicax.append(" ")
sachovnica.append(sachovnicax)
return(sachovnica)
sachovnica=gensachovnicu(n)
# funkcia nakreslí hraciu plochu, každý zoznam vytlačí do samostatného riadku
def tlacsachovnicu(sachovnica):
for i in sachovnica:
print(*i)
# hádzanie kockou pomocou knižnice random ktorú sme importovali na začiatku programu
# ak sa nám podarí hodiť šestku, hádžeme ešte raz
def hod_kockou():
hod = random.randint(1,6)
if hod%6==0:
hod=hod+hod_kockou()
return(hod)
# počiatočná pozícia panáčikov A a B
# vykreslíme ju na začiatku programu
sachovnica[0][int(n/2)+1]='A'
sachovnica[n-1][int(n/2)-1]='B'
tlacsachovnicu(sachovnica)
# pomocné premenné
stred = int((n-1)/2)
riadok = 0
stlpec = int(n/2)+1
x=0
riadokB = (n-1)
stlpecB = int(n/2)-1
y=0
# pohyb panáčika A po šachovnici na základe našich hodov s kockou
# vždy keď sa panáčik dostane do domčeka automaticky sa posunie na jeho koniec
# panáčikovia budú chodiť až kým sa nezaplní domček
def kroky_panacika_A():
global riadok
global stlpec
global x
hodilsi=hod_kockou()
print('Hráč A hodil číslo ',hodilsi)
for i in range(hodilsi):
if stlpec==n//2 and riadok==0 and sachovnica[riadok][stlpec]=='A':
x=x+1
sachovnica[riadok][stlpec] = "*"
sachovnica[(n//2)-x][stlpec] = "A"
break
elif stlpec>=stred and riadok<(n-1) and sachovnica[riadok+1][stlpec]=='*' : #down
sachovnica[riadok+1][stlpec] = "A"
riadok=riadok+1
sachovnica[riadok-1][stlpec] = "*"
elif stlpec<stred and riadok>0 and sachovnica[riadok-1][stlpec]=='*' : # up
sachovnica[riadok-1][stlpec] = "A"
riadok=riadok-1
sachovnica[riadok+1][stlpec] = "*"
elif riadok>=stred and sachovnica[riadok][stlpec-1]=='*': #left
sachovnica[riadok][stlpec-1] = "A"
stlpec=stlpec-1
sachovnica[riadok][stlpec+1] = "*"
elif riadok<stred and sachovnica[riadok][stlpec+1]=='*': #right
sachovnica[riadok][stlpec+1] = "A"
stlpec=stlpec+1
sachovnica[riadok][stlpec-1] = "*"
return tlacsachovnicu(sachovnica)
# Pohyb druhého panáčika
def kroky_panacika_B():
global riadokB
global stlpecB
global y
hodilsi=hod_kockou()
print('Hráč B hodil číslo ',hodilsi)
for i in range(hodilsi):
if stlpecB==n//2 and riadokB==n-1 and sachovnica[riadokB][stlpecB]=='B':
y=y+1
sachovnica[riadokB][stlpecB] = "*"
sachovnica[stred+y][stlpecB]='B'
break
if stlpecB<stred and riadokB<=n and riadokB!=0 and sachovnica[riadokB-1][stlpecB]=='*' : # up
sachovnica[riadokB-1][stlpecB] = "B"
riadokB=riadokB-1
sachovnica[riadokB+1][stlpecB] = "*"
elif stlpecB>=stred and riadokB<(n-1) and sachovnica[riadokB+1][stlpecB]=='*' : # down
sachovnica[riadokB+1][stlpecB] = "B"
riadokB=riadokB+1
sachovnica[riadokB-1][stlpecB] = "*"
elif riadokB>=stred and sachovnica[riadokB][stlpecB-1]=='*': # left
sachovnica[riadokB][stlpecB-1] = "B"
stlpecB=stlpecB-1
sachovnica[riadokB][stlpecB+1] = "*"
elif riadokB<stred and sachovnica[riadokB][stlpecB+1]=='*': #right
sachovnica[riadokB][stlpecB+1] = "B"
stlpecB=stlpecB+1
sachovnica[riadokB][stlpecB-1] = "*"
return tlacsachovnicu(sachovnica)
# funkcia pre pohyb všetkých panáčikov
# hra sa skončí keď bude jeden alebo druhý domček plný
def smer_domcek():
print('______________________________________HRA______________________________________')
while True:
kroky_panacika_A()
if sachovnica[1][n//2]=="A":
print('Zvíťazil hráč A')
break
kroky_panacika_B()
if sachovnica[n-2][n//2]=="B":
print('Zvíťazil hráč B')
break
smer_domcek()