משחק נחש בשימוש במודול Python

אני בטוח שהחיבור הזה יעזור לך אם אתה חובב משחק הנחשים. אני אדריך אותך דרך השלבים של יצירת משחק פשוט בפוסט הזה שאפילו למתחילים ב-Python יהיה קל ליצור. ספריית PyGame ב-Python, שזו חבילת Python שאנו משתמשים בה כדי לפתח משחקים, היא אחת מהגישות השונות לעיצוב המשחק.

שימוש בצב הספרייה הוא אסטרטגיה נוספת. משתמשים יכולים ליצור גרפיקה ולצייר טפסים על בד מקוון הודות למודול זה, שכבר מותקן עם Python. כך, במדריך זה, נשתמש בספריית הצבים כדי לבנות את הנחש הבסיסי שלנו

משחק נחש בפייתון

  • מודול זמן. טכניקה זו מאפשרת לנו לעקוב אחר כמות השניות שחלפו מאז הפעם הקודמת.
  • משחק הנחש מודול אקראי – זה יוצר מספרים אקראיים בפייתון.

כלים אחרים שתדרשו כוללים עורך לטקסט שאתה מעדיף. אני אשתמש ב- VSCode בפוסט הזה. כמובן, תידרש על מנת להגדיר את Python 3 במכשיר שלך אם עדיין לא התקנת אותו. אתה יכול גם להוריד כדי להתקין את מהדר Geekflare. זו יכולה להיות חוויה מהנה מאוד!

תוכן

איך עובד משחק הנחשים

השחקנים חייבים לתמרן את הנחש כדי לרכוש את האוכל שמוצג על המסך כדי להשיג את הניקוד הטוב ביותר האפשרי במשחק הזה. השחקן מכוון את הנחש על ידי לחיצה על אחד מארבעת מקשי הכוונה המצביעים על הכיוון שבו הנחש נע.

הנחש יוסר מהמשחק אם הוא פוגע בשחקן או בחפץ. ההליכים שבהם נשתמש כדי לשחק את המשחק הזה קדימה.

  • ייבוא ​​ליישומים שלנו את המודולים המותקנים מראש (זמן צב, צב כמו גם אקראי).
  • תצוגת המסך של המשחק נוצרה עם מודול צב.
  • הגדר את המקשים כדי לשלוט בכיוון התנועה של הנחש מסביב למסך.
  • יישום המשחק.

צור את הקובץ snakegame.py שאליו נוסיף תוכנית יישום.

ייבוא ​​המודולים

חלק זה של התוכנית טוען את הזמן המותקן ב-Python, צָב, ומודולים אקראיים. בנוסף, מספרי ברירת מחדל עבור הציון הראשוני של השחקן, הציון המקסימלי שהם יכולים להגיע אליו, וכמות הזמן שהשחקן יעכב בין כל מהלך יוגדר. על מנת לקבוע כמה זמן התעכב, יש צורך במודול הזמן.

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 שלו, ניתן לכוון את הצב למיקום מדויק באמצעות קואורדינטות. האוכל שהנחש אוכל נעשה על ידינו.

בכל פעם שהנחש אוסף מזון, אנחנו רוצים להציג את הניקוד של כל שחקן. אנחנו גם רוצים להראות את הציון הגבוה ביותר שאדם מקבל במהלך המשחק. מהסיבה הזו, אנו משתמשים בעטים. בתור העט, לִכתוֹב. תאר שיטה להשלמת.

הגדרת מפתחות הכוונה לנחש

ברגע זה, אנו מתכנתים מקשים מסוימים כדי לשלוט בתנועת הנחש על פני המסך. נשתמש במכתב “ל” כמפתח השמאלי, “ר” לשמאל, “U” עבור כלפי מעלה, ו “ד” עבור מטה. הוראות אלו יושמו בפועל על ידי קריאה לנחש באמצעות פונקציית הכיוון של הצב.

כלול את דוגמאות הקוד הבאות שלך.

# 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 הוראות.

הורד את משחק הנחש הכיפי של Rivals Snake

משחק ריצה תלת מימד מירוץ ריצת נחש

הורד את Snake.io - משחקי Snake .io מהנים