logo

Jocul de șeptică in Python

09 Oct, 2012 

E vorba de o încercare mai veche de a coda jocul de șeptică în Python. Am lucrat câteva zile la el, dar apoi - luându-mă cu altele - l-am lăsat baltă. O să-l reiau sper... Aici este ultima variantă în formă brută. Jocul nu are grafică: cărțile sunt reprezentate prin string-uri formate din cifre (numărul carții) și litere (tipul cărții). Sper să-i fac și o interfață grafică (asta în caz că îl termin ...).

#! usr/bin/python3.2

import random

SEPTARI = ['7r', '7n', '7t', '7i']

#Crearea deck-ului in doi pasi
proto_deck = [[str(i)+'r', str(i)+'i', str(i)+'n',str(i)+'t'] for i in range(7, 15)]
deck = []
for i in proto_deck:
    for l in i:
        deck.append(l)

print(deck)

#Functia care distribuie cartile
def da_carti(lista, a):
    l = []
    for i in range(4 - a):
        z = random.choice(lista)
        l.append(z)
        lista.remove(z)
    print(len(lista))
    return l

#Functia care stabileste daca calculatorul are o 
#carte de aceeasi valoare cu cea pe care a dat-o omul
#si da o singura carte
def calc_da(c, carti_calculator):
    y = 0
    x = 0
    if x ==0:
        for b in carti_calculator:
            if len(b) == len(c) ==2 and x < 1:        
                if b[0:1] == c[0:1]:
                    print(b)
                    print('Te-am taiat!')
                    carti_calculator.remove(b)
                    x += 1
            elif len(b) == len(c) == 3 and x < 1:
                if b[0:2] == c[0:2]:
                    print(b)
                    print('Team taiat')
                    carti_calculator.remove(b)
                    x += 1

    return x

#Distribuirea primei maini
carti_om = []
carti_calculator = []
carti_om = da_carti(deck, len(carti_om))
carti_calculator = da_carti(deck, len(carti_calculator))

#jocul propriu zis
while len(deck) + len(carti_om) + len(carti_calculator) != 0:
    print('Tu ai urmatoarele carti: ', carti_om)
    print('Iar eu am: ', carti_calculator)
    omul_da = input('Esti primul, da o carte: ')
    if omul_da in carti_om:
        print(omul_da)
        calculatorul_da = calc_da(omul_da, carti_calculator)
        carti_om.remove(omul_da)
        print('calculatorul da random', calculatorul_da)
        if calculatorul_da < 1:
            o_carte = random.choice(carti_calculator)
            print(o_carte)
            carti_calculator.remove(o_carte)

        print('omul mai are: ', len(carti_om), 'carti')
        print('calculatorul mai are', len(carti_calculator), 'carti')
        if len(deck) > 0:

            for i in da_carti(deck, len(carti_om)):
                carti_om.append(i)
            for j in da_carti(deck, len(carti_calculator)):
                carti_calculator.append(j)
        else:
            pass
    else:
        print('Nu ai cartea asta in mana')

De asemenea o să încerc să-l codez urmând principiile POO (programarea orientată pe obiect).