es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cuando se agrega nuevo texto, éste aparece en la parte inferior y el resto del texto se desplaza hacia arriba.

Quiero mostrar texto en la caja de texto que indique si acerté y cuánto daño hice, y viceversa para el enemigo, pero simplemente no puedo descubrir cómo hacer que el texto se muestre de esta manera.

Aquí está el código en el que estoy trabajando:

def textBox(textv):
    lText = []
    text = font.render(str(textv),True,(1,1,1))
    lText.append(text)
    if len(lText) >= 10:
        lText.pop(9)
    screen.blit(lText[0],(20,400))
    screen.blit(lText[1],(20,380))

while True:

    battle_screen()
    for event in pygame.event.get():

        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

    screen.blit(enemy_background,(20,20))
    player.drawPlayer()
    enemy.newEnemy()
    textBox("Daniel")
    textBox("Jenny")

pygame.display.update()
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para mostrar texto en la caja de texto, necesitas modificar la función textBox agregando dos parámetros x e y. Estos parámetros especifican la posición del texto en la pantalla. También necesitas cambiar la lista lText a una variable global para que puedas agregar texto a ella desde múltiples funciones.

    Aquí está el código modificado:

    lText = []
    
    def textBox(textv, x, y):
        global lText
        text = font.render(str(textv),True,(1,1,1))
        lText.append(text)
        if len(lText) >= 10:
            lText.pop(0)
        for i, t in enumerate(lText):
            screen.blit(t, (x, y + i * 20))
    
    while True:
    
        battle_screen()
        for event in pygame.event.get():
    
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
    
        screen.blit(enemy_background,(20,20))
        player.drawPlayer()
        enemy.newEnemy()
        textBox("¡Golpeaste al enemigo por 10 daño!", 20, 380)
        textBox("¡El enemigo te golpeó por 5 daño!", 20, 400)
    
    
        pygame.display.update()
    

    En este código modificado, la función textBox ahora toma tres parámetros: textv es el texto a mostrar, x es la coordenada x del texto en la pantalla y y es la coordenada y. La función crea un nuevo objeto pygame.Surface a partir del texto y lo agrega a la lista global lText. Si el largo de la lista excede 10, el primer elemento se elimina. La función itera a través de la lista y muestra cada superficie en la pantalla en la posición especificada.

    En el bucle principal, llamamos dos veces a la función textBox con texto y posiciones de ejemplo para demostrar cómo funciona.

    Ten en cuenta que necesitarás tener un objeto font definido en tu código para que esto funcione.

Comments are closed.