Jump to content

[Python] Jocul cu ouțe!


BadDriver aka Roberts ENBs
 Share

Recommended Posts

Descriere:


Python vad ca nu foloseste nimeni pe aici, desi este un limbaj excelent pentru un incepator. Este mult mai potrivit sa inveti Python ca incepator, decat C++, care este un mamut de limbaj. Sa nu mai spun ca la scoala se invata defapt C-ul din C++, dar in fine.



Eu am facut repede un miniprogram ca sa vedeti care e treaba cu Python. Ideea este exact ca in jocul acela unde trebuie sa nimeresti unde are adversarul puse barcutele dintr-un tabel de NxN casute. Insa la mine este o varianta mai simpla. Este un tabel 5X5 iar jucatorul are 4 incercari sa nimereasca unde este pozitia. Jucatorul are posibilitatea de a alege linia si coloana ( logic ) pentru a face acest lucru. Programelul are un bug pe care n-am stat sa-l rezolv din cauza timpului. Atunci cand puneti o litera in loc de un intreg, va va da eroare.




Poze / Video: Nu cred ca e nevoie, este un program care ruleaza in consola, n-are o interfata. Cat de curand voi incepe sa fac si programe cu interfata


Link download: http://www.mediafire.com/download/kmrjqixtg4dqq4r/OoO.rar


Alte precizari:


Are mai multe fisiere, doar deschideti "OOOOO.exe". De ce? Deoarece Python pentru a rula pe Windows are nevoie de instalarea lui propriu-zis, de aici: https://www.python.org/


Eu am folosit un program de convertire de la .py la .exe, insa are nevoie si de fisierele cu care vine pentru a rula pe un calculator fara python instalat.



Cod sursa:




#Printeaza O sub forma 5x5
#sa fie 4 ture
#Se dau la nimereala
#Deoarece calculatorul numara de la 0, se schimba putin
#Se verifica daca sunt nimerite
#Se verifica daca sunt in alea 5
#Se verifica daca au mai fost
#Dupa cele 4 ture daca nu se nimereste, se incheie
from random import randint
raw_input("Bine ai venit la jocul cu oute!!")
print " "
print " "
print "Mai jos ai tabelul. Tu trebuie sa ghicesti din 4 incercari unde este X."
print "Trebuie sa selectezi linia si coloana."
print "Linia 4 si coloana 4 inseamna ultimul \'O' din dreapta de pe ultimul rand"
print "Mai jos vor fi si respunsurile. Este doar pentru debugging, ignora"
print " "
print " "
raw_input(("Daca ai inteles cum se joaca, apasa orice tasta pentru a incepe!"))
print " "
tabel = []

for ouri in range(5):
tabel.append((["O"] * 5))

def ouri_spatiate():
for ouri_spatiate in tabel:
print " ".join(ouri_spatiate)


rand_aleatoriu = randint(1, len(tabel))
coloana_aleatoriu = randint(1, len(tabel))
print "Ignora asta, este pentru debugging!"
print rand_aleatoriu
print coloana_aleatoriu
print " "
ouri_spatiate()
print " "
for mutari in range(4):
print "Mutarea: ", mutari + 1

alegere_rand = int(raw_input("Scrie pe ce rand crezi ca se afla \'X-ul': ")) - int(1)
alegere_coloana = int(raw_input("Scrie pe ce coloana crezi ca se afla \'X-ul': ")) - int(1)

if (alegere_rand + 1) == rand_aleatoriu and (alegere_coloana + 1) == coloana_aleatoriu:
print " "
print "Ai castigat!"
tabel[alegere_rand][alegere_coloana] = "X"
ouri_spatiate()
raw_input("Apasa orice tasta pentru a iesi")
break

else:
if mutari == 3:
print "Joc terminat, ai pierdut"
raw_input("Apasa orice tasta pentru a iesi")
if (alegere_rand < 0 or alegere_rand > 4) or (alegere_coloana < 0 or alegere_coloana > 4):
print "Ai ales inafara gridului 5X5"
elif tabel[alegere_rand][alegere_coloana] == "X":
print "Ai mai ales asta odata"
else:
tabel[alegere_rand][alegere_coloana] = "X"
print "Ai gresit"
print ouri_spatiate()


Edited by BdDr
Link to comment
Share on other sites

In Linux nu ai nevoie de asta. Sub Windows trebuie sa instalezi niste librarii pentru a-l recunoaste deoarece Python este un limbaj de programare exat pe programarea web si scripturi web( programare, nu design precum css, html etc ). Si s-ar putea ca ramura aceasta a programarii sa mi-o aleg, programare in web.

 

Pana la urma si in C# ai nevoie de Visual Studio pt a functiona. Totusi, probabil dupa ce ma mai joc putin cu Python, voi incepe C#, mereu mi s-a parut interesant.

Edited by BdDr
Link to comment
Share on other sites

Am adus cateva mici modificari, aceasta este versiunea finala. Voi mai face cateva programe mici iar dupa cred ca este timpul sa incep sa le fac cu GUI. Dupa ce o sa stapanesc bine Python, voi trece la C++ pt a putea da bacul la informatica.

 

Stiu ca nu prea ii pasa nimanui de cacaturile astea mici de programe, insa totul are un inceput.

 

Download Link: http://www.mediafire.com/download/43svdabf979jo58/Joc+Oute+final.rar

 

Ce am adus nou:

 

-Acum grid-ul nu mai este prestabilit 5X5, se poate seta de jucator sub orice forma doreste el. De exemplu, 2X6 sau 40X69.

-Numarul de incercari nu mai este prestabilit la 3, jucatorul poate alege cate incercari doreste sa aiba.

-Dupa fiecare pierdere sau castig, jucatorul este intrebat daca vrea sa reinceapa. Daca scrie "Y" sau "y", jocul reincepe, daca scrie "n" sau "N", jocul se termina iar daca scrie orice altceva, va fi repus sa aleaga dintre variantele amintite mai devreme.

-Ii va aparea dupa ce castiga de cate incercari a avut nevoie.

#Printeaza un grid costum
#Ture custom
#Calculatorul genereaza pozitia
#Se verifica daca sunt nimerite
#Se verifica daca sunt in grid
#Se verifica daca au mai fost
#Dupa turele custom daca nu se nimereste, se incheie si se intreaba daca se vrea rematch
from random import randint
raw_input("Bine ai venit la Battleship! Apasa orice tasta!")
print " "
print " "
print "Mai jos ai tabelul. Tu trebuie sa ghicesti din cate incercari pui tu sa fie unde este X."
print "Trebuie sa selectezi linia si coloana."
print "Mai jos vor fi si respunsurile. Este doar pentru debugging, ignora"
print " "
print " "
raw_input(("Daca ai inteles cum se joaca, apasa orice tasta pentru a incepe!"))
print " "


def rematch():
    while True:
        alegere_rematch = raw_input("Vrei sa reincepi jocul? Scrie \'Y' sau \'N': ")
        if alegere_rematch.lower() == "y":
            match()
            break
        elif alegere_rematch.lower() == "n":
            raw_input( "Ai ales nu. Apasa orice tasta pt a iesi, la revedere...")
            break
        else:
            print "Alege dintre \'Y' sau \'N'!"

def match():
    numar_o_rand = int(raw_input("Cate \'O-uri' vrei sa fie pe rand?"))
    numar_o_coloana = int(raw_input("Cate \'O-uri vrei sa fie pe coloana?"))
    tabel = []

    for ouri in range(numar_o_rand):
        tabel.append((["O"] * numar_o_coloana))

    def ouri_spatiate():
        for ouri_spatiate in tabel:
            print " ".join(ouri_spatiate)

    rand_aleatoriu = randint(1, (numar_o_rand -1))
    coloana_aleatoriu = randint(1, (numar_o_coloana -1))
    print "Ignora asta, este pentru debugging!"
    print rand_aleatoriu
    print coloana_aleatoriu
    print " "
    ouri_spatiate()
    print " "
    print " "
    numar_mutari = int(raw_input("Alege numarul de mutari disponibile: "))
    for mutari in range(numar_mutari):
        print "Mutarea: ", mutari + 1

        alegere_rand = int(raw_input("Scrie pe ce rand crezi ca se afla \'X-ul': ")) - int(1)
        alegere_coloana = int(raw_input("Scrie pe ce coloana crezi ca se afla \'X-ul': ")) - int(1)

        if (alegere_rand + 1) == rand_aleatoriu and (alegere_coloana + 1) == coloana_aleatoriu:
            print " "
            print "Ai castigat!"
            print "Ai avut nevoie de %s incercari." %(mutari +1)
            tabel[alegere_rand][alegere_coloana] = "X"
            ouri_spatiate()
            rematch()
            break

        if mutari == numar_mutari - 1:
            print "Joc terminat, ai pierdut"
            rematch()
            break
        if (alegere_rand < 0 or alegere_rand > (numar_o_coloana - 1)) or (alegere_coloana < 0 or alegere_coloana > (numar_o_coloana - 1)):
            print "Ai ales inafara gridului 5X5"
        elif tabel[alegere_rand][alegere_coloana] == "X":
            print "Ai mai ales asta odata"
        else:
            tabel[alegere_rand][alegere_coloana] = "X"
            print "Ai gresit"
            print ouri_spatiate()
match()
Edited by BdDr
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.