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