Jump to content
Sign in to follow this  
icemonster2

Metade de um jogo

Recommended Posts

icemonster2

Boas pessoal. Sou o Nuno tenho 15 anos, quis começar a programar desde cedo (Aos 11 aprendi um pouco de RUBY e aos 8 ja sabia mexer no MS-DOS xD). Esta aqui metade de um "jogo".Isto vai ser o codigo principal, e como se fosse um esboço. Eu vou dedicar depois um fim-de-semana

a aprender Python em ambiente gráfico, com o módulo Tkinter ou o que é... Ainda sou um bocado nabo no python mas tenho intenções

de estudar isto na universidade e nao vou desistir.

Podem fazer todo o tipo de criticas que sei que isso vai contribuir para o meu estudo. Digam-me o que eu secalhar posso retirar do codigo que nao esta a fazer nada, algumas correções e tal, se nao se importarem. Obrigado

import random
import time
print "Bem vindo ao jogo qualquer coisa..."
print "Digite (Sair) para sair"
print "Voce vai ter 5 cartas ao inicio.E o primeiro a jogar. Preparado? Vai"
msg1 = "O seu monstro foi destruido."
msg2 = "O monstro do PC foi destruido"
msg3 = "Voce nao tem mais monstros, voce perdeu."
msg4 = "O PC nao tem mais monstros, voce ganhou!!!."
monstrospc = 2
monstros = 2
manaelectricidade = 0
manafogo = 0
manaagua = 0
supersonic = 0
noddy = 0
monstrodasbolachas = 0
monstrodefogo = 0
atkmonstrodefogo = 5
defmonstrodefogo = 2
montana = 0
atkmontana = 3
defmontana = 1
aquafresh = 0
atkaquafresh = 4
defaquafresh = 3
carta1 = random.randint(1,3)
carta2 = random.randint(4,6)
carta3 = random.randint(7,9)
carta4 = random.randint(10,12)
carta5 = random.randint(13,15)
if carta1 == 1:
    print "Voce tem o supersonic!"
    supersonic = supersonic + 1
    print "Super sonic tem ataque:3 e defesa:4"
    print "-----------------------------------"
elif carta1 == 2:
    print "Voce tem o noddy!"
    print "Noddy tem ataque:1 e defesa: 3"
    noddy = noddy + 1
    print "------------------------------"
elif carta1 == 3:
    print "Voce tem o monstro das bolachas!"
    monstrodasbolachas = monstrodasbolachas + 1
    print "Monstro das bolachas tem ataque: 4 e defesa: 3"
    print "----------------------------------------------"
if carta2 == 4:
    print "Voce tem um mana de fogo."
    manafogo = manafogo + 1
elif carta2 == 5:
    print "Voce tem um mana de agua."
    manaagua = manaagua + 1
elif carta2 == 6:
    print "Voce tem um mana de electricidade."
    manaelectricidade = manaelectricidade + 1
if carta3 == 7:
    print "Voce tem um mana de fogo."
    manafogo = manafogo + 1
elif carta3 == 8:
    print "Voce tem um mana de agua."
    manaagua = manaagua +1
elif carta3 == 9:
    print "Voce tem um mana de electricidade."
    manaelectricidade = manaelectricidade + 1
if carta4 == 10:
    print "Voce tem um mana de fogo."
    manafogo = manafogo + 1
elif carta4 == 11:
    print "Voce tem um mana de agua."
    manaagua = manaagua + 1
elif carta4 == 12:
    print "Voce tem um mana de electricidade."
    manaelectricidade = manaelectricidade + 1
if carta5 == 13:
    print "Voce tem um monstro de fogo."
    monstrodefogo = monstrodefogo + 1
    print "Monstro de fogo tem ataque: 5 e defesa: 2"
    print "-----------------------------------------"
elif carta5 == 14:
    print "Voce tem um montana."
    montana = montana + 1
    print "Montana tem ataque: 3 e defesa: 1"
    print "---------------------------------"
elif carta5 == 15:
    print "Voce tem um aquafresh."
    aquafresh = aquafresh + 1
    print "Aquafresh tem ataque: 4 e defesa: 3"
print "Para jogar uma carta, digite o nome de um monstro que voce tenha."
print "Voce tem que ter mana sufeciente para invocar um monstro."
print "Logo que o seu monstro entra em jogo, o monstro do computador e invocado e comeca a batalha."
print "Ganha, claro o que tiver maior ponto de ataque e defesa."
print "Dos jogadores perde quem acabar as cartas primeiro."
print "Certifique-se que digita tudo em letras pequenas."
while monstrospc != 0 and monstros != 0:
    try:
        jogada = raw_input("Qual o monstro que vai jogar: ")
        if jogada == "supersonic" and supersonic == 1 and manaelectricidade != 0:
                    manaelectricidade = manaelectricidade - 1
                    supersonic = supersonic - 1
                    print "Super-sonic entrou em campo."
                    time.sleep(2)
                    computador = random.randint(1,3)
                    if computador == 1:
                        print "computador jogou monstro de fogo."
                        time.sleep(2)
                        print msg2
                        monstrospc = monstrospc - 1
                        computador2 = random.randint(1,3)
                        if computador2 == 1:
                            print "Computador jogou super-sonic"
                            time.sleep(2)
                            print "Os dois monstros foram destruidos."
                            print "O computador ja nao tem monstros. Voce ganhou!!!"
                            monstrospc = monstrospc - 1
                            monstros = monstros - 1
                        elif computador2 == 2:
                            print "Computador jogou noddy"
                            time.sleep(2)
                            print msg2
                            print msg4
                            monstrospc = monstrospc - 1
                        elif computador2 == 3:
                            print "O computador jogou o monstro das bolachas."
                            time.sleep(2)
                            print "Os monstros tem defesa igual ao ataque um do outro."
                            print "Os monstros tem ataque igual a defesa um do outro."
                            print "Os dois monstros foram destruidos."
                            print msg4
                            monstrospc = monstrospc - 1
                            monstros = monstros - 1
                    if computador == 2:
                        print "computador jogou Montana."
                        time.sleep(2)
                        print "Montana foi destruida."
                        monstrospc = monstrospc - 1
                        computador2 = random.randint(1,3)
                        if computador2 == 1:
                            print "Computador jogou super-sonic."
                            print "Os dois monstros foram destruidos."
                            print msg4
                            monstrospc = monstrospc - 1
                            monstros = monstros - 1
                        elif computador2 == 2:
                            print "Computador jogou Noddy."
                            time.sleep(2)
                            print msg2
                            print msg4
                            monstrospc = monstrospc - 1
                        elif computador2 == 3:
                            print "O computador jogou o monstro das bolachas."
                            time.sleep(2)
                            print "Os monstros tem defesa igual ao ataque um do outro."
                            print "Os monstros tem ataque igual a defesa um do outro."
                            print "Os dois monstros foram destruidos."
                            print msg4
                            monstrospc = monstrospc - 1
                            monstros = monstros - 1
                    if computador == 3:
                        print "Computador jogou aquafresh."
                        time.sleep(2)
                        print "Os monstros tem defesa igual ao ataque um do outro."
                        print "Os monstros tem ataque igual a defesa um do outro."
                        print "Os dois monstros foram destruidos."
                        monstrospc = monstrospc - 1
                        monstros = monstros - 1
                        jogada2 = raw_input("Qual monstro que vai jogar agora: ")
                        if jogada2 == "monstro de fogo" and monstrodefogo == 1 and manafogo != 0:
                                    monstrodefogo = monstrodefogo - 1
                                    manafogo == manafogo - 1
                                    print "Monstro de fogo entrou em campo."
                                    computador3 = random.randint(1,3)
                                    if computador3 == 1:
                                        print "Computador jogou Super-sonic."
                                        time.sleep(2)
                                        print msg1
                                        print msg3
                                        monstros = monstros - 1
                                    if computador3 == 2:
                                        print "Computador jogou noddy"
                                        time.sleep(2)
                                        print msg2
                                        print msg4
                                        monstrospc = monstrospc - 1
                                    if computador3 == 3:
                                        print "Computador jogou Monstro das bolachas."
                                        time.sleep(2)
                                        print msg1
                                        print msg3
                                        monstros = monstros - 1
                        if jogada2 == "montana" and montana == 1 and manaelectricidade != 0:
                                    montana = montana - 1
                                    manaelectricidade = manaelectricidade - 1
                                    print "Montana entrou em campo"
                                    computador3 = random.randint(1,3)
                                    if computador3 == 1:
                                        print "Computador jogou Super-sonic."
                                        time.sleep(2)
                                        print msg1
                                        print msg3
                                        monstros = monstros - 1
                                    if computador3 == 2:
                                        print "Computador jogou noddy"
                                        time.sleep(2)
                                        print "O ataque e igual a defesa um do outro."
                                        print "A defesa e igual ao ataque um do outro."
                                        print "Os dois monstros foram destruidos."
                                        print "Voce empatou com o computador."
                                        monstrospc = monstrospc - 1
                                        monstros = monstros - 1
                                    if computador3 == 3:
                                        print "computador jogou Monstro das bolachas."
                                        time.sleep(2)
                                        print msg1
                                        print msg3
                                        monstros = monstros - 1
                        if jogada2 == "aquafresh" and aquafresh == 1 and manaagua != 0:
                                    aquafresh = aquafresh - 1
                                    manaagua = manaagua - 1
                                    print "Aquafresh entrou em campo."
                                    computador3 = random.randint(1,3)
                                    if computador3 == 1:
                                        print "Computador jogou Super-Sonic."
                                        time.sleep(2)
                                        print "Os monstros tem ataque igual a defessa um do outro."
                                        print "Os monstros tem defesa igual ao ataque um do outro."
                                        print "Os dois monstros foram destruidos."
                                        print "Voce empatou com o computador."
                                        monstrospc = monstrospc - 1
                                        monstros = monstros - 1
                                    if computador3 == 2:
                                        print "Computador jogou Noddy."
                                        time.sleep(2)
                                        print msg2
                                        print msg4
                                        monstrospc = monstrospc - 1
                                    if computador3 == 3:
                                        print "Computador jogou monstro das bolachas."
                                        time.sleep(2)
                                        print "Os monstros tem ataque igual a defessa um do outro."
                                        print "Os monstros tem defesa igual ao ataque um do outro."
                                        print "Os dois monstros foram destruidos."
                                        print "Voce empatou com o computador."
                                        monstrospc = monstrospc - 1
                                        monstros = monstros - 1
        elif jogada == "noddy" and noddy == 1 and manaagua != 0:
                    noddy = noddy - 1
                    manaagua = manaagua - 1
                    print "Noddy entrou em campo."
                    time.sleep(2)
                    computador4 = random.randint(1,3)
                    if computador4 == 1:
                        print "Computador jogou Monstro de fogo."
                        time.sleep(2)
                        print msg1
                        monstros = monstros - 1
                        jogada2 = raw_input("Qual monstro que vai jogar agora: ")
                        if jogada2 == "monstro de fogo" and monstrodefogo == 1 and manafogo != 0:
                                    monstrodefogo = monstrodefogo - 1
                                    manafogo = manafogo - 1
                                    print "Monstro de fogo entrou em campo."
                                    print "Os dois monstros foram destruidos."
                                    print msg3
                                    monstros = monstros - 1
                                    monstrospc = monstrospc - 1
                        elif jogada2 == "montana" and montana == 1 and manaelectricidade != 0:
                                    montana = montana - 1
                                    manaelectricidade = manaelectricidade - 1
                                    print "Montana entrou em campo."
                                    time.sleep(2)
                                    print msg1
                                    print msg3
                                    monstros = monstros - 1
                        elif jogada2 == "aquafresh" and aquafresh == 1 and manaagua != 0:
                                    aquafresh = aquafresh - 1
                                    manaagua = manaagua - 1
                                    print "Aquafresh entrou em jogo."
                                    time.sleep(2)
                                    print msg2
                                    print msg4
                                    monstrospc = monstrospc - 1
                    if computador4 == 2:
                        print "Computador jogou Montana."
                        time.sleep(2)
                        print "Os monstros tem defesa igual ao ataque um do outro."
                        print "Os monstros tem ataque igual a defesa um do outro."
                        print "Os dois monstros foram destruidos."
                        jogada2 = raw_input("Qual monstro vai jogar agora: ")
                        if jogada2 == "monstro de fogo" and monstrodefogo == 1 and manafogo != 0:
                                    monstrodefogo = monstrodefogo - 1
                                    manafogo = manafogo - 1
                                    print "Monstro de fogo entrou em campo."
                                    computador5 = random.randint(1,3)
                                    if computador5 == 1:
                                        print "Computador jogou Super-sonic."
                                        time.sleep(2)
                                        print msg1
                                        print msg3
                                        monstros = monstros - 1
                                    if computador5 == 2:
                                        print "Computador jogou noddy"
                                        time.sleep(2)
                                        print msg2
                                        print msg4
                                        monstrospc = monstrospc - 1
                                    if computador5 == 3:
                                        print "Computador jogou Monstro das bolachas."
                                        time.sleep(2)
                                        print msg1
                                        print msg3
                                        monstros = monstros - 1
                        if jogada2 == "montana" and montana == 1 and manaelectricidade != 0:
                                    montana = montana - 1
                                    manaelectricidade = manaelectricidade - 1
                                    print "Montana entrou em campo"
                                    computador3 = random.randint(1,3)
                                    if computador3 == 1:
                                        print "Computador jogou Super-sonic."
                                        time.sleep(2)
                                        print msg1
                                        print msg3
                                        monstros = monstros - 1
                                    if computador3 == 2:
                                        print "Computador jogou noddy"
                                        time.sleep(2)
                                        print "O ataque e igual a defesa um do outro."
                                        print "A defesa e igual ao ataque um do outro."
                                        print "Os dois monstros foram destruidos."
                                        print "Voce empatou com o computador."
                                    if computador3 == 3:
                                        print "computador jogou Monstro das bolachas."
                                        time.sleep(2)
                                        print msg1
                                        print msg3
                                        monstros = monstros - 1
                        if jogada2 == "aquafresh" and aquafresh == 1 and manaagua != 0:
                                    aquafresh = aquafresh - 1
                                    manaagua = manaagua - 1
                                    print "Aquafresh entrou em campo."
                                    computador3 = random.randint(1,3)
                                    if computador3 == 1:
                                        print "Computador jogou Super-Sonic."
                                        time.sleep(2)
                                        print "Os monstros tem ataque igual a defessa um do outro."
                                        print "Os monstros tem defesa igual ao ataque um do outro."
                                        print "Os dois monstros foram destruidos."
                                        print "Voce empatou."
                                        monstrospc = monstrospc - 1
                                        monstros = monstros - 1
                                    if computador3 == 2:
                                        print "Computador jogou Noddy."
                                        time.sleep(2)
                                        print msg1
                                        print msg4
                                        monstrospc = monstrospc - 1
                                    if computador3 == 3:
                                        print "Computador jogou monstro das bolachas."
                                        time.sleep(2)
                                        print "Os monstros tem ataque igual a defessa um do outro."
                                        print "Os monstros tem defesa igual ao ataque um do outro."
                                        print "Os dois monstros foram destruidos."
                                        print "Voce empatou com o computador."
                                        monstrospc = monstrospc - 1
                                        monstros = monstros - 1
                    if computador4 == 3:
                        print "Computador jogou aquafresh."
                        time.sleep(2)
                        print "Noddy foi destruido."
                        jogada2 = raw_input("Qual monstro vai jogar agora: ")
                        if jogada2 == "monstro de fogo" and monstrodefogo == 1 and manafogo != 0:
                                    monstrodefogo = monstrodefogo - 1
                                    manafogo = manafogo - 1
                                    print "Monstro de fogo entrou em jogo."
                                    time.sleep(2)
                                    print msg1
                                    print msg3
                                    monstros = monstros - 1
                        if jogada2 == "montana" and montana == 1 and manaelectricidade != 0:
                                    montana = montana - 1
                                    manaelectricidade = manaelectricidade - 1
                                    print "Montana entrou em jogo!"
                                    time.sleep(2)
                                    print msg1
                                    print msg3
                                    monstros = monstros - 1
                        if jogada2 == "aquafresh" and aquafresh == 1 and manaelectricidade != 0:
                                    aquafresh = aquafresh - 1
                                    manaelectricidade = manaelectricidade - 1
                                    print "Aquafresh entrou em jogo!"
                                    time.sleep(2)
                                    print "Os dois monstros foram destruidos pois sao iguais."
                                    print msg3
                                    monstros = 0
        elif jogada == "monstrodasbolachas" and monstrodasbolachas == 1 and manafogo != 0:
                    monstrodasbolachas = monstrodasbolachas - 1
                    manafogo = manafogo - 1
                    print "Monstro das bolachas entrou em campo!"
                    time.sleep(2)
                    computador4 = random.randint(1,3)
                    if computador4 == 1:
                        print "Computador jogou Monstro de fogo."
                        time.sleep(2)
                        print msg2
                        monstrospc = monstrospc - 1
                        computador5 = random.randint(1,3)
                        if computador5 == 1:
                            print "Computador jogou Supersonic."
                            time.sleep(2)
                            print "Os dois monstros tem ataque igual a defesa um do outro."
                            print "Os dois monstros tem defesa igual ao ataque um do outro."
                            print "Os dois monstros foram destruidos."
                            print "O computador ja nao tem monstros. Voce ganhou!!!"
                            monstrospc = monstrospc - 1
                            monstros = monstros - 1
                        elif computador5 == 2:
                            print "Computador jogou Noddy."
                            print msg2
                            print msg4
                            monstrospc = monstrospc - 1
                        elif computador5 == 3:
                            print "Computador jogou monstro das bolachas."
                            print msg1
                            monstrospc = monstrospc - 1
                            jogada3 = raw_input("Qual o monstro que vai jogar agora?")
                            if jogada3 == "monstro de fogo" and monstrodefogo == 1 and manafogo != 0:
                                        print "monstro de fogo entrou em campo."
                                        time.sleep(2)
                                        print msg1
                                        print msg3
                                        monstros = monstros - 1
                            elif jogada3 == "montana" and montana == 1 and manaelectricidade != 0:
                                        print "Montana entrou em campo."
                                        time.sleep(2)
                                        print msg1
                                        print msg3
                                        monstros = monstros - 1
                            elif jogada3 == "aquafresh" and aquafresh == 1 and manaagua != 0:
                                        print "Aquafresh entrou em campo."
                                        time.sleep(2)
                                        print "Os dois monstros tem ataque e defesa iguais."
                                        print "Os dois monstros foram destruidos."
                                        monstrospc = monstrospc - 1
                                        monstros = monstros - 1
                    elif computador4 == 2:
                        print "Computador jogou montana."
                        time.sleep(2)
                        print "Montana foi destruida."
                        monstrospc = monstrospc - 1
                        computador5 = random.randint(1,3)
                        if computador5 == 1:
                            print "Super-sonic entrou em campo."
                            time.sleep(2)
                            print "Os dois monstros tem defesa igual ao ataque um do outro."
                            print "Os dois monstros tem ataque igual a defesa um do outro."
                            print "Os dois monstros foram destruidos."
                            print msg4
                            monstrospc = monstrospc - 1
                            monstros = monstros - 1
                        elif computador5 == 2:
                            print "Computador jogou Noddy."
                            time.sleep(2)
                            print msg2
                            print msg4
                            monstrospc = monstrospc - 1
                        elif computador5 == 3:
                            print "Monstro das bolachas entrou em campo."
                            time.sleep(2)
                            print "Os monstros sao iguais, por isso vao ser os dois destruidos."
                            print "O computador nao tem mais monstros. Voce ganhou!!!"
                            monstrospc = monstrospc - 1
                            monstros = monstros - 1
                    elif computador4 == 3:
                        print "Computador jogou Aquafresh."
                        time.sleep(2)
                        print "O ataque e a defesa dos monstros sao iguais, por isso vao ser os dois destruidos."
                        monstros = 1
                        monstrospc = 1
                        jogada3 = raw_input("Qual o monstro que vai jogar agora: ")
                        if jogada3 == "monstro de fogo" and monstrodefogo == 1 and manafogo != 0:
                                    print "Monstro de fogo entrou em campo."
                                    computador6 = random.randint(1,3)
                                    if computador6 == 1:
                                        print "Computador jogou o Super-sonic."
                                        time.sleep(2)
                                        print msg1
                                        print msg3
                                        monstros = monstros - 1
                                    elif computador6 == 2:
                                        print "Computador jogou o Noddy."
                                        time.sleep(2)
                                        print msg2
                                        print msg4
                                        monstrospc = monstrospc - 1
                                    elif computador6 == 3:
                                        print "Computador jogou o Monstro das bolachas."
                                        time.sleep(2)
                                        print msg1
                                        print msg3
                                        monstros = monstros - 1
                        elif jogada3 == "montana" and montana == 1 and manaelectricidade != 0:
                                    print "Montana entrou em campo."
                                    computador6 = random.randint(1,3)
                                    if computador6 == 1:
                                        print "Computador jogou o Super-sonic."
                                        time.sleep(2)
                                        print msg1
                                        print msg3
                                        monstros = monstros - 1
                                    elif computador6 == 2:
                                        print "Computador jogou o Noddy."
                                        time.sleep(2)
                                        print "Os dois monstros tem ataque igual a defesa um do outro."
                                        print "Os dois monstros tem defesa igual ao ataque um do outro."
                                        print "Os dois monstros foram destruidos."
                                        print "Voce empatou com o computador."
                                        monstrospc = monstrospc - 1
                                        monstros = monstros - 1
                                    elif computador6 == 3:
                                        print "Computador jogou o Monstro das bolachas."
                                        time.sleep(2)
                                        print msg1
                                        print msg3
                                        monstros = monstros - 1
                        elif jogada3 == "aquafresh" and aquafresh == 1 and manaagua != 0:
                                    print "Aquafresh entrou em campo."
                                    computador6  = random.randint(1,3)
                                    if computador6 == 1:
                                        print "Computador jogou o Super-sonic."
                                        time.sleep(2)
                                        print "Os dois monstros tem ataque igual a defesa um do outro."
                                        print "Os dois monstros tem defesa igual ao ataque um do outro."
                                        print "Os dois monstros foram destruidos."
                                        print "Voce empatou com o computador."
                                    elif computador6 == 2:
                                        print "Computador jogou o Noddy."
                                        time.sleep(2)
                                        print msg2
                                        print msg4
                                        monstrospc = monstrospc - 1
                                    elif computador6 == 3:
                                        print "Computador jogou o Monstro das bolachas."
                                        time.sleep(2)
                                        print "Os dois monstros tem ataque e defesa iguais. Vao ser os dois destruidos."
                                        print "Voce empatou com o computador."
                                        monstrospc = monstrospc - 1
                                        monstros = monstros - 1
        elif jogada == "monstro de fogo" and monstrodefogo == 1 and manafogo != 0:
            monstrodefogo = monstrodefogo - 1
            manafogo = manafogo - 1
            print "Monstro de fogo entrou em campo."
            time.sleep(2)
            computador = random.randint(1,3)
            if computador == 1:
                print "Computador jogou Super-Sonic."
                time.sleep(2)
                print msg1
                monstros = monstros - 1
                jogada2 = raw_input("Qual o monstro que vai jogar agora: ")           
    except:
        if monstros == 0:
            break
        if monstrospc == 0:
            break
        if jogada == "Sair":
            break 

       

       

Share this post


Link to post
Share on other sites
tobias

Boas,

Vi o teu código assim por alto, confesso que o que sei de python é reduzido a quase nada  :P

Mas pelo código da para perceber tudo o que ai tens.

Deixo algumas dicas (podem ou não ser as melhores).

switch/case, não tornaria isso mais simples de implementar, visto que tens isso tudo em "if's/elif's".

Depois reparei que tens encadeamento de if's que são desnecessário, pelo pouco que vi o código, (como já disse foi só por alto, dado isto perdoa-me se estiver enganado  :D )

Exemplo:

if jogada == "supersonic":
            if supersonic == 1:
                if manaelectricidade != 0:
                    manaelectricidade = manaelectricidade - 1
                    supersonic = supersonic - 1
                    print "Super-sonic entrou em campo."
                    time.sleep(2)
                    computador = random.randint(1,3)

Não era melhor isto:

if jogada == "supersonic" and supersonic == 1 and if manaelectricidade != 0:
                    manaelectricidade = manaelectricidade - 1
                    supersonic = supersonic - 1
                    print "Super-sonic entrou em campo."
                    time.sleep(2)
                    computador = random.randint(1,3)

....

Mas muito boa iniciativa tua, quereres aprender python, eu também investiguei um pouco o ano passado mas foi mesmo muito pouco, mas desse pouco fiquei a adorar a maneira de programar em python, o que me vai levar a um dia estuda-la a serio!

Continua com esse jogo de cartas, que com umas melhorias, aspecto gráfico, e mais umas funções deve fica muito interessante!

Cumps.

Tobias Cintrão


Cumprimentos,Tobias Cintrão


"O que se pensa começa no que se ouve"
"Inspiração == Interrupção momentânea da estupidez"

Share this post


Link to post
Share on other sites
icemonster2

Obrigado pela tua resposta Tobias.

Ah! e aquilo no inicio do atk e a def dos "monstros" era só para me guiar caso nao tenham reparado. Vou por para apareçer uma mensagem para os jogadores a dizer o ataque e a defesa dos monstros que têm e depois tiro isso do código quando acabar o jogo porque não está lá a fazer nada. Talvez ponha em forma de comentário. Vou pensar nisso...

Nuno Sabino

PS: Ja retirei o encadeamento dos If's e pus como dissestes. ^^

Share this post


Link to post
Share on other sites
tobias

Boas,

Acredito que seja mais fácil perceberes o código quando das valores sequenciais nos randoms, mas visto que são variáveis diferentes podes usar sempre 1,3.

Sendo variáveis diferentes, também dava para fazer isso num array.

O que pensas fazer se aumentares consideravelmente o numero de cartas?

continuar a fazer if's?

Penso que nesta fase, onde já tens o funcionamento base a funcionar (penso eu), tenta melhorar o teu código. tentar talvez fazer isso com ciclos de repetição e cálculos para reduzir a quantidade de if's.

quando à primeira dica sobre  switch/case não pensaste nisso?

Bom trabalho :P

Cumps.

Tobias Cintrão


Cumprimentos,Tobias Cintrão


"O que se pensa começa no que se ouve"
"Inspiração == Interrupção momentânea da estupidez"

Share this post


Link to post
Share on other sites
icemonster2

Pois, foi por isso que disse que ainda era só um esboço, pois sabia que haveria ainda muito que corrigir e aprender.

Não faço a minima ideia do que são Arrays(nabo como eu disse xD) mas vou ver sobre isso num dos tutorias do portugal a programar.

Depois actualizo...

Share this post


Link to post
Share on other sites
Pedro C.

Experimenta construíres classes e funções que possas reutilizar. Utilizar essas ferramentas em python é bastante simples. Para construíres uma função utilizas o comando "def" seguido do nome da função e respectivos argumentos dentre parêntesis. Depois dás as tuas instruções nas linhas a seguir e finalmente utilizas o "return" para dares o resultado da tua função. A função a seguir devolve a soma do número a com b.

def soma(a,b):
    c=a+b
    return c

Para chamares a função podes simplesmente indicar a mesma com os respectivos argumentos:

>> c=soma(4,5)
>> c
    9

Um array é um vector. Não debatendo a aplicabilidade matemática podes interpretá-lo como apenas como uma lista de números. No python tens múltiplos objectos deste tipo especialmente se introduzires a biblioteca de cálculo mais usada (numpy). De qualquer maneira em python podes criar uma lista assim (o exemplo está feito na consola):

In [1]: a=[1,2,3,4,5]

In [2]: a
Out[2]: [1, 2, 3, 4, 5]

In [3]: a[0]
Out[3]: 1

In [4]: a[3]
Out[4]: 4

Repara que fiz uma lista com parêntesis e depois para chamar o número correspondente a uma posição basta chama-lo como chamei nas instruções posteriores (nota que a primeira posição é dada por 0 e a segunda por 1 e por ai adiante). Agora se perceberes este conceito de lista de números dá um passo em frente e utiliza o conceito de dicionário que é muito semelhante mas com a vantagem de utilizar palavras chave (mais uma vez um exemplo na consola):

In [12]: a={"monstro das bolachas":1,"supersonic":3,"noddy":1}

In [13]: a["supersonic"]
Out[13]: 3

In [14]: a["supersonic"]=a["supersonic"]-1

In [15]: a["supersonic"]
Out[15]: 2

In [16]: a
Out[16]: {'monstro das bolachas': 1, 'noddy': 1, 'supersonic': 2} 

Neste caso já defini uma lista com números mas todos eles estão associados a uma palavra chave. Assim chamando esta "lista" pela sua palavra chave consigo mudar o número que a si está associado. No teu código todas a variáveis de cartas passariam a estar num mesmo objecto (no meu exemplo o "a").

A classe já necessita um pouco mais trabalho mas não é muito complicada de se perceber:

import random

class jogador:
   def __init__(self):
       self.cartas={"supersonic":0,"noddy":0,"monstro das bolachas":0}
       i=0       
       while i < 5:       
           r=random.randint(1,3)
           if r==1:
               self.cartas["supersonic"]=self.cartas["supersonic"]+1
           elif r==2:
               self.cartas["noddy"]=self.cartas["noddy"]+1
           else:
               self.cartas["monstro das bolachas"]=self.cartas["monstro das bolachas"]+1
           i=i+1

jogador1=jogador()
print jogador1.cartas["supersonic"],jogador1.cartas["noddy"],jogador1.cartas["monstro das bolachas"]
jogador2=jogador()
print jogador2.cartas["supersonic"],jogador2.cartas["noddy"],jogador2.cartas["monstro das bolachas"] 

O resultado do script que passei em cima foi:

1 2 2
1 0 4

Uma classe é construir um objecto. Um exemplo semelhante é ter a classe "carro". Agora a partir da classe "carro" posso chamar as "rodas" assim... "carro.rodas()". Se observares o exemplo de cima eu fiz uma classe (um objecto portanto) chamado jogador. Dentro da classe tenho uma função que inicializa tudo o que está lá dentro mal eu crie esse objecto. A primeira coisa que faz é um dicionário depois cria as cartas consoante o dicionário. Fora da classe chamei o objecto duas vezes, como tenho um gerador de números aleatórios dentro da classe deu-me dois resultados diferentes.

No teu exemplo tinhas mais cartas e possivelmente mais funções mas penso que este exemplo deverá servir para ter dar um bom impulso no teu código (imagina o que é fazeres isto com 2, 3 ou mais jogadores: em vez de desenhares o mesmo código para cada jogador simplesmente crias um novo objecto jogador para a mesma classe).

Espero ter ajudado. Abraço...

Share this post


Link to post
Share on other sites
icemonster2

Obrigado pela tua resposta.

Vou ver o que posso fazer e depois actualizo.

Só uma pergunta, vi num tutorial: (http://infog.casoft.info/?p=408) que o rapaz usava uma função .shuffle do módulo random (random.shuffle claro) percebi que ele usava a versao 2.7 ou 3 do python pois a minha versao: 1.5.2 dava um erro quanto tentava usar isso. Existe alguma maneira de usar essa função do random na versão 1.5.2?

Uso o komodo edit como interpretador e o cmd como output. Também tenho a versão 2.7 do python mas não a pus a funcionar á primeira no cmd xD por isso eu deixei-me com a 1.5.2. Deve ser preciso passar alguma coisa da Lib do 2.7 ou assim.

Abraços.

Share this post


Link to post
Share on other sites
tobias

Boas,

Grande resposta a do Pedro! :thumbsup:

Com-certeza ajudou muito.

Tá mesmo  a dar vontade de pegar já no python e fazer uma versão desse teu jogo  :P

É pena que não tenho agora muito tempo, mas vai continuando a postar actualizações aqui, para poder-mos ver como isso anda!

:P

Cumps,

Tobias Cintrão


Cumprimentos,Tobias Cintrão


"O que se pensa começa no que se ouve"
"Inspiração == Interrupção momentânea da estupidez"

Share this post


Link to post
Share on other sites
icemonster2

Estejam descansados. Vou continuar a postar.

Vou criar tipo um dicionário para as cartas do jogo e descobrir uma maneira para seleccionar aleatóriamente 7 ou 5 cartas desse dicionário. Isso e mais algumas ideias vai-me permitir retirar muitos "If's"

Share this post


Link to post
Share on other sites
Triton

A versão 1.5.2 é muito antiga. Usa a última versão do Python 3, já que estás a aprender, aprende a mais recente.

Agora em relação ao código, já te disseram muitas coisas relevantes. O próximo passo é aprendes a organizar e desenhar melhor o código. Uma das grandes diferenças de bons e maus programadores, é que os bons programadores sabem tornar o código modular, seja através de funções, classes, e dividir código em vários ficheiros, quando o projecto fica maior.

Portanto aconselho-te a aprenderes como usar funções e também estruturas de dados, como arrays, listas, etc.

http://www.swaroopch.com/notes/Python

Boa sorte.

Já agora, gosto de ver essa atitude, é mesmo assim, com críticas ao nosso código, que se aprende.


<3 life

Share this post


Link to post
Share on other sites
Smoon

quando à primeira dica sobre  switch/case não pensaste nisso?

Infelizmente python, pelo menos até à versão 2.7, nunca teve switch/case, ao contrário da maioria das linguagens de programação! A partir da v3.0 não sei...

O motivo é que tudo o que se faz com switch/case pode ser feito com else if (mas, não vice-versa, naturalmente).

[

por ex.

if n==0:
     print 'tem valor 0, etc...'
elif n==1:
     print 'tem valor 1, etc...'
elif n==2:
     print 'tem valor 2, etc...'

em C pode ser escrito com ifs/elses ou, alternativamente, com switch/case, pois estamos sempre a avaliar a mesma variável inteira n, assim seria:

switch (n) {
case 0:
     puts("tem valor 0, etc...");
     break;
case 1:
     puts("tem valor 1, etc...");
     break;
case 2:
     puts("tem valor 2, etc...");
     break;
default:
     break;
}

]

Boa sorte na programação desse jogo!

Share this post


Link to post
Share on other sites
Triton

O motivo é que tudo o que se faz com switch/case pode ser feito com else if (mas, não vice-versa, naturalmente).

Não, não pode. Normalmente um switch/case salta logo para o case da condição, enquanto com if/else tens de testar todas até encontrar a certa.


<3 life

Share this post


Link to post
Share on other sites
Toaki

Estejam descansados. Vou continuar a postar.

Vou criar tipo um dicionário para as cartas do jogo e descobrir uma maneira para seleccionar aleatóriamente 7 ou 5 cartas desse dicionário. Isso e mais algumas ideias vai-me permitir retirar muitos "If's"

Não me lembro do código puro e duro de python, mas lembro-me da lógica. Uma forma de escolher aleatoriamente 7 cartas de um dicionário ou array simples pode ser: imagina que tens 35 cartas no total, usas random para obter um número entre 1 e 35, depois com esse número chamas uma carta da list ou dicionário. Tudo isto dentro de uma função para ser mais económico, por exemplo (não sei se os códigos estão bem) no caso de uma list:

lista = [carta1, carta2, carta3]
def EscolherCarta ():
    nAletatorio = radom.randint(1, 35)
    Carta = lista[nAleatorio]
    return Carta

Não sei se o código estará bem mas em teoria a lógica funciona, é uma solução simples mas eficaz. Penso que o random para além do randint deve ter funções directas para listas ou dicionários, mas assim de cabeça não sei bem, pesquisa no google "python random list" e deves encontrar qualquer coisa. Se não me engano seria "Carta = random.choice(lista)" e já te escolhe uma carta aleatória directamente da list, mas não tenho a certeza.

Queres um dos melhores livros sobre este tema para dar os primeiros passos?

------> http://inventwithpython.com/IYOCGwP_book1.pdf

Eu aprendi a programar jogos e a usar python com esse livro. Basicamente o livro ensina a fazer uma dúzia de jogos com dificuldade progressiva e vai ensinando python passo a passo. Aconselho, experimenta e daqui a 2 semanas ou 3 fazes qualquer tipo de jogo com uma perna às costas  :)

Aconselho também o Pygame para fazeres jogos em 2D, antes de de olhares para o Tkinter olha primeiro para o Pygame e acho que não vais querer outra coisa (no livro que indiquei nos últimos capítulos ensina muito bem as bases do Pygame). Depois podes saltar para o Pyglet quando aprenderes a usar classes (faz o que o pygame faz mas de forma mais optimizada, eu experimentei por curiosidade), ai para além dos conceitos de 2D também exploras um pouco de openGL e ganhas mais experiência ainda (eu estou neste estágio lol). Quando te sentires pronto para dar o salto para o 3D começa pelo Panda3D e já terás pano para mangas para fazer imensos tipos de jogos. Tudo isto são librarys ou módulos para Python. Basta pesquisare no google pelos nomes (pygame, pyglet ou panda3d) e vais ter às páginas iniciais e encontras tutoriais pela net (o pyglet é o que tem menos tutoriais e é mais difícil para começar, já o pygame é o que aconselho juntamente com o livro que mencionei).

Como gostas deste tema pensei em partilhar um pouco do que me ajudou a aprender a programar alguns jogos (que ainda é muito muito pouco o que sei).

Tudo de bom, continua assim, com a tua idade já a programar assim tu vais dar grande :)

Share this post


Link to post
Share on other sites
icemonster2

Muito obrigado! Respondestes exactamente ás minhas perguntas, vou ver sobre esse tutorial.

Abraços.

Share this post


Link to post
Share on other sites
Smoon

Não, não pode. Normalmente um switch/case salta logo para o case da condição, enquanto com if/else tens de testar todas até encontrar a certa.

Um switch/case é mais rápido do que if/else devido a isso que referiste. No entanto, é facto que algumas linguagens não têm switch/case, como python, porque é dispensável: pode-se usar if/else, alternativamente, sempre que não exista switch/case.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. 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.