Programas con interfaz de la clase(Aportación compañeros)


Video:

# -*- coding: utf-8 -*-

import sys
import random

if sys.version_info < (3, 0):
    from Tkinter import Tk, Label, Radiobutton, PhotoImage, IntVar
    import tkMessageBox as messagebox
else:
    from tkinter import Tk, Label, Radiobutton, PhotoImage, IntVar
    from tkinter import messagebox


class JuegoChozas:
    def __init__(self, parent):
        self.imagen_fondo = PhotoImage(file="Jungle_small_2.gif")
        self.imagen_choza = PhotoImage(file="Hut_small_2.gif")

        self.ancho_choza = 60
        self.alto_choza = 140
        self.container = parent

        self.Chozas = []
        self.result = ""

        self.ocupar_chozas()

        self.setup()

    def ocupar_chozas(self):
        ocupantes = ['enemigo', 'amigo', 'vacia']
        while len(self.Chozas) < 5:
            computer_choice = random.choice(ocupantes)
            self.Chozas.append(computer_choice)
        print("Los ocupantes de las chozas son:", self.Chozas)

    def entrar_choza(self, numero_choza):
        print("Entrando en la choza #:", numero_choza)
        ocupante_choza = self.Chozas[numero_choza - 1]
        print("El ocupante de la choza es: ", ocupante_choza)

        if ocupante_choza == 'enemigo':
            self.result = "Enemigo visto en la choza # %d \n\n" % numero_choza
            self.result += "Has perdido :( Mucha suerte la próxima vez!"
        elif ocupante_choza == 'vacia':
            self.result = "La Choza # %d está vacia\n\n" % numero_choza
            self.result += "Enhorabuena! Has ganado!!!"
        else:
            self.result = "Amigo visto en la choza # %d \n\n" % numero_choza
            self.result += "Enhorabuena! Has ganado!!!"

        self.anunciar_ganador(self.result)

    def crear_widgets(self):

        self.var = IntVar()
        self.background_label = Label(self.container,
                                      image=self.imagen_fondo)
        txt = "Selecciona una choza en la que entrar. Ganarás si:\n"
        txt += "La choza está vacia o si su ocupante es tu aliado, de lo contrario morirás"
        self.info_label = Label(self.container, text=txt, bg='white')
        # Creamos un dicionario con las opciones para las imagenes de las chozas
        r_btn_config = {'variable': self.var,
                        'bg': '#8AA54C',
                        'activebackground': 'green',
                        'image': self.imagen_choza,
                        'height': self.alto_choza,
                        'width': self.ancho_choza,
                        'command': self.radio_btn_pressed}

        self.r1 = Radiobutton(self.container, r_btn_config, value=1)
        self.r2 = Radiobutton(self.container, r_btn_config, value=2)
        self.r3 = Radiobutton(self.container, r_btn_config, value=3)
        self.r4 = Radiobutton(self.container, r_btn_config, value=4)
        self.r5 = Radiobutton(self.container, r_btn_config, value=5)

    def setup(self):
        self.crear_widgets()
        self.setup_layout()

    def setup_layout(self):
        self.container.grid_rowconfigure(1, weight=1)
        self.container.grid_columnconfigure(0, weight=1)
        self.container.grid_columnconfigure(4, weight=1)
        self.background_label.place(x=0, y=0, relwidth=1, relheight=1)
        self.info_label.grid(row=0, column=0, columnspan=5, sticky='nsew')
        self.r1.grid(row=1, column=0)
        self.r2.grid(row=1, column=2)
        self.r3.grid(row=1, column=4)
        self.r4.grid(row=4, column=2)
        self.r5.grid(row=4, column=0)

    def anunciar_ganador(self, data):
        messagebox.showinfo("¡Atención!", message=data)

    # Handle Events
    def radio_btn_pressed(self):
        self.entrar_choza(self.var.get())


if __name__ == "__main__":
    mainwin = Tk()
    WIDTH = 1280
    HEIGHT = 700
    mainwin.geometry("%sx%s" % (WIDTH, HEIGHT))
    mainwin.resizable(0, 0)
    mainwin.title("Ataca a los orcos V 2.0.0 - El Videojuego")
    game_app = JuegoChozas(mainwin)



Loteria:
import os #libreria para obtener ruta de direcciones en carpetas
import random #para generar numeros aleatorios
import threading #libreria para manejar hilos
from Tkinter import * #GUI,Botones,label,menu,entry,tk,frame,etc
import PIL
from PIL import Image, ImageTk #libreria para tratar imagenes,PNG
import time #para tiempos o dormir o espera o wait o segundos
import pygame #para juegos en 2D y en 3D

"""Variables globales"""
imagen = 0
stop = 0
dir = os.path.dirname(__file__)
Ccartas = dir + "/Cartas/"  # establece la ruta hacia las imagenes de cartas
Csonido = dir + "/Sonidos/"  # establece la ruta hacia los sonidos
play = 1
"""--------------------------------------------------------"""


def setimagen(nombre, x, y):  # carga la imagen
    global imagen  # Declaro el uso de una variable global
    img = Image.open(nombre)  # cargo la imagen mandada como parametro
    img.thumbnail((x, y), Image.ANTIALIAS)  # establezco sus dimensiones y la propiedad antialiasado
    imagen = ImageTk.PhotoImage(img)  # la convierto a un formato soportado por los widgets de tkinter
    return imagen  # retorno el objeto con la imagen


def play():
    global stop, play, TBoton  # Declaro el uso de las variables stop y play
    """play: sirve para controlar la pulsasion del boton, si se pulsa una vez el boton jugar en pantalla deberia iniciar el juego
    pero si se vuelve a pulsar deberia detenerse y dado que se usa el mismo boton para ambas acciones la uso para controlar las acciones
    stop: se usa para controlar el hilo de ejecucion declarado, si stop vale 1 debera terminar el hilo, si vale 0 debera continuar hasta que se le indique"""
    if play == 1:
        TBoton.set("Pausar")
        t = threading.Thread(target=hilo)
        t.start()
        stop = 0  # El hilo continua con normalidad
        play = 0  # La proxima vez que se pulse el boton debera entrar en el else
    else:
        TBoton.set("Jugar")
        play = 1  # La proxima vez que se pulse el boton debera entrar en el if
        stop = 1  # Se detiene el hilo


def reproducirsonido(nombre):
    pygame.mixer.music.load(nombre)
    pygame.mixer.music.play()


def hilo():
    global tiempo, cartas, Limagen, stop, Tetiqueta, spin
    cartas = ["EL GALLO", "EL DIABLITO", "LA DAMA", "EL CATRIN", "EL PARAGUAS", "LA SIRENA", "LA ESCALERA",
              "LA BOTELLA", "EL BARRIL", "EL ARBOL", "EL MELON",
              "EL VALIENTE", "EL GORRITO", "LA MUERTE", "LA PERA", "LA BANDERA", "EL BANDOLON", "EL VIOLINCELLO",
              "LA GARZA", "EL PAJARO", "LA MANO", "LA BOTA",
              "LA LUNA", "EL COTORRO", "EL BORRACHO", "EL NEGRITO", "EL CORAZON", "LA SANDIA", "EL TAMBOR",
              "EL CAMARON", "LAS JARAS", "EL MUSICO", "LA ARANA",
              "EL SOLDADO", "LA ESTRELLA", "EL CAZO", "EL MUNDO", "EL APACHE", "EL NOPAL", "EL ALACRAN", "LA ROSA",
              "LA CALAVERA", "LA CAMPANA", "EL CANTARITO",
              "EL VENADO", "EL SOL", "LA CORONA", "LA CHALUPA", "EL PINO", "EL PESCADO", "LA PALMA", "LA MACETA",
              "EL ARPA", "LA RANA"]

    # tiempo=time*1000
    x = 0
    reproducirsonido(Csonido + "inicio.ogg")
    time.sleep(3)
    while True:
        nombre = str(cartas.index(random.choice(cartas)) + 1)
        carta = Ccartas + nombre + ".png"
        Limagen.config(image=setimagen(carta, 400, 400))
        Tetiqueta.set("Salio: " + cartas[int(nombre) - 1])
        sonido = Csonido + "s_(" + nombre + ").ogg"
        reproducirsonido(sonido)
        time.sleep(float(spin.get()))
        x = x + 1
        if stop == 1:
            break


ventana = Tk()#Creamos un objeto ventana Tk()
ventana.config(bg="gray")#con config y Bg es el fondo con color
contenedor = Frame(ventana, width=700, height=700) #poner un frame arriba del marco de la ventana
contenedor.pack()#cargar ventana y frame

Etitulo = Label(contenedor, text="Loteria Mexicana", font=("Fixedsys", 40, "bold")).place(x=120, y=20)

Etiempo = Label(contenedor, text="Tiempo entre cartas: ", font=("Arial", 12, "bold"))
Etiempo.place(x=130, y=100)

spin = Spinbox(contenedor, values=[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], font=("Arial", 12, "bold"))
spin.place(x=295, y=101)

Limagen = Label(contenedor)
Limagen.place(x=300, y=180)

TBoton = StringVar()
TBoton.set("Jugar")

Bplay = Button(contenedor, textvariable=TBoton, command=play)
Bplay.place(x=500, y=98)

Tetiqueta = StringVar()

Enombre = Label(contenedor, textvariable=Tetiqueta, font=("Arial", 40, "bold"))
Enombre.place(x=80, y=400)
pygame.init()
ventana.mainloop()






Numero Aleatorio:
from Tkinter import *
from random import *
import random
import tkMessageBox

intentos =0
aux=0

def inicio_jugar():

    arr = [1, 2, 3, 4, 5]
    global intentos
    intentos = random.choice(arr)
    global num
    num = randint(1, 5)

    nom=entrada1.get()

    et1=Label(contenedor,text="Hola "+nom+" estoy pensando en un numero entre 1 y 5, crees poder adivinarlo?",font=("Times New Roman",15)).place(x=0,y=147)
    et2=Label(contenedor,text="La suerte va a decir el numero de intentos que tienes",font=("Times New Roman",15)).place(x=0,y=207)

    et3=Label(contenedor,text="Tienes "+str(intentos)+" intentos",font=("Times New Roman",15)).place(x=90,y=267)
    parte_2()

def parte_2():
    et4 = Label(contenedor, text="Intenta adivinar: ", font=("Times New Roman", 15)).place(x=90, y=337)
    global entrada2
    entrada2= StringVar()
    objentrada2 = Entry(contenedor, textvariable=entrada2).place(x=242, y=342)

    b2 = StringVar()
    b2.set("Verificar respuesta")
    bgame2 = Button(contenedor, textvariable=b2, command=verificar).place(x=380, y=340)

def verificar():
    global aux
    while auxnum:
            tkMessageBox.showinfo("Alerta", "Tu estimacion es muy alta")
            aux+=1
            break

        if num==est:
            accion = tkMessageBox.askyesno("Atencion",
                                           "Haz ganado el juego\n Quieres volver a jugar?")
            if accion == False:
                ventana.destroy()
                break
            else:
                aux = 0
                inicio_jugar()
                break

    if intentos==aux:
        accion = tkMessageBox.askyesno("Atencion","Haz perdido el juego\n Quieres volver a jugar?")
        if accion == False:
            ventana.destroy()
        else:
            aux = 0
            inicio_jugar()

ventana=Tk()
ventana.config(bg="gray")
contenedor=Frame(ventana,width=650,height=650)
contenedor.pack()
t1=Label(contenedor,text="Bienvenido al juego adivina el numero",font=("Times New Roman",15)).place(x=90,y=25)
t2=Label(contenedor,text="Ingresa tu nombre: ",font=("Times New Roman",15)).place(x=90,y=87)


b1=StringVar()
b1.set("Iniciar juego")
bgame=Button(contenedor,textvariable=b1,command=inicio_jugar).place(x=407,y=87)
entrada1=StringVar()
objentrada=Entry(contenedor,textvariable=entrada1).place(x=240,y=90)


ventana.mainloop()




Piedra ,Papel o Tijera:
from Tkinter import *  # libreria para utilizar las ventanas,labels,ventanasemergentes y botones
from tkMessageBox import *  # para poder utilizar el abra el cuadro de dialogo
import random  # para poder generar nuneros aleatorios


def funcion(opcion):
    tiposdemanos = ['piedra', 'papel', 'tijera']  # creo un arreglo con tres valores posibles
    eleccion_aleatoria = random.choice(
        tiposdemanos)  # a la variable le asigno un valor a traves de random utilizando uno de los tres valores que estan en el array
    decisioncpu = eleccion_aleatoria  # la variable decision cpu se iguala
    decision_usuario = opcion  # utilizo como parametro la variable opcion y la igualo a decision usuario para poder usarla en el if

    if decision_usuario == 1:  # el numero uno lo uso como tijera y ese valor se lo asigno al presionar el boton 'piedra'
        Decisionusuario = Label(ventana, text='elegiste piedra', font=("agency fb", 12)).place(x=50, y=220)
        imagen1 = PhotoImage(file='piedrausuario.gif')  # utilizo una imagen para mostrar mi seleccion
        lblusuario = Label(ventana, image=imagen1).place(x=50, y=300)  # muestro esa image a traves de un label
        DecisionCPU = Label(ventana, text=('la cpu eligio ' + decisioncpu), font=("agency fb", 12)).place(x=300,
                                                                                                          y=220)  # muestro en pantalla la decision random que genero
        if decisioncpu == "piedra":  # la decision random la comparo con cadenas de caracteres en los 3 casos
            imagen2 = PhotoImage(file='piedracpu.gif')  # eligo la imagen determinada
            lblcpu = Label(ventana, image=imagen2).place(x=250, y=300)  # y la muestro en pantalla
            showinfo(title='resultado',
                     message='empate')  # atravez de una ventana emergente muestro si gano,perdio o empato

        elif decisioncpu == 'papel':
            imagen2 = PhotoImage(file='papelcpu.gif')
            lblcpu = Label(ventana, image=imagen2).place(x=250, y=300)
            showinfo(title='resultado ', message='perdiste')

        else:
            imagen2 = PhotoImage(file='tijeracpu.gif')
            lblcpu = Label(ventana, image=imagen2).place(x=250, y=300)
            showinfo(title='resultado', message='Ganaste')



    elif decision_usuario == 2:
        imagen1 = PhotoImage(file='papelusuario.gif')
        lblusuario = Label(ventana, image=imagen1).place(x=50, y=300)
        Label10 = Label(ventana, text='elegiste papel', font=("agency fb", 12)).place(x=50, y=220)
        Label11 = Label(ventana, text=('la cpu eligio ' + decisioncpu), font=("agency fb", 12)).place(x=300, y=220)
        if decisioncpu == 'piedra':
            imagen2 = PhotoImage(file='piedracpu.gif')
            lblcpu = Label(ventana, image=imagen2).place(x=250, y=300)
            print 'haz ganado pax'
            showinfo(title='resultado ', message='Ganaste')
        elif decisioncpu == 'papel':
            imagen2 = PhotoImage(file='papelcpu.gif')
            lblcpu = Label(ventana, image=imagen2).place(x=250, y=300)
            print 'empate'
            showinfo(title='resultado', message='empate')

        else:
            imagen2 = PhotoImage(file='tijeracpu.gif')
            lblcpu = Label(ventana, image=imagen2).place(x=250, y=300)
            print 'haz perdido!!!!'
            showinfo(title='resultado ', message='perdiste')

    elif decision_usuario == 3:
        imagen1 = PhotoImage(file='tijerausuario.gif')
        lblusuario = Label(ventana, image=imagen1).place(x=50, y=300)
        Label10 = Label(ventana, text='elegiste tijera', font=("agency fb", 12)).place(x=50, y=220)
        Label11 = Label(ventana, text=('la cpu eligio ' + decisioncpu), font=("agency fb", 12)).place(x=300, y=220)
        if decisioncpu == 'piedra':
            imagen2 = PhotoImage(file='piedracpu.gif')
            lblcpu = Label(ventana, image=imagen2).place(x=250, y=300)
            showinfo(title='resultado ', message='perdiste')
        elif decisioncpu == 'papel':
            imagen2 = PhotoImage(file='papelcpu.gif')
            lblcpu = Label(ventana, image=imagen2).place(x=250, y=300)
            showinfo(title='resultado ', message='ganaste')
        else:
            imagen2 = PhotoImage(file='tijeracpu.gif')
            lblcpu = Label(ventana, image=imagen2).place(x=250, y=300)
            showinfo(title='resultado ', message='empate')


ventana = Tk()
ventana.geometry("500x500")
ventana.title('JUEGO DEL PIEDRA PAPEL O TIJERA')

label1 = Label(text="ELIGA UNO DE LOS 3", font=("agency fb", 18)).place(x=10, y=30)

label3 = Label(ventana, text='PIEDRA,PAPEL O TIJERA').place(x=0, y=0)
label2 = Label(ventana, text='un juego clasico y sencillo').place(x=0, y=0)
# boton para piedra
Piedra = Button(ventana, text='piedra', command=lambda: funcion(1)).place(x=50, y=100)
# boton para papel
Papel = Button(ventana, text='papel', command=lambda: funcion(2)).place(x=150, y=100)
# boton para tijera
Tijera1 = Button(ventana, text='tijera', command=lambda: funcion(3)).place(x=250, y=100)

ventana.mainloop()


Practica de reproducción de sonido y imágenes aleatoria mente:

from Tkinter import * #para crear la GUI
from PIL import Image, ImageTk #despliegue de imagenes
import os #para dar una ruta path de una carpeta o directorio
import random #para seleccionar y dar numeros aleatorios
import pygame
import threading

root = Tk() #lo uso para la ventana de app de tkinter



def main(aux):
    while aux == 1:
        global fotos, Csonido, eleccion_aleatoria, contenedor
        dir = os.path.dirname(__file__) #lo utilizo para dar una ruta de donde estan mis imagenes
        fotos = dir + "/Imagenes/"
        Csonido=dir + "/Sonidos8/" #establece la ruta hacia los sonidos
        arreglo = [1,2,3,4,5,6,7,8] #crear un areglo con el numero de las imagenes
        eleccion_aleatoria = str(arreglo.index(random.choice(arreglo))+1) #se toma un elemento del array al azar y se hace string
        hilo1 = threading.Thread(target=et)
        hilo2 = threading.Thread(target = reproducirsonido)
        hilo3 = threading.Thread(target =img)
        hilo1.start()
        hilo2.start()
        hilo3.start()
        break

def reproducirsonido():
    sonido = Csonido + eleccion_aleatoria + ".mp3"
    pygame.mixer.init()
    pygame.mixer.music.load(sonido)
    pygame.mixer.music.play()

def img():
    global tkimage
    figura = fotos + eleccion_aleatoria + ".png" #asignas la extension png a al imagen

    #Como despliego el archivo en la ventana tk
    img = Image.open(figura) #va a la ruta de la imagen y la abre
    tkimage = ImageTk.PhotoImage(img) #despliega la imagen
    etiqueta = Label(root,image=tkimage).place(x=300,y=300) #la imagen se pone en una etiqueta

def et():
    nombre_img=Label(text = "                                      ",font =("Times New Roman",20,"bold")).place(x = 60, y = 300)
    imagenes=["Cat","Dog","House","Pencil","Heart","Strawberry","Flower","Car"]
    nombre_img = Label(text = imagenes [int (eleccion_aleatoria)-1],font=("Times New Roman",20,"bold")).place(x=60,y=300)


def fin():
    root.destroy()

b1 = Button(text = "Mostrar Imagenes", command = lambda: main(1)).place(x=100, y=100)
b2 = Button(text = "Terminar programa", command = fin).place(x=200,y=200)

root.geometry("500x500")




Comentarios

Entradas más populares de este blog

Uso de la multiplicacion con ensamblador

Programa de resta en ensamblador

Librerías para graficar en Python