Juego ahorcado
Este proyecto fue en colaboración con Cynthia Lizeth Barron Morales su blog y su servidor Alfredo De Jesus Santos Gutierrez.
Como proyecto final una interfaz de un juego , a continuación nosotros realizamos el ahorcado , al cual le agregamos imágenes , música y archivo de texto, desde carpetas.
Las carpetas las pueden descargar del siguiente link: Interfaz juego
Anteriormente habíamos hecho este juego por consola, hoy lo tratamos de llevar a una interfaz, a continuación esta el código, y una captura de como es la interfaz.
Codigo:
# -*- coding: utf-8 -*- from Tkinter import * import Tkinter as tk import pygame from PIL import Image,ImageTk import os import tkMessageBox import random from random import randint global lab dir = os.path.dirname(__file__) fotos = dir + '/imgjuego/' Sonidos=dir+"/sonjuego/" vidas = 7 letrasAcertadas = 0 def colocarLetras(): x = 50 y = 150 contador = 0 Label(juegoFrame,text = "Letras sin usar",font=("verdana",24),bg="#%02x%02x%02x" % (255, 188, 206)).place(x=50,y=100) for i in range(26): contador+=1 letrasLabel[i].place(x=x,y=y) letrasLabel[i].config(bg="#%02x%02x%02x" % (255, 188, 206)) x+=30 if contador==5: y+=35 contador=0 x=50 def ocultar(ventana): ventana.withdraw() def leerinstrucciones(): v1 = Toplevel(juegoFrame) # VENTANA HIJA v1.title("Ventana hija") v1.protocol('wn_DELETE_WINDOW', "onexit") # SE CIERRE CON LA CRUZ LA VENTANA v1.geometry('700x200') # tamaño de la ventana v1.config(bg="#%02x%02x%02x" % (39, 170, 252)) LabelInstruccion1 = Label(v1, text="Bienvenido al juego del ahorcado. \n" "El juego del ahorcado, anteriormente se jugaba a lapiz y papel" "\nCrees que eres lo suficientemente bueno en adivinar y usar estrategias para esto, bueno pues " "\n juguemos, pero antes te dare las reglas, tienes solo 7 intentos, como en el tradicional, cada " "\n que te equivoques al ingresar una letra estas a una vida menos de perder, las palabras son " "\n elegidas aleatoriamente, asi que no esperes adivinar tan facil, pero si eres bueno sera pan " "\ncomido, y para no ser tan malo, recuerda que no hay palabras sin las vocales " "\n SUERTE !!!", bg="white", font=("Arial", 10)).pack(padx=10, pady=10) Aceptar = Button(v1, text="Aceptar", bg="red", command=lambda: ocultar(v1)) Aceptar.pack() letrasusadas=[] def probarLetraFuncion(): global fotos, img, lab global vidas global letrasAcertadas letrasusadas.append(letraObtenida.get()) print (letrasusadas) letrasLabel[ord(letraObtenida.get())-97].config(text="",bg="#%02x%02x%02x" % (255, 188, 206)) if letraObtenida.get() in palabra: if palabra.count(letraObtenida.get())>1: letrasAcertadas+=palabra.count(letraObtenida.get()) for i in range(len(palabra)): if palabra[i]==letraObtenida.get(): guiones[i].config(text=""+letraObtenida.get()) else: letrasAcertadas+=1 guiones[palabra.index(letraObtenida.get())].config(text=""+letraObtenida.get()) if letrasAcertadas == len(palabra): tkMessageBox.showwarning(title="victoria",message="Felicidades has ganado") else: vidas-=1 if vidas < 7: if vidas == 6: print "inicio imagen" arreglo = [1] eleccion_aleatoria = str(arreglo.index(random.choice(arreglo))) figura = fotos + eleccion_aleatoria + '.png' print "inicio imagen" img = Image.open(figura) # abrir archivo figura tkimage = ImageTk.PhotoImage(img) lab1 = Label(juegoFrame, image=tkimage) lab1.pack() lab1.place(x=500, y=100) elif vidas == 5: arreglo = [1] eleccion_aleatoria = str(arreglo.index(random.choice(arreglo)) + 1) figura = fotos + eleccion_aleatoria + '.png' print "inicio imagen" img = Image.open(figura) # abrir archivo figura tkimage = ImageTk.PhotoImage(img) lab = Label(juegoFrame, image=tkimage) lab.pack() lab.place(x=500, y=100) print "fin imagen" elif vidas == 4: arreglo = [1] eleccion_aleatoria = str(arreglo.index(random.choice(arreglo)) + 2) figura = fotos + eleccion_aleatoria + '.png' print "inicio imagen" img = Image.open(figura) # abrir archivo figura tkimage = ImageTk.PhotoImage(img) lab = Label(juegoFrame, image=tkimage) lab.pack() lab.place(x=500, y=100) print "fin imagen" elif vidas == 3: arreglo = [1] eleccion_aleatoria = str(arreglo.index(random.choice(arreglo)) + 3) figura = fotos + eleccion_aleatoria + '.png' print "inicio imagen" img = Image.open(figura) # abrir archivo figura tkimage = ImageTk.PhotoImage(img) lab = Label(juegoFrame, image=tkimage) lab.pack() lab.place(x=500, y=100) print "fin imagen" elif vidas == 2: arreglo = [1] eleccion_aleatoria = str(arreglo.index(random.choice(arreglo)) + 4) figura = fotos + eleccion_aleatoria + '.png' print "inicio imagen" img = Image.open(figura) # abrir archivo figura tkimage = ImageTk.PhotoImage(img) lab = Label(juegoFrame, image=tkimage) lab.pack() lab.place(x=500, y=100) print "fin imagen" elif vidas == 1: arreglo = [1] eleccion_aleatoria = str(arreglo.index(random.choice(arreglo)) + 5) figura = fotos + eleccion_aleatoria + '.png' print "inicio imagen" img = Image.open(figura) # abrir archivo figura tkimage = ImageTk.PhotoImage(img) lab = Label(juegoFrame, image=tkimage) lab.pack() lab.place(x=500, y=100) print "fin imagen" elif vidas == 0: arreglo = [1] eleccion_aleatoria = str(arreglo.index(random.choice(arreglo)) + 6) figura = fotos + eleccion_aleatoria + '.png' print "inicio imagen" img = Image.open(figura) # abrir archivo figura tkimage = ImageTk.PhotoImage(img) lab = Label(juegoFrame, image=tkimage) lab.pack() lab.place(x=500, y=100) print "fin imagen" if vidas != 0: tkMessageBox.showwarning(title="Error", message="la letra no coincide") elif vidas == 0: tkMessageBox.showwarning(title="Derrota",message="Se te han acabado las vidas") raiz = Tk() raiz.iconbitmap("game.ico") archivo = open("palabras.txt","r") conjuntoPalabras = list(archivo.read().split("\n")) palabra= conjuntoPalabras[randint(0,len(conjuntoPalabras)-1)].lower() letraObtenida = StringVar() #variable raiz.resizable(0, 0) raiz.config(bg="#%02x%02x%02x" % (237, 28, 36),bd=10,relief="groove") raiz.title("El ahorcado") juegoFrame = Frame(raiz) juegoFrame.pack(fill="x") juegoFrame.config(bg="#%02x%02x%02x" % (255, 188, 206),bd=15,relief="sunken",cursor="hand2",width="1000", height="600") juegoFrame.grid_propagate(False) e1=Label(juegoFrame,text="Introduce una letra: ",font=("verdana",24),bg="#%02x%02x%02x" % (255, 188, 206)) e1.grid(row=0, column=0, padx=10, pady=10) letra = Entry(juegoFrame,width=1,font=("verdana",24), textvariable=letraObtenida) letra.grid(row=0, column=1, padx=10, pady=10) probarletra = Button(juegoFrame,text="Probar",bg="yellow",command=probarLetraFuncion) probarletra.grid(row=1, column=0, padx=10, pady=10) Instrucciones = Button(juegoFrame, text="Instrucciones", bg="#%02x%02x%02x" % (39, 170, 252), command=leerinstrucciones) Instrucciones.grid(row=0, column=4, sticky="w", padx="15") letrasLabel = [Label(juegoFrame,text=chr(j+97),font=("verdana",20))for j in range(26)] colocarLetras() arreglo=[1] eleccion_aleatoria= str(arreglo.index(random.choice(arreglo))+7) figura = fotos + eleccion_aleatoria + '.png' print "inicio imagen" img = Image.open(figura) #abrir archivo figura tkimage= ImageTk.PhotoImage(img) lab = Label(juegoFrame, image=tkimage) lab.pack() lab.place(x=500,y=100) print "fin imagen" print "inicio sonido" # Para Reproducir sonido sonido = Sonidos + eleccion_aleatoria + ".mp3" # obtengo la ruta del sonido correspondiente pygame.mixer.init() pygame.mixer.music.load(sonido) # Abre el archivo pygame.mixer.music.play() # Reproduce sonido guiones = [Label(juegoFrame,text="_",font=("verdana",30),bg="#%02x%02x%02x" % (255, 188, 206)) for _ in palabra] inicialX=200 for i in range(len(palabra)): guiones[i].place(x=inicialX,y=500) inicialX+=50 raiz.mainloop() pygame.init()
Captura de la interfaz
Comentarios
Publicar un comentario