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.

Python Turtle – Problema con forma personalizada en programa Snake

Tengo un programa en Python que utiliza turtle para crear el juego “Snake”. Funciona perfectamente. En este momento, estoy agregando imágenes .gif para mejorar su apariencia.
El problema surge cuando intento usar una forma personalizada como la cabeza de la serpiente. Si uso una forma básica de turtle como “triángulo” o “flecha”, funciona bien. Gira correctamente y se imprime sobre el primer segmento del cuerpo según lo deseado. Pero cuando lo cambio a mi imagen personalizada, el problema es que se imprime debajo del primer segmento del cuerpo y no puede girar.

Muestra de controles

if direction == "up":
    if snake_direction != "down":
        snake_direction = "up"
        head_stamper.setheading(90)

Se utilizan los stampers para crear numerosas secciones y una cabeza sobre el primer segmento.

for segment in snake:
    stamper.goto(segment[0], segment[1]) # Estos son los segmentos del cuerpo, funcionan bien.
    stamper.stamp()
    head_stamper.goto(new_head)

Aquí se muestran ambos stampers.

Stamper para cada sección del cuerpo

stamper = turtle.Turtle()
stamper.shape(bod_segment)
stamper.shapesize(25 / 20)
stamper.penup()

Stamper especial solo para la cabeza de la serpiente.

head_stamper = turtle.Turtle()

head_stamper no tiene problemas cuando la forma es “flecha” o “triángulo”, etc.

head_stamper.shape(head_segment)
stamper.shapesize(25 / 20)
head_stamper.penup()

Creo que este es todo el código relevante para el problema.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema puede estar relacionado con el orden en el que los segmentos de la serpiente y la cabeza se dibujan en la pantalla. Cuando se utiliza una imagen personalizada para la cabeza, puede ser necesario ajustar la superposición de los gráficos para que se muestre correctamente. Una posible solución podría ser asegurarse de que el sellador de la cabeza se llame después de que se hayan sellado todos los segmentos de la serpiente, para que aparezca encima de ellos. Otra opción podría ser utilizar el método shape() para crear una forma compuesta que conste tanto de la imagen personalizada de la cabeza como de la forma triangular o de flecha, de modo que se mantenga el comportamiento de giro.

Comments are closed.