luislima 0 Report post Posted January 24, 2011 Boas , tenho o "mago" a funcionar ainda o básico mas a "versao utilizador vs PC" desta forma # MAGO , HUMANO vs COMPUTADOR import random print "Bem-Vindo" print "MAGO - HUMANO vs COMPUTADOR" numero = input ( "Qual o numero para o computador adivinhar ? (de 1 até 100) :") num_max=100 num_min=1 tentativas=0 resposta="n" while (resposta!= "s"): valor=random.randint (num_min,num_max) tentativas= tentativas + 1 print valor resposta=raw_input ("Acertei no número? (S/N)") if resposta != "s": x=raw_input("Introduza se o valor e maior ou menor que o pretendido. (</>)") if (x=="<"): num_max=valor-1 elif (x==">"): num_min=valor+1 else: print "ERRO! Digite < ou >" if ((resposta=="s") or (resposta=="S")) and tentativas==0: print "BOA, À PRIMEIRA!!!" else: print "Finalmente! Precisou de", tentativas , "tentativas!" Agora gostava de ter a versão contraria , ou seja , PC vs utilizador! Sei que deve ser uma coisa básica mas ainda sou mt noob no python! AJUDEEEEEM-MEEE PF Share this post Link to post Share on other sites
Localhost 3 Report post Posted January 24, 2011 Pedes um número ao utilizador, depois vais gerando números aleatórios (como fizeste na versão que apresentaste) e verificas se o número é igual ao que o utilizador introduziu. Qual é a complicação? Já agora, utiliza as tags code. here since 2009 Share this post Link to post Share on other sites
luislima 0 Report post Posted January 24, 2011 Agora quero que seja o computador a gerar um numero e o utilizador acertar. a versao que fiz era o utilizador dava o numero e o pc gerava random's ate acertar. E actualizando o valor min e max do random Share this post Link to post Share on other sites
AlexPnt 1 Report post Posted January 24, 2011 Boas, nesse caso o computador gera um numero e guarda-o, depois o utilizador está constantemente a adivinhar valores até q o valor seja igual ao valor gerado pelo pc, algo como: import random print "Bem-Vindo" print "MAGO - COMPUTADOR vs HUMANO" num_max=100 num_min=1 tentativas=0 valor=random.randint (num_min,num_max) adivinha=input('Adivinha no numero que estou a pensar...=') while adivinha!=valor: tentativas= tentativas + 1 print 'Hmm, tente outra vez..' if adivinha<valor: print 'Uma pista, o numero e maior que esse...\n' elif adivinha>valor: print 'Uma pista, o numero e menor que esse...\n' adivinha=input('Adivinha no numero que estou a pensar...=') if adivinha==valor and tentativas==0: print "BOA, À PRIMEIRA!!!" else: print "Finalmente! Precisou de", tentativas , "tentativas!" Diverte-te e espero ter ajudado.. Programming is an art form that fights back. Share this post Link to post Share on other sites
luislima 0 Report post Posted January 24, 2011 OBRIGADOOOO ! TUDO A FUNCIONAR PARA JÁ. MT OBRIGADO Share this post Link to post Share on other sites
luislima 0 Report post Posted January 26, 2011 Boas , tenho agora o meu programa das 2 versoes . # MAGO , HUMANO vs COMPUTADOR # MAGO , COMPUTADOR VS HUMANO import random print "Bem-Vindo" print "MAGO - HUMANO vs COMPUTADOR" print "MAGO - COMPUTADOR vs HUMANO" while True: opcao = input ("Pretende executar a versao humano vs pc(1) ou pc vs humano(2)") if opcao==1: numero = input ( "Qual o numero para o computador adivinhar ? (de 1 até 100) :") num_max=100 num_min=1 tentativas=0 resposta="n" while (resposta!= "s"): valor=random.randint (num_min,num_max) tentativas= tentativas + 1 print valor resposta=raw_input ("Acertei no número? (S/N)") if resposta != "s": x=raw_input("Introduza se o valor e maior ou menor que o pretendido. (</>)") if (x=="<"): num_max=valor-1 elif (x==">"): num_min=valor+1 else: print "ERRO! Digite < ou >" if ((resposta=="s") or (resposta=="S")) and tentativas==0: print "BOA, À PRIMEIRA!!!" else: print "Finalmente! Precisou de", tentativas , "tentativas!" resultado=raw_input ("Pretende executar novamente? S-sim e N-nao") if (resultado=="n"): break; elif opcao==2: num_max=100 num_min=1 tentativas=1 valor=random.randint (num_min,num_max) adivinha=input('Adivinha no numero que estou a pensar...=') while adivinha!=valor: tentativas= tentativas + 1 print 'Hmm, tente outra vez..' if adivinha<valor: print 'Uma pista, o numero e maior que esse...\n' elif adivinha>valor: print 'Uma pista, o numero e menor que esse...\n' adivinha=input('Adivinha no numero que estou a pensar...=') if adivinha==valor and tentativas==0: print "BOA, À PRIMEIRA!!!" if (resultado=="n"): break; else: print "Finalmente! Precisou de", tentativas , "tentativas!" else: print "ERRO!Digite 1 para a versão humano vs pc ou 2 pc vs humano" resultado=raw_input ("Pretende executar novamente? S-sim e N-nao") if (resultado=="n"): break; Agora gostaria de o personalizar ou com niveis ou com scores! Alguem me pode ajudar? Share this post Link to post Share on other sites
AlexPnt 1 Report post Posted January 26, 2011 Hmm, uma sugestão: Para o score podias estabelecer uma relação entre o número de tentativas gastas e um conjunto de pontos, por exemplo: 1 tentativa-100 pontos, 2-5 tentativas-50 pontos, etc (para isto um conjunto de decisoes resolve problema) Claro que depois podias criar uma função que incorporasse todo o código feito, e outra complementar que corria constantemente a função anterior e de acordo com o progresso da pontuação(score) ia incrementando níveis( por exemplo, quando a pontuação fosse 150 passava para o nível2, quando fosse maior 300 passava para o nivel 3, quando fosse 500 para o nivel 4, etc....) E se quisesses criar níveis de dificuldade, a única diferença seria que o aumento dos níveis seria mais lento(por exemplo, em vez de passar para o nivel 2 em 150 passava só em 300,etc,...) E prontos aqui está uma ideia, .... Boa sorte Programming is an art form that fights back. Share this post Link to post Share on other sites
luislima 0 Report post Posted January 27, 2011 aí está uma grande ideia! mas como disse sou muito noob ainda no python! nao faço a minima ideia como fazer isso! La vou eu "googlar" pra ver se la vou. Entretanto se alguem me poder ajudar nisso e mudar a interface grafica deste programita agradeço imenso! 😳 Obrigado! Share this post Link to post Share on other sites
luislima 0 Report post Posted January 28, 2011 Boas ... andei para aqui a inventar e fiz uma janela inicial from Tkinter import * class Janela: def __init__(self,toplevel): self.frame=Frame(toplevel) self.frame.pack() self.frame2=Frame(toplevel) self.frame2.pack() self.titulo=Label(self.frame,text='Bem Vindo\n MAGO', font=('Verdana','13','bold')) self.titulo.pack() self.msg=Label(self.frame,width=40,height=6, text = 'Escolha a versão que pretende executar') self.msg.focus_force() self.msg.pack() # Definindo o botão 1 self.b01=Button(self.frame2,text='MAGO - HUMANO vs COMPUTADOR') self.b01['padx'],self.b01['pady'] = 10, 5 self.b01['bg']='deepskyblue' self.b01.bind("<Return>",self.keypress01) self.b01.bind("<Any-Button>",self.button01) self.b01.bind("<FocusIn>",self.fin01) self.b01.bind("<FocusOut>",self.fout01) self.b01['relief']=RIDGE self.b01.pack(side=LEFT) # Definindo o botão 2 self.b02=Button(self.frame2,text='MAGO - COMPUTADOR vs HUMANO ') self.b02['padx'],self.b02['pady'] = 10, 5 self.b02['bg']='deepskyblue' self.b02.bind("<Return>",self.keypress02) self.b02.bind("<Any-Button>",self.button02) self.b02.bind("<FocusIn>",self.fin02) self.b02.bind("<FocusOut>",self.fout02) self.b02['relief']=RIDGE self.b02.pack(side=LEFT) # Definindo o botão 3 self.b03=Button(self.frame2,text='SAIR') self.b03['padx'],self.b03['pady'] = 10, 5 self.b03['bg']='deepskyblue' self.b03.bind("<Return>",self.keypress03) self.b03.bind("<Any-Button>",self.button03) self.b03.bind("<FocusIn>",self.fin03) self.b03.bind("<FocusOut>",self.fout03) self.b03['relief']=RIDGE self.b03.pack(side=LEFT) def keypress01(self,event): self.msg['text']='ENTER sobre o Botão 1' def keypress02(self,event): self.msg['text']='ENTER sobre o Botão 2' def keypress03(self,event): self.msg['text']='ENTER sobre o Botão 3' def button01(self,event): self.msg['text']='MAGO - HUMANO vs COMPUTADOR' def button02(self,event): self.msg['text']='MAGO - COMPUTADOR vs HUMANO' def button03(self,event): self.msg['text']='Sair' def fin01(self,event): self.b01['relief']=FLAT def fout01(self,event): self.b01['relief']=RIDGE def fin02(self,event): self.b02['relief']=FLAT def fout02(self,event): self.b02['relief']=RIDGE def fin03(self,event): self.b03['relief']=FLAT def fout03(self,event): self.b03['relief']=RIDGE raiz=Tk() Janela(raiz) raiz.mainloop() e agora queria colocar o meu codigo do programa a executar dentro dessa janela e com o mesmo aspecto # MAGO , HUMANO vs COMPUTADOR # MAGO , COMPUTADOR VS HUMANO import random print "Bem-Vindo" print "MAGO - HUMANO vs COMPUTADOR" print "MAGO - COMPUTADOR vs HUMANO" while True: opcao = input ("Pretende executar a versao HUMANO vs PC(1) ou PC vs HUMANO(2)") if opcao==1: numero = input ( "Qual o numero para o computador adivinhar ? (de 1 até 100) :") num_max=100 num_min=1 tentativas=0 resposta="n" while (resposta!= "s"): valor=random.randint (num_min,num_max) tentativas= tentativas + 1 print valor resposta=raw_input ("Acertei no número? (S/N)") if resposta != "s": x=raw_input("Introduza se o valor e maior ou menor que o pretendido. (</>)") if (x=="<"): num_max=valor-1 elif (x==">"): num_min=valor+1 else: print "ERRO! Digite < ou >" if ((resposta=="s") or (resposta=="S")) and tentativas==0: print "BOA, À PRIMEIRA!!!" else: print "Finalmente! Precisou de", tentativas , "tentativas!" resultado=raw_input ("Pretende executar novamente? S-sim e N-nao") if (resultado=="n"): break; elif opcao==2: num_max=100 num_min=1 tentativas=1 valor=random.randint (num_min,num_max) adivinha=input('Adivinha no numero que estou a pensar...=') while adivinha!=valor: tentativas= tentativas + 1 print 'Hmm, tente outra vez..' if adivinha<valor: print 'Uma pista, o numero e maior que esse...\n' elif adivinha>valor: print 'Uma pista, o numero e menor que esse...\n' adivinha=input('Adivinha no numero que estou a pensar...=') if adivinha==valor and tentativas==0: print "BOA, À PRIMEIRA!!!" if (resultado=="n"): break; else: print "Finalmente! Precisou de", tentativas , "tentativas!" resultado=raw_input ("Pretende executar novamente? S-sim e N-nao") if (resultado=="n"): break; else: print "ERRO!Digite 1 para a versão HUMANO vs PC ou 2 PC vs HUMANO" alguem me pode dar uma ajudinha? Share this post Link to post Share on other sites
AlexPnt 1 Report post Posted January 29, 2011 Boas aqui está um codigo, mais simples do que aquele que colocaste, dando para perceber melhor. Basicamente , está será a estrutura principal do programa, ou seja tens uma função que cria a interface, e depois para cada um dos botões, existe uma função complementar que executa o pedido. Por exemplo, import random from Tkinter import * import tkFileDialog, tkSimpleDialog,Tkinter def exemplo(): cor=tkSimpleDialog.askstring('Ok','Um exemplo') class janela(): janel=Tk()#criação do objecto do tipo Tkinter frame=Frame().pack() titulo=Label(frame,text='Bem Vindo\n MAGO',font=('Verdana','13','bold')) titulo.pack() msg=Label(frame,width=40,height=6,text = 'Escolha a versao que pretende executar') msg.focus_force() msg.pack() botao1=Button(frame, text='MAGO - HUMANO vs COMPUTADOR',command=exemplo).pack(side=LEFT) botao2=Button(frame, text='MAGO - COMPUTADOR vs HUMANO').pack(side=LEFT) botao3=Button(frame, text='SAIR').pack(side=LEFT) janel.mainloop() janela() Programming is an art form that fights back. Share this post Link to post Share on other sites
luislima 0 Report post Posted January 31, 2011 import random from Tkinter import * import tkFileDialog, tkSimpleDialog,Tkinter def exemplo(): cor=tkSimpleDialog.askstring('Ok','Um exemplo') janela() Sim , era mesmo isso que queria , mas com este exemplo aparece uma caixa de texto e nao é bem isso que queria. Quero que execute o meu codigo do programa. Ja andei aqui a marrar e nada :s Alguem me consegue ajudar? Share this post Link to post Share on other sites
luislima 0 Report post Posted February 2, 2011 HELLLLLLLLP :s Share this post Link to post Share on other sites
luislima 0 Report post Posted February 8, 2011 def HvsCButtonPressed(): num_max=100 num_min=1 def menor(): global tentativas num_max=varTentativa.set(tentativas) tentativas = randint(num_min,num_max) varTentativa.set(tentativas) def maior(): global tentativas num_min=varTentativa.set(tentativas) tentativas = randint(num_min,num_max) varTentativa.set(tentativas) def okButtonPressed(): #Botao menor menorButton = Button(tkRodapeFrame, text="<", command=menor) menorButton.pack( side = LEFT) #Botao maior maiorButton = Button(tkRodapeFrame, text=">", command=maior) maiorButton.pack( side = LEFT) global tentativas tentativas = randint(num_min,num_max) varTentativa.set(tentativas) #Label do meio com pergunta numeroLabel = Label(tkBottomFrame, text="Qual o numero para o computador adivinhar?") numeroLabel.pack( side = LEFT) #Caixa de texto entryLabel = Entry(tkBottomFrame, bd =5) entryLabel.pack(side = LEFT) #Botao ok okButton = Button(tkBottomFrame, text="OK!", command=okButtonPressed) okButton.pack( side = LEFT) tenho aqui já com ambiente gráfico (Tkinter) a versão Humano vs PC . A minha duvida é a seguinte. aparece a caixa de testo em que eu coloco o numero para o computador adivinhar seguido de um botão de OK. quando carrego nele o pc gera um numero aleatório entre o num_max e o num_min. seguido aparece um botão de < e > , e aí surge a minha duvida. qdo carregar nos botões quero actualizar as variáveis num_max e num_min para "balizar" o random do Pc. Alguém me consegue ajudar? Share this post Link to post Share on other sites
luislima 0 Report post Posted February 8, 2011 AH e deixo aqui o meu programa todo para uma mais "facil" leitura, porque acho que com o excerto que coloquei em cima não vai ser possível perceber o programa todo from Tkinter import * from random import * tentativas=0 def sairButtonPressed(): exit() def CvsHButtonPressed(): num_max=100 num_min=1 valor=randint(num_min,num_max) def attemptButtonPressed(): global tentativas tentativas = tentativas +1 if (valor>int(entryLabel.get())): varMiddle.set("O numero é maior") num_max = valor elif (valor<int(entryLabel.get())): varMiddle.set("O numero é menor") num_min = valor else: varMiddle.set("Parabéns, acertou! Precisou de "+ str(tentativas)+" tentativas") #Label do meio com pergunta numeroLabel = Label(tkBottomFrame, text="Numero a adivinhar?") numeroLabel.pack( side = LEFT) #Caixa de texto entryLabel = Entry(tkBottomFrame, bd =5) entryLabel.pack(side = LEFT) #Botao tentativa de numero numberButton = Button(tkBottomFrame, text="Tentar!", command=attemptButtonPressed) numberButton.pack( side = LEFT) def HvsCButtonPressed(): num_max=100 num_min=1 def menor(): global tentativas num_max=varTentativa.set(tentativas) tentativas = randint(num_min,num_max) varTentativa.set(tentativas) def maior(): global tentativas num_min=varTentativa.set(tentativas) tentativas = randint(num_min,num_max) varTentativa.set(tentativas) def okButtonPressed(): #Botao menor menorButton = Button(tkRodapeFrame, text="<", command=menor) menorButton.pack( side = LEFT) #Botao maior maiorButton = Button(tkRodapeFrame, text=">", command=maior) maiorButton.pack( side = LEFT) global tentativas tentativas = randint(num_min,num_max) varTentativa.set(tentativas) #Label do meio com pergunta numeroLabel = Label(tkBottomFrame, text="Qual o numero para o computador adivinhar?") numeroLabel.pack( side = LEFT) #Caixa de texto entryLabel = Entry(tkBottomFrame, bd =5) entryLabel.pack(side = LEFT) #Botao ok okButton = Button(tkBottomFrame, text="OK!", command=okButtonPressed) okButton.pack( side = LEFT) root = Tk() #Frame de cima tkTopFrame = Frame(root) tkTopFrame.pack() #Frame do meio tkMiddleFrame = Frame(root) tkMiddleFrame.pack() #Frame de baixo tkBottomFrame = Frame(root) tkBottomFrame.pack() #Frame de "Rodape" tkRodapeFrame = Frame(root) tkRodapeFrame.pack() #Label da frame de cima varTop = StringVar() topFrameLabel = Label( tkTopFrame, textvariable=varTop) topFrameLabel.pack() varTop.set("Bem-Vindo! \n Mago") #Label da frame do meio varMiddle = StringVar() middleFrameLabel = Label( tkMiddleFrame, textvariable=varMiddle) middleFrameLabel.pack() varMiddle.set("Aguardo tentativa..") #Label do rodape varTentativa = IntVar() varTentativa.set("") rodapeLabel = Label(tkRodapeFrame, textvariable=varTentativa) rodapeLabel.pack( side = LEFT) #Label do meio com pergunta nameLabel = Label(tkTopFrame, text="Que versão pretende executar?") nameLabel.pack( side = LEFT) #Botao sair sairButton = Button(tkTopFrame, text="Sair!", command=sairButtonPressed) sairButton.pack( side = RIGHT) #Botao Utilizador vs Computador nameButton = Button(tkTopFrame, text="Utilizador vs Computador", command=HvsCButtonPressed) nameButton.pack( side = RIGHT) #Botao Computador vs Utilizador nameButton = Button(tkTopFrame, text="Computador vs Utilizador", command=CvsHButtonPressed) nameButton.pack( side = RIGHT) root.mainloop() Share this post Link to post Share on other sites