لعبة Snake Game 🐍 مطورة بمكتبة turtle

السلام عليكم ورحمة الله وبركاته حياكم الله مرة اخرى في مشاركة المشاريع الخاصة بي اليوم اتيتكم بتحديث كلي للعبة الثعبان بشكل كامل حيث اللعبة اصبحت لعبة مرتبة ومبذول عليها الكثير من الوقت فقد استغرق التطوير مني ما يقارب 7 ايام حتى تم تصدير اللعبة بالاصدار الجديد وبهذه النتيجة

اللعبة تدعم اللغة العربية والانجليزية وكل هذا في مكتبة turtle تم برمجته مع خاصية oop وغيرها مما قد شرحها المستر ابراهيم عادل @ibrahim جزاه الله خير الجزاء

اللعبة بها اكثر من نمط للعب وشاشة مستخدم رائع ومريحة

هذه صور للعبة لمن يريد تجربتها فانصح الجميع بتجربتها واذا كان لديكم اي مقترحات للتعديل فارجو اخباري بذلك








الصور بالتاكيد لا تغني عن التجربة

اليكم ملف تحميل اللعبة لمن يريد تجربته

https://www.mediafire.com/file/nkbi3umjtg5ioic/Snake_Game.zip/file

والرجاء اذا قدمتم لي اي ملاحظات لتحسين اللعبة اكون شاكر لكم

13 إعجابًا

اي شخص يريد المساعدة في شرح بعض الاكواد له في هذه اللعبة فيا اهلا به

إعجابَين (2)

مشاء الله بجد. تسلم ايدك يا بادر مجهود جميل جداا منك وتفكير منظم ربنا يوفقك. :fire::blush::clap::clap:

إعجابَين (2)

انا نفسي اعرف ازاي كتبت عربي هل عادي ولا زي شاشه الكونسل يعني الحروف متلغبطه

إعجابَين (2)

مشاء الله عمل رائع احسنت

إعجابَين (2)

اللهم بارك
روعة
شغل محترفين

إعجابَين (2)

عمل رائع هل يمكنك ارسال الكود حتى نستفيد من قرأت الكود

إعجابَين (2)

نعم هو عندما يكتب بالعربي في النافذة يظهر بشكل منسق وعادي والخطا فقط هو بشاشة الكونسول اما في ترتل فالامر طبيعي

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

الله يسلمك يا غالى شكرا لك على كلامتك الطيبة :smiling_face_with_three_hearts:

إعجابَين (2)

الله يبارك فيك . . . . . . :heart:

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

باذن الله ارسله بعد ان اقوم بعمل بعد التعديلات البسيطة :ok_hand:

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

. . . . . . . . . . . . :rose: :rose:

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

ربنا يبارك فيك :heart:
شكل اللعبة اكتر رائع
احييك من قلبي ع هذا المجهود الرائع والكبير للوصول لهذة النتائج …جزاك الله خيرا اخي♥️

اذا سمحت لو تنزل الكود نستفيد منه

إعجابَين (2)

ما شاء الله اللهم بارك:smiling_face::star_struck:اخي بدر عطول بتفاجئنا بإبداعك وتطورك واجتهادك…الله يزيدك من علمه ويباركلك بعلمك

3 إعجابات

باذن الله انزله عندما افتح الاب :ok_hand:

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

كود اللعبة كاملا

الملف الرئيسي للعبة:

from turtle import Screen
from Scoreboard import scoreboard
from food import Food
from snake_file import Snake
from intro import intro
import time
import keyboard

# عمل نافذة اللعبة
window = Screen()
window.setup(750,615)
window.cv._rootwindow.resizable(False, False)
window.bgcolor("#020202")
window.title("Language : اختيار اللغة")
window.listen()
window.tracer(0)

# تشغيل انترو اللعبة

introGame = intro()

# اختيار اللغة

introGame.lang()

window.update()

while True:
    if keyboard.is_pressed("2"):
        lang = "2"
        break
    if keyboard.is_pressed("1"):
        lang = "1"
        break

# متغيرات اللغة الإنجليزية

if lang == "2":

    title = "Snake Game Version: 1.27"

    font = "Arial"

    font1 = "System"

    font2 = "Fixedsys"

    fontsnakegame = "system"

    sizesnakegame = 100

    gotosnakegame = -100

    snakegame = "Snake\nGame"

    version = "snake game version: 1.27, Programer: Badr-den alk"

    enterGame = "Press Enter to start game"

    enterMode = f"Choose your preferred game mode\n{" "*15}to start playing."

    classicmode = "1: Classic game"

    boder = "2: Border game"

    obstacles = "3: Obstacles game"

    sizeobs = 27

    tip1 = "Press Options 1 to Classic game, 2 to Border game, 3 to Obstacles game"

    scorec = "Score"

    modeclassic = "Classic game"

    gotocla = 158

    modeboder = "Border game"

    gotobor = 165

    modeobstacles = "Obstacles game"

    gotoobs = 118

    gameover = "Game Over"

    final = "Final Score"

    again = "1: Play again"

    mode_menu = "2: Mode Menu"

    exit_game = "3: Exit Game"

    tip2 = "Press Options 1 to Play again, 2 to Mode Menu, 3 to Exet Game"

# متغيرات اللغة العربية

elif lang == "1":

    title = "لعبة الثعبان الإصدار: 1.27"

    font = "Calibri"

    font1 = "abdomaster-normal"

    font2 = "Calibri"

    fontsnakegame = "Ara Hamah AlHorra"

    sizesnakegame = 75

    gotosnakegame = -80

    snakegame = "لـعـبـــة\nالثعبان"

    version = "لعبة الثعبان الإصدار: 1.27 , المطور: بدر الدين الخطيب"

    enterGame = "اضغط زر الإدخال أو المسافة لبدء اللعبة"

    enterMode = f"اختر نمط اللعبة المفضل لديك\n{" "*16}.لبدء اللعبة"

    classicmode = "1: لعبة عـادية"

    boder = "2: لعبة سيـاج"

    obstacles = "3: لعبة حواجز"

    sizeobs = 35

    tip1 = "اضغط الازرار: 1 للعبة عادية , 2 للعبة سياج , 3 للعبة الحواجز"

    scorec = "النقاط "

    modeclassic = "النمط : عادي"

    gotocla = 205

    modeboder = "النمط : سياج"

    gotobor = 205
    
    modeobstacles = "النمط : حواجز"

    gotoobs = 190

    gameover = "انتهت اللعبة"

    final = "المجموع النهائي للنقاط"

    again = "1 اللعـب مجددا"

    mode_menu = "2 الرجوع للنمط"

    exit_game = "3 إغـلاق اللعبة"

    tip2 = "اضغط الازرار: 1 للعب مجددا, 2 الرجوع لاختيار نمط, 3 للخروج من اللعبة"

window.title(title)

window.clear()
window.bgcolor("#020202")

window.update()

# مقدمة اللعبة

introGame.sketch( font2 , version , snakegame , fontsnakegame , sizesnakegame , gotosnakegame)

while True: 
    introGame.enterwhite(font, enterGame)
    time.sleep(0.3)
    window.update()
    if keyboard.is_pressed("Enter") or keyboard.is_pressed("Space"):
        break
    introGame.enterblack()
    time.sleep(0.3)
    window.update()
    if keyboard.is_pressed("Enter") or keyboard.is_pressed("Space"):
        break

window.clear()
window.bgcolor("#020202")

# خيارات نمط اللعبة

def introGamechoice():
    global mode
    introGame.mode(font1 , enterMode , classicmode , boder , obstacles , tip1 , sizeobs)
    while True:
        if keyboard.is_pressed("3"):
            mode = "3"
            break
        if keyboard.is_pressed("2"):
            mode = "2"
            break
        if keyboard.is_pressed("1"):
            mode = "1"
            break

# فانكشن تشغيل اللعبة بنمط طبيعي

def classic():

    global score

    # بدئ اللعبة 

    window.clear()
    window.bgcolor("#020202")

    window.tracer(0)

    board = scoreboard()
    food = Food()
    snake = Snake("#b3b370","#c9c930")

    game_on = True
    snake_speed = 0.14

    board.classicScore(scorec,modeclassic,font,gotocla)

    while game_on:
        window.update()
        snake.run()
        time.sleep(snake_speed)

        # ازرار سير السحفاة بالاسهم فوق اسفل يسار يمين

        if keyboard.is_pressed("w") or keyboard.is_pressed("Up"):
            snake.up()
        elif keyboard.is_pressed("a") or keyboard.is_pressed("Left"):
            snake.left()
        elif keyboard.is_pressed("d") or keyboard.is_pressed("Right"):
            snake.rghit()
        elif keyboard.is_pressed("s") or keyboard.is_pressed("Down"):
            snake.down()

        # التحقق من ان الثعبان لم يخرج عن الاطار

        if snake.head.xcor() >= 380:
            snake.head.setx(-400)
        elif snake.head.xcor() <= -400:
            snake.head.setx(380)
        elif snake.head.ycor() <= -320:
            snake.head.sety(320)
        elif snake.head.ycor() >= 320:
            snake.head.sety(-320)

        # التحقق من اكل الثعبان للطعام

        if snake.head.distance(food) < 25:
            snake.append("#b3b370")
            board.update()
            score = board.score
            board.classicScore(scorec,modeclassic,font,gotocla)
            food.appear()
            for i in range(len(snake.snakes)-1):
                if snake.snakes[i].distance(food) <= 20:
                    food.appear()
            if snake_speed >= 0.04:
                snake_speed -= 0.002

        # التحق من عدم استضام الثعبان

        for error in snake.snakes[:-1]:
            if snake.head.distance(error) < 10:
                game_on = False
                board.score = 0

# فانكشن تشغيل اللعبة داخل السياج

def border():

    global score

    # بدئ اللعبة 
    window.clear()
    window.bgcolor("#020202")

    window.tracer(0)

    board = scoreboard()
    food = Food()
    snake = Snake("#62979c","#18868f")


    game_on = True
    snake_speed = 0.14

    board.scores(scorec,modeboder,font,gotobor)

    while game_on:
        window.update()
        snake.run()
        time.sleep(snake_speed)

        # ازرار سير السحفاة بالاسهم فوق اسفل يسار يمين

        if keyboard.is_pressed("w") or keyboard.is_pressed("Up"):
            snake.up()
        elif keyboard.is_pressed("a") or keyboard.is_pressed("Left"):
            snake.left()
        elif keyboard.is_pressed("d") or keyboard.is_pressed("Right"):
            snake.rghit()
        elif keyboard.is_pressed("s") or keyboard.is_pressed("Down"):
            snake.down()

        # التحقق من ان الثعبان لم يخرج عن الاطار

        if snake.head.xcor() >= 350 or snake.head.xcor() <= -350 or snake.head.ycor() >= 250 or snake.head.ycor() <= -290:
            game_on = False
            board.score = 0

        # التحقق من اكل الثعبان للطعام

        if snake.head.distance(food) < 25:
            snake.append("#62979c")
            board.update()
            score = board.score
            board.scores(scorec,modeboder,font,gotobor)
            food.appear()
            for i in range(len(snake.snakes)-1):
                if snake.snakes[i].distance(food) <= 20:
                    food.appear()
            if snake_speed >= 0.04:
                snake_speed -= 0.002

        # التحق من عدم استضام الثعبان

        for error in snake.snakes[:-1]:
            if snake.head.distance(error) < 10:
                game_on = False
                board.score = 0
    
# فانشكن تشغيل اللعبة مع حواجز وعقبات

def Obstacles():

    global score

    # بدئ اللعبة 

    window.clear()
    window.bgcolor("#020202")

    window.tracer(0)

    board = scoreboard()
    food = Food()
    snake = Snake("#7fc794","green")

    game_on = True
    snake_speed = 0.14

    board.ObstaclesScore(scorec,modeobstacles,font,gotoobs)

    while game_on:
    
        while True:

            for i in range(len(snake.snakes)-1):
                
                # التحقق من عدم خروج الطعام اسفل الذيل

                if snake.snakes[i].distance(food) <= 20:
                    food.appear()

            if food.xcor() >= 70 and food.ycor() <= 130 and food.ycor() >= 70:
                food.appear()

            elif food.xcor() >= 70 and food.ycor() >= -170 and food.ycor() <= -110:
                food.appear()

            elif food.xcor() <= -30 and food.ycor() >= -50 and food.ycor() <= 10:
                food.appear()

            elif food.xcor() <= -150 and food.xcor() >= -210 and food.ycor() >= 80 and food.ycor() <= 240:
                food.appear()

            elif food.xcor() <= -150 and food.xcor() >= -210 and food.ycor() <= -120 and food.ycor() >= -280:
                food.appear()
        
            else:
                break
        
        window.update()
        snake.run()
        time.sleep(snake_speed)

        # ازرار سير السحفاة بالاسهم فوق اسفل يسار يمين

        if keyboard.is_pressed("w") or keyboard.is_pressed("Up"):
            snake.up()
        elif keyboard.is_pressed("a") or keyboard.is_pressed("Left"):
            snake.left()
        elif keyboard.is_pressed("d") or keyboard.is_pressed("Right"):
            snake.rghit()
        elif keyboard.is_pressed("s") or keyboard.is_pressed("Down"):
            snake.down()

        # التحقق من ان الثعبان لم يخرج عن الاطار

        if snake.head.xcor() >= 350 or snake.head.xcor() <= -350 or snake.head.ycor() >= 250 or snake.head.ycor() <= -290:
            game_on = False
            board.score = 0

        # التحقق من ان الثعبان لم يستضم بالحواجز

        elif snake.head.xcor() >= 50 and snake.head.ycor() <= 110 and snake.head.ycor() >= 90:
            game_on = False
            board.score = 0

        elif snake.head.xcor() >= 50 and snake.head.ycor() >= -150 and snake.head.ycor() <= -130:
            game_on = False
            board.score = 0

        elif snake.head.xcor() <= -50 and snake.head.ycor() >= -30 and snake.head.ycor() <= -10:
            game_on = False
            board.score = 0

        elif snake.head.xcor() <= -170 and snake.head.xcor() >= -190 and snake.head.ycor() >= 100 and snake.head.ycor() <= 230:
            game_on = False
            board.score = 0

        elif snake.head.xcor() <= -170 and snake.head.xcor() >= -190 and snake.head.ycor() <= -140 and snake.head.ycor() >= -270:
            game_on = False
            board.score = 0

        # التحقق من اكل الثعبان للطعام

        if snake.head.distance(food) < 25:
            snake.append("#7fc794")
            board.update()
            score = board.score
            board.ObstaclesScore(scorec,modeobstacles,font,gotoobs)
            food.appear()

            # التحقق من سرعة الثعبان

            if snake_speed >= 0.04:
                snake_speed -= 0.002

            # التحقق من عدم وجود الطعام عند الحواجز

            while True:

                for i in range(len(snake.snakes)-1):
                    
                    # التحقق من عدم خروج الطعام اسفل الذيل

                    if snake.snakes[i].distance(food) <= 20:
                        food.appear()

                if food.xcor() >= 70 and food.ycor() <= 130 and food.ycor() >= 70:
                    food.appear()

                elif food.xcor() >= 70 and food.ycor() >= -170 and food.ycor() <= -110:
                    food.appear()

                elif food.xcor() <= -30 and food.ycor() >= -50 and food.ycor() <= 10:
                    food.appear()

                elif food.xcor() <= -150 and food.xcor() >= -210 and food.ycor() >= 80 and food.ycor() <= 240:
                    food.appear()

                elif food.xcor() <= -150 and food.xcor() >= -210 and food.ycor() <= -120 and food.ycor() >= -280:
                    food.appear()
            
                else:
                    break
        
        # التحق من عدم استضام الثعبان بالذيل

        for error in snake.snakes[:-1]:
            if snake.head.distance(error) < 10:
                game_on = False
                board.score = 0

# متغير النقاط

score = 0

# فانكشن تشغيل المرحلة حسب اختيار المستخدم 

def stage():

    # التحقق من خيار المستخدك

    if mode == "1":
        classic()
    elif mode == "2":
        border()
    elif mode == "3":
        Obstacles()

    time.sleep(1)
    
    # تشغيل شاشة الخسارة

    game_over = scoreboard()

    window.clear()

    window.bgcolor("#020202")
    
    game_over.gameover(score, gameover , final , again , mode_menu , exit_game , tip2 , font1)

    # خيارات الخروج من اللعبة

    while True:
        if keyboard.is_pressed("3"):
            break
        if keyboard.is_pressed("2"):
            window.clear()
            window.bgcolor("#020202")
            play()
        if keyboard.is_pressed("1"):
            window.clear()
            window.bgcolor("#020202")
            stage()

# متغير النمط

mode = ""

# فانشكن تشغيل اللعبة كاملة مع الانماط

def play():
    introGamechoice()
    global mode
    while True:
        if keyboard.is_pressed("3"):
            mode = "3"
            break
        if keyboard.is_pressed("2"):
            mode = "2"
            break
        if keyboard.is_pressed("1"):
            mode = "1"
            break

    stage() 

# تشغيل اللعبة

play()

ملف الثعبان

from turtle import Turtle
 
class Snake:

    def  __init__(self , colottail , colorhead):
        self.goto = (-20,0,20)
        self.snakes = []
        self.create(colottail)
        self.snakes[-1].color(colorhead)
        self.head = self.snakes[-1]

    # فانكشن انشاء جسم الثعبان الاولي 

    def create(self , colottail):
        for i in range(len(self.goto)):
            square = Turtle("square")
            square.color(colottail)
            square.penup()
            square.shapesize(1)
            square.goto(self.goto[i],0)
            self.snakes.append(square)

    # فانكشن سير الثعبان

    def run(self):
        for i in range(len(self.snakes)-1):
            self.snakes[i].goto(self.snakes[i+1].pos())
        self.head.forward(20)

    # فانكشنس السير بشكل اتجاهات فوق اسفل يسار يمين

    def up(self):
        if self.head.heading() == 270 or self.head.heading() == 90:
            pass
        else:
            self.head.setheading(90)

    def down(self):
        if self.head.heading() == 90 or self.head.heading() == 270:
            pass
        else:
            self.head.setheading(270)

    def rghit(self):
        if self.head.heading() == 180 or self.head.heading() == 0:
            pass
        else:
            self.head.setheading(0)

    def left(self):
        if self.head.heading() == 0 or self.head.heading() == 180:
            pass
        else:
            self.head.setheading(180)

    # فانكشن زيادة طول الثعبان

    def append(self , colottail):
        square = Turtle("square")
        square.color(colottail)
        square.penup()
        square.shapesize(1)
        square.goto(self.snakes[0].pos())
        self.snakes.insert(0,square)

ملف السكوربورد

from turtle import Turtle
 
class scoreboard(Turtle):
    
    def __init__(self):
        super().__init__()
        self.score = 0
        self.color("#D7E4D7")
        self.speed(0)
        self.hideturtle()

    # فانكشن اللعبة داخل السياج

    def scores(self , score , modeboder , font , goto):
    # def scores(self):
        self.penup()
        self.color("#8DBFC3")
        self.goto(353,250)
        self.pendown()
        self.goto(353,-290)
        self.goto(-363,-290)
        self.goto(-363,250)
        self.goto(353,250)
        self.penup()
        self.goto(-358,260)
        self.write(f"{score}: {self.score}" ,font=(f"{font}",25,"normal"))
        self.goto(goto,260)
        self.write(f"{modeboder}" ,font=(f"{font}",25,"normal"))
    
    # فانكشن اللعبة بنمط كلاسيك

    def classicScore(self , score , modeclassic , font , goto):
        self.penup()
        self.color("#C0C085")
        self.goto(-358,260)
        self.write(f"{score}: {self.score}" ,font=({font},25,"normal"))
        self.goto(goto,260)
        self.write(f"{modeclassic}" ,font=({font},25,"normal"))

    # فانكشن اللعبة مع حواجز

    def ObstaclesScore(self , score , modeobs , font , goto):
        self.color("#3E7E51")
        self.penup()
        self.goto(353,250)
        self.pendown()
        self.goto(353,-290)
        self.goto(-363,-290)
        self.goto(-363,250)
        self.goto(353,250)
        self.penup()
        self.goto(-358,260)
        self.write(f"{score}: {self.score}" ,font=(font,25,"normal"))
        self.goto(goto,260)
        self.write(f"{modeobs}" ,font=(font,25,"normal"))

        self.color("#3E7E51")
        self.goto(353,110)
        self.pendown()
        self.begin_fill()
        self.goto(50,110)
        self.goto(50,90)
        self.goto(353,90)
        self.end_fill()

        self.color("#254F31")
        self.penup()
        self.goto(-363,-30)
        self.pendown()
        self.begin_fill()
        self.goto(-50,-30)
        self.goto(-50,-10)
        self.goto(-363,-10)
        self.end_fill()
        
        self.color("#152D1C")
        self.penup()
        self.goto(353,-130)
        self.pendown()
        self.begin_fill()
        self.goto(50,-130)
        self.goto(50,-150)
        self.goto(353,-150)
        self.end_fill()
        
        self.color("#3E7E51")
        self.penup()
        self.goto(-190,230)
        self.pendown()
        self.begin_fill()
        self.goto(-170,230)
        self.goto(-170,90)
        self.goto(-190,90)
        self.goto(-190,230)
        self.end_fill()

        self.color("#152D1C")
        self.penup()
        self.goto(-190,-270)
        self.pendown()
        self.begin_fill()
        self.goto(-170,-270)
        self.goto(-170,-130)
        self.goto(-190,-130)
        self.goto(-190,-270)
        self.end_fill()

    # فانكشن تحديث الدرجات

    def update(self):
        self.score += 1
        self.clear()

    # فانكشن الخسارة

    def gameover(self,score , gameover , final , again , mode , exit , tips , font):
        self.penup()
        self.color("#E3443F")
        self.goto(0,160)
        self.write(gameover, align="center" , font=(font,50,"normal"))
        self.goto(0,110)
        self.write(f"{final} : {score}" , align="center", font=(font,20,"normal"))
        self.goto(0,0)
        self.color("#758E70")
        self.write(again, align="center", font=(font,35,"normal"))
        self.goto(0,-85)
        self.color("#566953")
        self.write(mode , align="center", font=(font,35,"normal"))
        self.goto(0,-170)
        self.color("#445241")
        self.write(exit , align="center", font=(font,35,"normal"))
        self.goto(0,-250)
        self.color("#32462E")
        self.write(tips, align="center", font=("Kokila", 15, "bold"))

ملف المقدمة

from turtle import Turtle
 
class intro(Turtle):
    
    def __init__(self):
        super().__init__()
        self.color("#072003","#17690B")
        self.hideturtle()
        self.speed("fastest")
        self.pensize(5)

    # فانكشن اختيار اللغة
    
    def lang(self):
        self.go((0,40))
        self.color("#758E70")
        self.write("1: عربي", align="center", font=("System", 35, "bold"))
        self.go((0,-60))
        self.color("#566953")
        self.write("2: English", align="center", font=("System", 35, "bold"))
        self.go((0,-250))
        self.color("#32462E")
        self.write(f"{" "*10}أضغط رقم 1 للاختيار اللغة العربية", align="left", font=("Kokila", 15, "bold"))
        self.go((0,-250))
        self.color("#32462E")
        self.write("Press number 2 to selcet English", align="right", font=("Kokila", 15))

    # فانشكن الانحاء في الرسم لليسار

    def dirleft(self,poran,left,poforward):
        for _ in range(poran):
            self.left(left)
            self.forward(poforward)

    # فانشكن الانحاء في الرسم لليمين

    def dirright(self,poran,right,poforward):
        for _ in range(poran):
            self.right(right)
            self.forward(poforward)

    # فانكشن تنقل السلحفاة للرسم

    def go(self,num):
        self.penup()
        self.goto(num)
        self.pendown()

    # فانكشن رسم الثعبان

    def sketch(self, font , version , snagegame , font2 , size , gotosnakegame):
        super().__init__()
        self.color("#072003","#17690B")
        self.hideturtle()
        self.speed("fastest")
        self.pensize(5)
        self.go((-210,-78))
        self.begin_fill()
        self.forward(150)
        self.dirleft(30,5.63,6.2)
        self.setheading(180)
        self.forward(112)
        self.dirright(30,5.63,2)
        self.setheading(0)
        self.forward(35)
        self.setheading(300)
        self.dirleft(15,4,2)
        self.forward(20)
        self.dirleft(39,4,2.5)
        self.setheading(180)
        self.forward(32)
        self.dirleft(14,4,2)
        self.setheading(180)
        self.forward(35)
        self.dirleft(30,5.63,6.2)
        self.setheading(0)
        self.forward(112)
        self.dirright(30,5.63,2)
        self.setheading(180)
        self.forward(150)
        self.dirleft(30,5.63,2)
        self.end_fill()

        self.color("#072003","black")
        self.go((-88,105))
        self.begin_fill()
        self.circle(12)
        self.end_fill()

        self.color("#740705")
        self.pensize(7)
        self.go((-48,110))
        self.setheading(0)
        self.forward(15)
        self.setheading(320)
        self.forward(15)
        self.setheading(138)
        self.forward(15)
        self.setheading(40)
        self.forward(15)

        self.go((30,gotosnakegame))
        self.color("#253922")
        self.write(snagegame,font=(font2, size, "bold"))

        self.go((0,-120))
        self.write(version, align="center", font=(font, 16, "bold"))

    # فانشكن رسم كلمة الدخول للعبة باللون الابيض

    def enterwhite(self , font , enterGame):
        self.go((0,-250))
        self.color("#BAC5B8")
        self.write(enterGame, align="center", font=(font, 28, "bold"))

    # فانكشن اخفاء كلمة الدخول

    def enterblack(self):
        self.go((-250,-225))
        self.color("#020202")
        self.pensize(50)
        self.setheading(0)
        self.forward(500)

    # فانكشن اختيار النمط

    def mode(self , font , enterMode , classic , border , obs , tip , sizeobs):
        self.go((0,180))
        self.color("#9CAD98")
        self.write(enterMode, align="center", font=(font, 20, "bold"))
        self.go((0,60))
        self.color("#758E70")
        self.write(classic, align="center", font=(font, 35, "bold"))
        self.go((0,-40))
        self.color("#566953")
        self.write(border, align="center", font=(font, 35, "bold"))
        self.go((0,-140))
        self.color("#445241")
        self.write(obs, align="center", font=(font, sizeobs, "bold"))
        self.go((0,-250))
        self.color("#32462E")
        self.write(tip, align="center", font=("Kokila", 15, "bold"))

ملف الطعام

from turtle import Turtle
import random
 
class Food(Turtle):
    
    def __init__(self):
        super().__init__()
        self.shape("circle")
        self.color("red")
        self.shapesize(0.8,0.8)
        self.penup()
        self.appear()

    # فانكشن وضع الطعام في مكان مخلتف
    
    def appear(self):
        x = random.randint(-340,340)
        y = random.randint(-240,230)
        self.goto(x,y)

إعجابَين (2)

ملاحظة قبل تشغيل الكود تاكد من تنزيل مكبتة keyboard عندك في الجهاز

امر تنزيل المكتبة . pip install keyboard

مافائدة هذه المكتبة هو فقط استفدت منها من اجل تخزين اسم الزر اللذي يضغط عليه المستخدم فقط لا غير اي ان كل الكود يمكنك برمجته بما تعلمته مع المستر الفاضل ابراهيم عادل ولكن في موضوع تخزين اسماء ازرار الكيبورد التي يتم الضغط عليها فستحتاج الى هذه المكتبة فقط لا غير

وقد استخدمت انا في هذه اللعبة هذا الامر فقط من المتكبة وهو

keyboard.is_pressed() وهو للتحق من اسم الزر اذا تم ضغطه

مثال على هذا الامر:

if keyboard.is_pressed("3"):
            mode = "3"
3 إعجابات

لمن يريد تحميل الملفات كاملة في المجلد مع الاكواد
https://www.mediafire.com/file/bs10z9vgd52gs5p/%25D9%2584%25D8%25B9%25D8%25A8%25D8%25A9_%25D8%25A7%25D9%2584%25D8%25AB%25D8%25B9%25D8%25A8%25D8%25A7%25D9%2586.rar/file

3 إعجابات

سؤال بعد تحميل ملف اللعبة مباشرة كيف اشغله علي الجهاز يعمل علي الكمبيوتر فقط صحيح و لا يعمل علي الهاتف

إعجابَين (2)