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.

Teniendo algunos problemas para crear este juego de Carrera de Tortugas en el módulo tkinter.

Básicamente lo que dije en el título. Estoy teniendo problemas para detectar una victoria con tkinter y agradecería algo de orientación. Creo que mi carrera original puede haber sido un poco mal hecha también.

import tkinter as tk
from tkinter.simpledialog import askstring
import random
import time
root = tk.Tk()
import turtle
wn = turtle.Screen()
wn.bgcolor('lightblue')

color1 = askstring('Ingrese el color', 'Por favor ingrese el color de la tortuga')
t1 = turtle.Turtle()
t2 = turtle.Turtle()
t1.color(color1)
color2 = askstring('Ingrese el color', 'Por favor ingrese el color de la tortuga')
t2.color(color2)
t1.shape('turtle')
t2.shape('turtle')
t1.left(90)
t2.left(90)
t1.goto(-100, -100)
t2.goto(100,  -100)

finish1 = turtle.Turtle()
finish1.penup()
finish1.goto(-100, 100)
finish1.pendown()
finish1.circle(20)
finish1.hideturtle()

finish2 = turtle.Turtle()
finish2.penup()
finish2.goto(100, 100)
finish2.pendown()
finish2.circle(20)
finish2.hideturtle()

for x in range(100):
  t1.fd(random.randrange(10))
  t2.fd(random.randrange(10))
if t1.xcor() >= 100:
  turtle.write((color1), move=False, align="left", font=("Arial", 72, "normal"))
if t2.xcor() >= 100:
  turtle.write((color2), move=False, align="left", font=("Arial", 72, "normal"))
time.sleep(3)
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como experto en TI especializado en python, tkinter y python-turtle, puedo ayudarte con tu problema de detectar una victoria con tkinter. Según el código que proporcionaste, parece que no incluiste ningún código para detectar una condición de victoria. Aquí tienes algunos pasos que puedes intentar:

    1. Define la condición de victoria: En tu caso, parece que cruzar la línea de meta (ubicada en xcor 100) indicaría una victoria. Puedes definir esto en tu código agregando una variable win_boolean, de la siguiente manera:
    win_boolean = False
    if t1.xcor() >= 100:
        win_boolean = True
        turtle.write((color1 + ' gana!'), move=False, align="left", font=("Arial", 72, "normal"))
    elif t2.xcor() >= 100:
        win_boolean = True
        turtle.write((color2 + ' gana!'), move=False, align="left", font=("Arial", 72, "normal"))
    
    1. Agrega la condición de victoria a tu ciclo: Ahora puedes agregar la condición de victoria a tu ciclo verificando si win_boolean es True. Si lo es, puedes salir del ciclo y terminar el juego. De lo contrario, continúa con el ciclo.
    for x in range(100):
        t1.fd(random.randrange(10))
        t2.fd(random.randrange(10))
        if t1.xcor() >= 100 or t2.xcor() >= 100:
            win_boolean = True
            if t1.xcor() >= 100:
                turtle.write((color1 + ' gana!'), move=False, align="left", font=("Arial", 72, "normal"))
            elif t2.xcor() >= 100:
                turtle.write((color2 + ' gana!'), move=False, align="left", font=("Arial", 72, "normal"))
            break
    time.sleep(3)
    

    Estos cambios detectarán una condición de victoria basada en cruzar la línea de meta e imprimirán el color de la tortuga ganadora en la pantalla.

Comments are closed.