TI/Skrypty z zajęć/4
Z Brain-wiki
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Wed Mar 4 10:17:21 2020
@author: tgub
"""
import numpy as np
#a = np.array(range(9)).reshape((3,3))
#print(a)
#
#s = 0
#for i in range(a.shape[0]):
# s += a[0,i]*a[1,i]
#print(s)
#
#print(np.dot(a[1,:],a[0,:]))
#poczatek k i k
plansza = np.zeros((3,3))
plansza[0,0] = 1
plansza[2,2] = 2
def rysuj(plansza):
kreska = ('---+'*plansza.shape[1])[:-1]
def znak(z):
if z == 1: return ' O '
if z == 2: return ' X '
return ' '
for i in range(plansza.shape[0]):
print('|'.join([znak(liczba) for liczba in plansza[i,:]]))
if (i<plansza.shape[0]-1): print(kreska)
rysuj(plansza)
'''
O | |
---+---+---
| X |
---+---+---
| |
'''
'''
#schemat gry
while 'sa wolne pola':
#ruch gracza i
while 'nie mam wspolrzednych wolnego pola':
'podaj wspolrzedne'
'wstaw znak'
rysuj(plansza)
'zmien gracza'
print('KONIEC GRY')
#schemat gry
i=1
while (len(plansza.flatten())-np.count_nonzero(plansza)):
#rysujemy plansze
rysuj(plansza)
#ruch gracza i
while True:
x = int(input('graczu '+str(i)+' podaj wspolrzedna x:'))
y = int(input('graczu '+str(i)+' podaj wspolrzedna y:'))
if (plansza[x,y] == 0): break
plansza[x,y] = i
#zmien gracza
i = 1 + i%2
print('KONIEC GRY')
'''
#vec to jednowymiarowa tablica
def sprawdz_linie(vec):
#gdy vec ma same jedynki zwraca 1
#gdy vec ma same dwojki zwraca 2
# w pozostałych przypadkach zwraca 0
for i in [1,2]:
if np.count_nonzero(vec-i) == 0: return i
return 0
i=1
while True:
#rysujemy plansze
rysuj(plansza)
#ruch gracza i
while True:
x = int(input('graczu '+str(i)+' podaj wspolrzedna x:'))
y = int(input('graczu '+str(i)+' podaj wspolrzedna y:'))
if (plansza[x,y] == 0): break
plansza[x,y] = i
if (len(plansza.flatten())-np.count_nonzero(plansza)) == 0:
print('REMIS')
break
wyniki=[]
for j in range(len(plansza)):
wyniki.append(sprawdz_linie(plansza[j,:]))
wyniki.append(sprawdz_linie(plansza[:,j]))
wyniki.append(sprawdz_linie(np.diag(plansza)))
wyniki.append(sprawdz_linie(np.diag(plansza[:,::-1])))
wynik=max(wyniki)
if wynik:
print('wygral gracz '+str(wynik))
break
#zmien gracza
i = 1 + i%2