TI/Skrypty z zajęć/4: Różnice pomiędzy wersjami

Z Brain-wiki
 
Linia 54: Linia 54:
 
     'zmien gracza'
 
     'zmien gracza'
 
print('KONIEC GRY')
 
print('KONIEC GRY')
'''
+
 
 
#schemat gry
 
#schemat gry
 
i=1
 
i=1
Linia 72: Linia 72:
  
 
print('KONIEC GRY')
 
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
  
  
 
</source>
 
</source>

Aktualna wersja na dzień 11:53, 4 mar 2020

#!/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