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

Entradas más populares de este blog

Ejercicios en PyCharm

1.1 Aplicaciones gráficas por computadora.

Ensayo de lenguaje ensamblador