קוראים כמוך עוזרים לתמוך ב-MUO. כאשר אתה מבצע רכישה באמצעות קישורים באתר שלנו, אנו עשויים להרוויח עמלת שותף. קרא עוד.

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

יצירת משחק פשוט

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

כדי להתחיל, עליך לייבא את המודולים הדרושים. אתה תשתמש ב- pygame מודול לגישה לפונקציות של PyGame. כדי להתקין את המודול, אתה יכול השתמש במנהל חבילות pip:

צִפצוּף להתקין pygame

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

יְבוּא pygame
pygame.init()

מסך_רוחב = 750
מסך_גובה = 450
screen = pygame.display.set_mode((screen_width, screen_height))

obstacle_x = 400
obstacle_y = 400
רוחב_מכשול = 40
גובה_מכשול = 40
player_x = 200
player_y = 400
player_width = 20
player_height = 20

instagram viewer

בזמןנָכוֹן:

למִקרֶהבpygame.מִקרֶה.לקבל():

if event.type == pygame. לְהַפְסִיק:
pygame.לְהַפְסִיק()
לְהַפְסִיק()


keys = pygame.key.get_pressed()
אםמפתחות[pygame. K_LEFT]:
player_x -= 5
אםמפתחות[pygame. K_RIGHT]:
player_x += 5


אם player_x + player_width > obstacle_x ו-player_x < מכשול_x + רוחב_מכשולושחקן_י + גובה_שחקן > מכשול_י ושחקן_י < מכשול_י + גובה_מכשול:
game_over = נָכוֹן


מָסָך.למלא((0, 0, 0))
pygame.לצייר.rect(מָסָך, (255, 0, 0), (מכשול_x, מכשול_י, רוחב_מכשול, גובה_מכשול))
pygame.לצייר.rect(מָסָך, (0, 255, 0), (שחקן_x, שחקן_י, player_width, גובה_שחקן))
pygame.לְהַצִיג.עדכון()

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

יצירת תפריט התחל

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

game_state = "תפריט_התחלה"

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

defdraw_start_menu():
מָסָך.למלא((0, 0, 0))
font = pygame.font. SysFont('אריאל', 40)
title = font.render('המשחק שלי', נָכוֹן, (255, 255, 255))
start_button = font.render('הַתחָלָה', נָכוֹן, (255, 255, 255))
screen.blit (כותרת, (screen_width/2 - title.get_width()/2, screen_height/2 - title.get_height()/2))
screen.blit (start_button, (screen_width/2 - start_button.get_width()/2, screen_height/2 + start_button.get_height()/2))
pygame.לְהַצִיג.עדכון()

לאחר מכן תוכל להוסיף את draw_start_menu() פונקציה ללולאת המשחק הראשית.

בזמןנָכוֹן: 

למִקרֶהבpygame.מִקרֶה.לקבל():
if event.type == pygame. לְהַפְסִיק:
pygame.לְהַפְסִיק()
לְהַפְסִיק()

אם game_state == "תפריט_התחלה":
draw_start_menu()

אם game_state == "מִשְׂחָק":
keys = pygame.key.get_pressed()
# שאר הקוד

כעת, תפריט ההתחלה יימשך למסך. השלב האחרון הוא לטפל בקלט המשתמש. אתה יכול הוסף הצהרת if ללולאת המשחק הראשית כדי לבדוק אם המשתמש לחץ על כפתור ההתחלה.

אם game_state == "תפריט_התחלה":
keys = pygame.key.get_pressed()
אםמפתחות[pygame. K_SPACE]:
player_x = 200
player_y = 400
game_state = "מִשְׂחָק"
game_over = שֶׁקֶר

עם קוד זה, המשחק יתחיל כאשר המשתמש ילחץ על כפתור ההתחלה.

יישום ה-Game Over Screen

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

defdraw_game_over_screen():
מָסָך.למלא((0, 0, 0))
font = pygame.font. SysFont('אריאל', 40)
title = font.render('סוף המשחק', נָכוֹן, (255, 255, 255))
restart_button = font.render('R - הפעלה מחדש', נָכוֹן, (255, 255, 255))
quit_button = font.render('ש - צא', נָכוֹן, (255, 255, 255))
screen.blit (כותרת, (screen_width/2 - title.get_width()/2, screen_height/2 - title.get_height()/3))
screen.blit (restart_button, (screen_width/2 - restart_button.get_width()/2, screen_height/1.9 + restart_button.get_height()))
screen.blit (quit_button, (screen_width/2 - quit_button.get_width()/2, screen_height/2 + quit_button.get_height()/2))
pygame.לְהַצִיג.עדכון()

לאחר מכן תוכל להוסיף את הפונקציה הזו ללופ המשחק הראשי.

אם game_state == "תפריט_התחלה":
draw_start_menu()
אם game_state == "סוף המשחק":
draw_game_over_screen()

אם game_state == "מִשְׂחָק":
keys = pygame.key.get_pressed()
אםמפתחות[pygame. K_LEFT]:
player_x -= 5
אםמפתחות[pygame. K_RIGHT]:
player_x += 5

אם player_x + player_width > obstacle_x ו-player_x < מכשול_x + רוחב_מכשולושחקן_י + גובה_שחקן > מכשול_י ושחקן_י < מכשול_י + גובה_מכשול:
game_over = נָכוֹן
game_state = "סוף המשחק"

לבסוף, עליך לטפל בקלט המשתמש כדי לטפל בבחירת המשתמש. אתה יכול להוסיף הצהרת if ללולאת המשחק הראשית כדי לבדוק אם המשתמש לחץ על כפתור ההפעלה מחדש או היציאה.

אם game_state == "תפריט_התחלה":
keys = pygame.key.get_pressed()
אםמפתחות[pygame. K_SPACE]:
game_state = "מִשְׂחָק"
player_x = 200
player_y = 400
game_state = "מִשְׂחָק"
game_over = שֶׁקֶר

אם game_state == "סוף המשחק":
keys = pygame.key.get_pressed()
אםמפתחות[pygame. K_r]:
game_state = "תפריט_התחלה"
אםמפתחות[pygame. K_q]:
pygame.לְהַפְסִיק()
לְהַפְסִיק()

עם קוד זה, המשחק יופעל מחדש כאשר המשתמש ילחץ על כפתור 'R' וייצא כאשר המשתמש ילחץ על כפתור 'Q' במקלדת.

להלן הקוד המלא:

יְבוּא pygame

pygame.init()
מסך_רוחב = 750
מסך_גובה = 450
screen = pygame.display.set_mode((screen_width, screen_height))
obstacle_x = 400
obstacle_y = 400
רוחב_מכשול = 40
גובה_מכשול = 40
player_x = 200
player_y = 400
player_width = 20
player_height = 20
game_state = "תפריט_התחלה"

defdraw_start_menu():
מָסָך.למלא((0, 0, 0))
font = pygame.font. SysFont('אריאל', 40)
title = font.render('המשחק שלי', נָכוֹן, (255, 255, 255))
start_button = font.render('הַתחָלָה', נָכוֹן, (255, 255, 255))
screen.blit (כותרת, (screen_width/2 - title.get_width()/2, screen_height/2 - title.get_height()/2))
screen.blit (start_button, (screen_width/2 - start_button.get_width()/2, screen_height/2 + start_button.get_height()/2))
pygame.לְהַצִיג.עדכון()

defdraw_game_over_screen():
מָסָך.למלא((0, 0, 0))
font = pygame.font. SysFont('אריאל', 40)
title = font.render('סוף המשחק', נָכוֹן, (255, 255, 255))
restart_button = font.render('R - הפעלה מחדש', נָכוֹן, (255, 255, 255))
quit_button = font.render('ש - צא', נָכוֹן, (255, 255, 255))
screen.blit (כותרת, (screen_width/2 - title.get_width()/2, screen_height/2 - title.get_height()/3))
screen.blit (restart_button, (screen_width/2 - restart_button.get_width()/2, screen_height/1.9 + restart_button.get_height()))
screen.blit (quit_button, (screen_width/2 - quit_button.get_width()/2, screen_height/2 + quit_button.get_height()/2))
pygame.לְהַצִיג.עדכון()

בזמןנָכוֹן:
למִקרֶהבpygame.מִקרֶה.לקבל():
if event.type == pygame. לְהַפְסִיק:
pygame.לְהַפְסִיק()
לְהַפְסִיק()
אם game_state == "תפריט_התחלה":
draw_start_menu()
keys = pygame.key.get_pressed()
אםמפתחות[pygame. K_SPACE]:
player_x = 200
player_y = 400
game_state = "מִשְׂחָק"
game_over = שֶׁקֶר
אליף game_state == "סוף המשחק":
draw_game_over_screen()
keys = pygame.key.get_pressed()
אםמפתחות[pygame. K_r]:
game_state = "תפריט_התחלה"
אםמפתחות[pygame. K_q]:
pygame.לְהַפְסִיק()
לְהַפְסִיק()

אליף game_state == "מִשְׂחָק":
keys = pygame.key.get_pressed()
אםמפתחות[pygame. K_LEFT]:
player_x -= 5
אםמפתחות[pygame. K_RIGHT]:
player_x += 5

אם player_x + player_width > obstacle_x ו-player_x < מכשול_x + רוחב_מכשולושחקן_י + גובה_שחקן > מכשול_י ושחקן_י < מכשול_י + גובה_מכשול:
game_over = נָכוֹן
game_state = "סוף המשחק"

מָסָך.למלא((0, 0, 0))
pygame.לצייר.rect(מָסָך, (255, 0, 0), (מכשול_x, מכשול_י, רוחב_מכשול, גובה_מכשול))
pygame.לצייר.rect(מָסָך, (0, 255, 0), (שחקן_x, שחקן_י, player_width, גובה_שחקן))
pygame.לְהַצִיג.עדכון()

אליף סוף המשחק:
game_state = "סוף המשחק"
game_over = שֶׁקֶר

הקוד מתחיל בייבוא ​​ה- pygame מודול ואתחולו. לאחר מכן הוא יוצר חלון משחק ומצהיר על משתני המשחק הדרושים, כולל מיקום השחקן והמכשול, הממד ומצב המשחק.

הקוד מגדיר שתי פונקציות, draw_start_menu() ו draw_game_over_screen(), כדי לצייר את תפריט ההתחלה והמשחק על המסך. פונקציות אלה משתמשות בפונקציות PyGame כדי לצייר טקסט וכפתורים למסך.

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

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

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

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

הגבר את מעורבות המשתמש עם ממשק משתמש מושך חזותית

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

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