TI/Skrypty z zajęć/4

Z Brain-wiki
Wersja z dnia 11:53, 4 mar 2020 autorstwa Tgub (dyskusja | edycje)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
#!/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