كيف تصنع لعبة ثعبان في بايثون

نشرت: 2022-02-02

إذا كنت ممن يستمتعون بلعب لعبة الثعبان ، فأنا متأكد من أنك ستجد هذا المقال ممتعًا.

في هذا المقال ، سوف أعلمك كيف تبتكر لعبة ثعبان بسيطة والتي حتى المبتدئين في بايثون سيجدون سهولة في تطويرها.

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

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

لذلك ، ستستخدم هذه المقالة مكتبة السلاحف لتنفيذ لعبة الثعبان البسيطة الخاصة بنا والتي هي صديقة للمبتدئين خاصة لمطوري Python المبتدئين.

بالإضافة إلى هذه الوحدة ، سنستخدم أيضًا وحدتين أخريين هما ؛

  • وحدة الوقت - ستتيح لنا هذه الطريقة تتبع عدد الثواني المنقضية منذ الوقت السابق.
  • وحدة عشوائية - تولد أرقامًا بشكل عشوائي في بايثون.

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

هذا ينبغي أن يكون متعة!

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

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

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

سوف نتبع الخطوات التالية لتنفيذ هذه اللعبة.

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

قم بإنشاء ملف snakegame.py الذي سنضيف فيه كود التنفيذ.

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

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

أضف الجزء التالي من التعليمات البرمجية إلى ملف snakegame.py الخاص بك.

 import turtle import random import time player_score = 0 highest_score = 0 delay_time = 0.1

إنشاء شاشة عرض اللعبة

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

أضف هذا الرمز إلى ملف Python.

 # 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 (x، y) على مواضع إحداثيات تحرك السلحفاة إلى موضع مطلق.

ثم نصنع الطعام الذي يجمعه الثعبان. سنرغب في عرض نقاط اللاعب في كل مرة يجمع فيها الثعبان الطعام وأعلى درجة يحققها اللاعب أثناء اللعبة. لذلك ، نستخدم طريقة pen.write () لتنفيذ ذلك. يخفي hideturtle () رمز السلحفاة من الشاشة في قسم الرأس الذي تمت كتابة هذا النص فيه.

من المهم إضافة turtle.mainloop () في نهاية الكود الخاص بك ، والذي سيعرض الشاشة لفترة أطول للسماح للمستخدم بعمل شيء ما على الشاشة.

قم بتشغيل الملف ويجب أن يكون لديك الإخراج التالي:

يتم عرض الثعبان والطعام بدرجة أولية وأعلى درجة للاعب.

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

هنا ، سنقوم بإعداد مفاتيح محددة توجه الاتجاه الذي سيتحرك فيه الثعبان على الشاشة. سنستخدم حرف "L" من أجل اليسار ، و "R" لليمين ، و "U" للأعلى ، و "D" للأسفل. سنقوم بتنفيذ هذه التوجيهات باستخدام وظيفة اتجاه السلحفاة التي ندعوها للثعبان.

أضف مقتطف الشفرة التالي إلى شفرتك.

 # 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')

تحدد وظيفة الحركة () أعلاه حركة الثعبان في الموضع المحدد ضمن قيمة إحداثي دقيقة.

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

تنفيذ لعبة الثعبان

بعد وضع النظرة الأساسية للعبة الثعبان الخاصة بنا ، سيتعين علينا جعل اللعبة في الوقت الفعلي.

سيشمل ذلك ما يلي:

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

أضف باقي هذا الرمز إلى ملف Python الخاص بك.

 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 بينما تحتفظ الشاشة بأعلى درجة.

الآن قم بإعادة ملف Python وسترى شاشة السلحفاة الخاصة بك تبدو كما يلي:

استنتاج

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

يمكنك أيضًا تجربة لعبة تخمين الأرقام في Python أو كيفية الحصول على بيانات JSON في Python.
استمتع بالبرمجة!