User case ,Turtle challenge

فى حالة انه فيه سلحفتين وصلوا مع بعض لخط النهاية لقيته طلع الرسالتين ع بعض ، الفوز والخسارة . ممكن تتحل انه فاز بس ؟ بحيث نزود or كشرط

اولا هذا المشروع قد يساعدك تاكد من الكود هنا وقارنه مع كودك لتجد الحل ان شاء الله مشروع بايثون : رهان سباق السلاحف 🐢 - #4 بواسطة albara

ثانيا

لفهم حالتك وتقديم الحل المناسب، دعنا نوضح ما يحدث في سيناريو السباق بين السلاحف. عندما تصل سلحفتان معًا إلى خط النهاية، من المحتمل أن يتم تنفيذ كود الفوز والخسارة لكل منهما دون التحقق من الحالة بشكل صحيح. الحل يعتمد على تعديل الشرط في الكود ليتعامل مع الحالة التي تصل فيها سلحفتان إلى خط النهاية في نفس الوقت.

إليك كيفية معالجة ذلك بحيث يُظهر فقط رسالة الفوز في حالة وصول سلحفتين معًا إلى خط النهاية:

1. تحديد الشرط بشكل صحيح:

  • نحتاج إلى استخدام شرط or للتأكد من أن الفوز يتم الإعلان عنه فقط إذا وصلت إحدى السلحفات إلى خط النهاية.
  • بمجرد الإعلان عن فوز سلحفاة، نتجنب عرض رسالة الخسارة للأخرى.

2. التأكد من عدم تكرار الرسالة:

  • تأكد من أن الكود لا يقوم بإعادة طباعة الرسالة بناءً على شرط واحد فقط.

مثال على الكود:

import turtle
import random

# إنشاء شاشة و السلاحف
screen = turtle.Screen()
screen.title("سباق السلاحف")
screen.bgcolor("white")

# إنشاء السلاحف
colors = ["red", "green", "blue"]
turtles = []

for color in colors:
    t = turtle.Turtle()
    t.color(color)
    t.shape("turtle")
    t.penup()
    t.goto(-160, 100 - colors.index(color) * 40)
    turtles.append(t)

# بدء السباق
is_race_on = True
while is_race_on:
    for t in turtles:
        t.forward(random.randint(1, 5))
        
        # التحقق من الوصول لخط النهاية
        if t.xcor() >= 160:  # خط النهاية
            winner = t
            is_race_on = False
            break

# إعلان الفائز
for t in turtles:
    if t == winner:
        print(f"السلحفاة {t.color()[0]} فازت بالسباق!")
    else:
        print(f"السلحفاة {t.color()[0]} خسرت السباق.")

شرح الكود:

  • الشرط if t.xcor() >= 160: يتحقق من أن السلحفاة قد وصلت إلى خط النهاية.
  • is_race_on = False: يوقف السباق بمجرد أن تصل أول سلحفاة لخط النهاية.
  • عرض الرسائل: بعد انتهاء السباق، نمر عبر السلاحف ونطبع رسالة الفوز للسلحفاة التي فازت، ورسالة الخسارة للباقي.

حل مشكلة الوصول معًا:

  • إذا كنت تريد التعامل مع حالة أن السلحفتين وصلتا معًا لخط النهاية، يمكن تعديل الشروط بحيث تظهر رسالة الفوز فقط لأول سلحفاة تصل، كما في المثال أعلاه.

هذا الكود يضمن أنه إذا وصلت أي سلحفاة لخط النهاية، سيتم إيقاف السباق وإعلان فوزها فقط، بينما يُعتبر الباقون خاسرين.

إعجابَين (2)

حلو ، عادى ان سلحفتين يوصلوا سوا وممكن ال ٣ كمان فكده الكل فائز

السلام عليكم ورحمه الله وبركاته

ممكن اقول نقطه من وجهة نظري
احنا حطينا شرط التحقق من فوز احد السلاحف الأولي عشان نخزنها ثم عملنا break عشان ميرجعش يلوب تاني عليهم
وتكون سلحفاه واحده بس ال فازت …والا دا مش صحيح