Como crear globos con palabras dentro?

Tengo que crear una frase de 5 palabras, y esas palabras deben aparecer en un globo cada una de manera al azar. Como se hace?

Buenas, @SantiagoCoronel !

Me temo que no acabo de entender bien tu pregunta… No sé si quieres un globo con 5 palabras, o 5 globos con una palabra cada uno, o un globo con una palabra al azar escogida entre 5 posibles.

Para el globo, simplemente usa

mono = pilas.actores.Mono()
mono.decir(‘Palabra o palabras que quiero mostrar’)

Para encontrar una palabra al azar entre 5:

busca_palabra = pilas.azar(0,4)

if busca_palabra == 0:
    mono.decir('primera')
elif busca_palabra == 1:
    mono.decir('Segunda')
etc etc etc...

Si quieres que solo salga el globo, sin que se vea ningún actor, puedes usar el actor “invisible” o darle a tu actor transparencia

mono.transparencia = 100

Mira este juego tengo que hacer, y no se por donde arrancar, solo hice el menu.
-Armar oraciones con una cantidad de palabras fija. Ejemplo: frases de
5 palabras siempre.

  • Deberán aparecer tantos cirulos blancos como palabras se haya
    decidido jugar. Es el lugar donde se arrastran los otros círculos con
    las palabras. Pueden ser también círculos con números del 1 a la
    cantidad de palabras.
  • Deberán aparecer desordenados tantos círculos con texto con palabras
    tenga la frase, con la habilidad de arrastrarse.
    -Deberán colocar las palabras en los círculos blancos en orden para
    armar la frase
    -Deberá haber un botón que diga aceptar para que cuando se apriete el
    botón se controle si está bien la frase armada

Buenas @SantiagoCoronel

Se me ocurren dos maneras diferentes de armar ese juego.

Una de ellas seria construir cinco listas de palabras, por ejemplo:

palabra1 = [José, Maria, Ana, Antonio]
palabra2 = [Come, Dice, Estudia, Enseña]
palabra3 = [Macarrones, Tonterias, Derecho, Colecciones]
etc…
Como puedes comprobar eso conlleva varios problemas, ya que podrian salirte frases del tipo “Maria Estudia Macarrones”… Además costaria mucho armar frases de 5 palabras sin usar artículos ni preposiciones, yo lo he intentado y realmente es casi imposible… Otro problema es que el orden seria siempre el mismo, es decir: Sujeto, verbo, complemento directo, lo que haria el juego demasiado fácil.

La opción 2 seria armar una lista de listas con las frases por ejemplo:

frases = [(‘A’, ‘Jose’, ‘le’, ‘gusta’, ‘Estudiar’), (‘Maria’, ‘recomienda’, ‘Comer’, ‘Mucha’, ‘Fruta’), etc. etc. etc…]

Antes que nada, yo te recomendaria armar los actores, que a mi parecer deberian ser actores Texto. De momento ponles un texto fijo del tipo “uno”, “dos” “tres” etc. y ya más adelante estudias como asignarles una frase a partir de una lista.

Lo de que aparezcan desordenados no cuesta nada, simplemente usa

actorTexto1 = pilas.actores.Texto('UNO')
actorTexto1.y = -100
actorTexto1.x = pilas.azar(-200,200) 
actorTexto1.aprender('arrastrable')

Empieza por ahí y poco a poco lo vas montando, ok? :wink:

Como deberia hacer para crear un circulo blanco con las palabras dentro del circulo? y por supuesto todos desordenados

Buenas, @SantiagoCoronel

Tienes ya creados los cinco actores texto? Si los creas y arrancas el juego verás que salen desordenados en la parte inferior de la pantalla. Para que estén dentro de un círculo, lo primero que necesitas es la imagen de un círculo (puedes crearla o bajarte una que te guste en Google). Guarda esa imagen en la misma carpeta que el script PY de tu juego.

Después creas un actor personalizado y le asignas esa imagen. Uno por cada actor texto, o sea que tendras que crear cinco.

class ActorCírculo1(pilas.actores.Actor):
    def iniciar(self):
        self.imagen = ('imagen_circulo.png')  # <---- el nombre de tu imagen, mejor si es PNG
        self.z = (actorTexto1.z +1) #<-------Para que quede por detras del texto y no lo tape
    def actualizar(self):
        self.x = actorTexto1.x
        self.y = actorTexto1.y   #<-------Esto es para que siga siempre la posicion del texto

pilas.actores.vincular(ActorCirculo1)

circulo1 = pilas.actores.ActorCirculo1()

Espero que esto te ayude, y que en tu próxima consulta aportes algo de código propio para poder corregir en vez de tener que crearlo por ti.

Un saludo.

El self para que se usa?

El self, dentro de la clase hace referencia a la propia clase, o para que se entienda más fácil, al nombre de la clase.

En la “class ActorCirculo” en vez de decir…

ActorcCirculo.x = 100

se dice…

self.x = 100

Te aconsejo que sigas algun tutorial básico de Python, por que lo vas a necesitar a medida que vayas avanzxando en Pilas.

Un saludo.

Ya pude con eso, mil gracias!!!
Te molesto con algo más.
En el juego, aparecen las palabras desordenadas y hay que ubicarlas en orden dentro de un circulo en blanco cada una, como puedo hacer una función que controle si están bien ubicadas?
Intente guiandome por el eje de las x,es decir:
#los actores son cada una de las palabras
If actor1.x <actor2.x and actor 2.x <actor3.x:
pilas.fondos.Selva ()
pIlas.actores.Texto (‘Bien hecho’)
#y elimino las palabras (actor1, actor2, actor3)
Else:
pilas.avisar (‘mal hecho, vuelve a intentarlo’)

Pero siempre me tira que estan mal ubicadas, osea: else…
Sabes que puede ser? o alguna otra forma de hacerlo

Si puedes aportrar una muestra del código con mucho gusto intentaré ver donde está el fallo.

Un saludo.

PD debes poner tres de estas al inicio del código y tres al final;

` <------------(ESA PEQUEÑA TILDE)
Si no la tienes en tu teclado puedes copiarla y pegarla.

Ahi esta el juego, cuando quiero comprobar el orden de las palabras, siempre dice que esta mal!

ahi esta el juego completo!!

Buenas,

Primero, ese juego no es el de las palabras.

Segundo, es una captura de pantalla y yo te pedia un copia-pega de tu código, porque en una captura puede no salir todo el código…

Saludos.

Buenas @SantiagoCoronel

El código es un tanto complicado como pararesolverlo “a vista” (al menos para mi) :blush:

No se si te arroja error al pulsar el boton de comprobar el orden, o como tu dices pasa directamente al else. Sospecho que al estar en def separadas (la creación de actores y la comprobación del orden) puede que no te los reconozca.

Puedes probar de hacer un

print(actor1.x)

quitando las condiciones IF ELSE en la def comprobar para ver si te los reconoce???

Un saludo.