لعبة الثعبان في استخدام وحدة Python

أنا واثق من أن هذا المقال سيكون مفيدًا لك إذا كنت من محبي لعبة الثعابين. سأوجهك خلال خطوات إنشاء لعبة بسيطة في هذا المنشور والتي سيجد حتى مبتدئي بايثون سهولة في إنشائها. مكتبة PyGame في بايثون, وهي حزمة Python نستخدمها لتطوير الألعاب, أحد الأساليب المختلفة لتصميم اللعبة.

يعد استخدام سلحفاة المكتبة إستراتيجية إضافية. يمكن للمستخدمين إنشاء رسومات ورسم نماذج على قماش عبر الإنترنت بفضل هذه الوحدة, الذي تم تثبيته بالفعل مع Python. وبالتالي, في هذا البرنامج التعليمي, سنستخدم مكتبة السلاحف لبناء ثعباننا الأساسي

لعبة الثعبان في بايثون

  • وحدة الوقت. تتيح لنا هذه التقنية تتبع مقدار الثواني التي مرت منذ المرة السابقة.
  • وحدة عشوائية لعبة الثعبان – يقوم بإنشاء أرقام عشوائية في بايثون.

تشمل الأدوات الأخرى التي ستحتاجها محررًا للنص الذي تفضله. سأستخدم VSCode في هذا المنشور. بالطبع, ستحتاج من أجل إعداد Python 3 على جهازك إذا لم يكن مثبتًا لديك بالفعل. يمكنك أيضًا التنزيل لتثبيت Geekflare Compiler. قد يكون هذا الكثير من تجربة ممتعة!

محتويات

كيف تعمل لعبة الثعبان

يجب على اللاعبين التلاعب بالثعبان للحصول على الطعام المعروض على الشاشة من أجل تحقيق أفضل درجة ممكنة في هذه اللعبة. يوجه اللاعب الثعبان بالضغط على أحد مفاتيح الاتجاهات الأربعة التي تشير إلى الاتجاه الذي يتحرك فيه الثعبان.

ستتم إزالة الثعبان من اللعبة إذا اصطدم بلاعب أو شيء ما. الإجراءات التي سنستخدمها للعب هذه اللعبة من الآن فصاعدًا.

  • استيراد الوحدات المثبتة مسبقًا إلى تطبيقاتنا (وقت السلاحف, سلحفاة وكذلك عشوائية).
  • تم إنشاء شاشة عرض اللعبة باستخدام وحدة Turtle.
  • اضبط المفاتيح للتحكم في اتجاه حركة الثعبان حول الشاشة.
  • تنفيذ اللعبة.

قم بإنشاء ملف snakegame.py الذي سنضيف إليه برنامج التنفيذ.

استيراد الوحدات

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

import turtle
import random
import time

player_score = 0
highest_score = 0
delay_time = 0.1

صنع شاشة اللعبة

تسمح لنا وحدة السلاحف التي نثبتها بإنشاء شاشة افتراضية ستكون بمثابة شاشة نافذة اللعبة. يمكننا بعد ذلك بناء جسد الثعبان, وكذلك المواد الغذائية التي يأكلها الثعبان. ستعرض الشاشة أيضًا نتيجة متتبع اللاعب.

# window screen created
wind = turtle.Screen()
wind.title("Snake Maze")
wind.bgcolor("red")

# The screen size
wind.setup(width=600, height=600)


# creating the snake 
snake = turtle.Turtle()
snake.shape("square")
snake.color("black")
snake.penup()
snake.goto(0, 0)
snake.direction = "Stop"

# creating the food
snake_food = turtle.Turtle()
shapes = random.choice('triangle','circle')
snake_food.shape(shapes)
snake_food.color("blue")
snake_food.speed(0)
snake_food.penup()
snake_food.goto(0, 100)

pen = turtle.Turtle()
pen.speed(0)
pen.shape('square')
pen.color('white')
pen.penup()
pen.hideturtle()
pen.goto(0, 250)
pen.write("Your_score: 0 Highest_Score : 0", align="center", 
font=("Arial", 24, "normal"))
turtle.mainloop()

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

مع استخدام تقنية goto, يمكن توجيه السلحفاة إلى موضع دقيق باستخدام الإحداثيات. الغذاء الذي يأكله الثعبان من صنعنا.

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

إعداد مفاتيح الاتجاهات للثعبان

في هذه الحالة, نقوم ببرمجة مفاتيح معينة للتحكم في حركة الثعبان عبر الشاشة. سنستخدم الرسالة “إل” على أنه المفتاح الأيسر, “ص” لليسار, “يو” لأعلى, و “د” للأسفل. سيتم وضع هذه التعليمات موضع التنفيذ عن طريق استدعاء الثعبان باستخدام وظيفة اتجاه السلحفاة.

قم بتضمين أمثلة التعليمات البرمجية التالية في ملف.

# Assigning directions
def moveleft():
    if snake.direction != "right":
        snake.direction = "left"

def moveright():
    if snake.direction != "left":
        snake.direction = "right"

def moveup():
    if snake.direction != "down":
        snake.direction = "up"

def movedown():
    if snake.direction != "up":
        snake.direction = "down"

def move():
    if snake.direction == "up":
        coord_y = snake.ycor()
        snake.sety(coord_y+20)

    if snake.direction == "down":
        coord_y = snake.ycor()
        snake.sety(coord_y-20)

    if snake.direction == "right":
        coord_x = snake.xcor()
        snake.setx(coord_x+20)

    if snake.direction == "left":
        coord_x = snake.xcor()
        snake.setx(coord_x-20)

wind.listen()
wind.onkeypress(moveleft, 'L')
wind.onkeypress(moveright, 'R')
wind.onkeypress(moveup, 'U')
wind.onkeypress(movedown, 'D')

يتحرك() الوظيفة المذكورة أعلاه تسمح بحركة الثعبان في الموضع المحدد ضمن إحداثيات محددة. يستمع() يعمل كمستمع للأحداث يستدعي الأساليب التي توجه الثعبان في اتجاه معين بمجرد أن يضغط المستخدم على الزر.

تنفيذ طريقة لعب اللعبة على شكل ثعبان

يجب تحويل اللعبة إلى عمل مباشر بعد إنشاء الهيكل الأساسي. هذا ما سيشمله:

  • إطالة طول الثعبان بلون مختلف في كل مرة يستهلك فيها طعامًا.
  • عندما يأكل الثعبان الطعام, زيادة نقاط اللاعب, ثم يتم تتبع أعلى درجة.
  • يمكن حمل الثعبان لحمايته من صدمه بالحائط أو حتى بجسده.
  • بعد اصطدامه بالثعبان, تستمر اللعبة.
  • ومع ذلك ، على الشاشة, هي أعلى نقاط للاعب على الرغم من إعادة تعيين نتيجة اللاعب إلى الصفر عند إعادة تشغيل اللعبة.
segments = []

#Implementing the gameplay
while True:
    wind.update()
    if snake.xcor() > 290 or snake.xcor() < -290 or snake.ycor() > 290 or snake.ycor() < -290:
        time.sleep(1)
        snake.goto(0, 0)
        snake.direction = "Stop"
        snake.shape("square")
        snake.color("green")

        for segment in segments:
            segment.goto(1000, 1000)
            segments.clear()
            player_score = 0
            delay_time = 0.1
            pen.clear()
            pen.write("Player's_score: {} Highest_score: {}".format(player_score, highest_score), align="center", font=("Arial", 24, "normal"))

        if snake.distance(snake_food) < 20:
            coord_x = random.randint(-270, 270)
            coord_y = random.randint(-270, 270)
            snake_food.goto(coord_x, coord_y)

            # Adding segment
            added_segment = turtle.Turtle()
            added_segment.speed(0)
            added_segment.shape("square")
            added_segment.color("white")
            added_segment.penup()
            segments.append(added_segment)
            delay_time -= 0.001
            player_score += 5

            if player_score > highest_score:
                highest_score = player_score
                pen.clear()
                pen.write("Player's_score: {} Highest_score: {}".format(player_score, highest_score), align="center", font=("Arial", 24, "normal"))

    # checking for collisions
    for i in range(len(segments)-1, 0, -1):
        coord_x = segments[i-1].xcor()
        coord_y = segments[i-1].ycor()
        segments[i].goto(coord_x, coord_y)

    if len(segments) > 0:
        coord_x = snake.xcor()
        coord_y = snake.ycor()
        segments[0].goto(coord_x, coord_y)
    move()

    for segment in segments:
        if segment.distance(snake) < 20:
            time.sleep(1)
            snake.goto(0, 0)
            snake.direction = "stop"
            snake.color('white')
            snake.shape('square')

            for segment in segments:
                segment.goto(1000, 1000)
                segment.clear()
                player_score = 0
                delay_time = 0.1
                pen.clear()
                pen.write("Player's_score: {} Highest_score: {}".format(player_score, highest_score), align="center", font=("Arial", 24, "normal"))

     time.sleep(delay_time)

turtle.mainloop()

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

عندما يجمع الثعبان الطعام ولا يصطدم, يتم عرض الطعام في موقع عشوائي داخل منطقة إحداثيات 270 درجة من حجم الشاشة. في كل مرة يأخذ الثعبان الطعام, تزيد درجة اللاعب بمقدار 5. إذا كان الثعبان متورطًا في تصادم مع اللاعب, يتم إعادة تعيين درجاتهم إلى 0 وتحتفظ الشاشة بأعلى درجاتها.

استنتاج

مكتبة السلاحف هي طريقة ممتعة وبسيطة لصنع لعبة الثعابين التي رأيناها في هذا البرنامج التعليمي. يمكنك أيضًا استخدام مكتبة PyGame في Python لتنفيذ نفس اللعبة. اكتشف كيف يمكنك استخدام اللعبة بشكل مختلف من خلال قراءة هذه PyGame تعليمات.

تحميل لعبة Snake Rivals Fun Snake

ثعبان تشغيل سباق 3D لعبة الجري

تنزيل Snake.io - Fun Snake .io Games