ال score و ال High_score فى لعبة snake تم بفضل الله ولكن!

الحمد لله عملت
score & high _score
فى لعبة snake
بس عندى مشكلة :
لما ال score بيبقى اعلى من صفر و فى نفس الوقت اقل من ال high_score . ال high_score مبيحتفظش بنفس القيمة القديمة بتاعته و بيخلn قيمته تساوى نفس قيمة ال score , الا فى حالة واحدة لو قيمة ال score بصفر !

ده الكود :

    def game_over(self):
       self.clear()
       self.screen.bgcolor('darkred')
       self.penup()
       self.goto(0,0)
       if self.score > self.high_score :
        self.high_score = open("score.txt","w+")
        self.high_score.write(f"{self.score}")
        self.high_score.seek(0)
       elif self.high_score > self.score :
          self.high_score = open("../python_in_vs/score.txt","r") 
       elif self.score == self.high_score :
          self.high_score = open("../python_in_vs/score.txt","r") 

       self.write(f'-------------------Game Over--------------- \n\n Final Score = {self.score} \n\n High Score = {self.high_score.read()} '
                  , align = 'center' , font = ('Arial', 10 , 'bold') )
       self.high_score.close()
    def update_scoreboard(self):
        self.file = open("../python_in_vs/score.txt","r")
        self.write(f'Score = {self.score} ---- High Score = {self.file.read()}', align = 'center' , font =('Arial',18,'normal'))
        self.file.close()

صور للنتايج :

3 إعجابات

المشكله :

المشكله هى انك غالباً عامل ان self.high_score=0 والمفروض ان self.high_score تكون تساوى اعلى سكور (score.txt) بس لو انت كتبت :

with open("score.txt","r") as file:
  self.high_score = int(file.read ())

هيحصل error لو كان score.txt مش موجود (لو انت اول مره تلعب اللعبه)

الحل :

في ملف score.py اكيد انت كاتب :

self.high_score = 0

فـ امسح السطر ده واكتب بداله :

try:
  with open("score.txt","r") as file:
    self.high_score = int(file.read ())
except :
  self.high_score = 0

فائده try انها تجرب ولاكن اذا حدث error لا تتوقف اللعبه بل تنتقل لـ except گما حدث فى الكود السابق

جرب الحل واخبرنى اذا صار مشكله :heart:
بالتوفيق اخى الكريم :heart:

إعجاب واحد (1)

جميل
بس الكود بلوك بتاع with مالوش استخدام
كده كده انا هقرا وهكتب فى ال score board
وبعدين هيبقى فى استهلاك لمساحات الذاكرة
عموما هجرب
ولو اشتغل
حاول اعدل فى with ان شاء الله
تسلم يا ادارة :heart:

إعجاب واحد (1)

برافو علي المحاولة
بس جرب تستخدم try except block و خلي self.high _score يقرأ من الملف المتخزن فيه

إعجاب واحد (1)

اشتغلت بفضل الله
ده الكود
بالتعليقات عليه

class Scoreboard(Turtle):
    def __init__(self):
        super().__init__()
        self.score = 0
        try : # trying the following code block
           with open ("score.txt" , "r") as self.file : # open the score text in a variable named file
              self.high_score = int(self.file.read())  # reading score text after transfer its value to integer (string by default)
        except : # exception for the following code (will not give any error if it is exsit)
           self.high_score = 0 # this variable when valued with (0)

        self.file.close()  # closing the file      
              
        self.color('white')
        self.penup()
        self.goto(0,350)
        self.hideturtle()
        self.update_scoreboard()
إعجابَين (2)

تمام الحمدلله ، يعني كده اللعبه اشتغلت وبقت تمام ولا في حاجه تانيه محتاج مساعده فيها :heart: ؟

لا تمام كده
تسلم حبيبى

إعجاب واحد (1)

الـلـه يـسـلـمـك :heart: .

ألف مبروك علي نجاح اللعبة بالتوفيق إن شاء الله

إعجاب واحد (1)