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