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

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

יצירת משחק פשוט עם שחקן

אתה יכול למצוא את הקוד המלא ב ריפו זה של GitHub.

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

ארקייד להתקין pip

לאחר מכן, צור את השלד של משחק פשוט:

יְבוּא מִקמֶרֶת

SCREEN_WIDTH = 640
SCREEN_HEIGHT = 480

מעמדהמשחק שלי(מִקמֶרֶת. חַלוֹן):
def__init__(עצמי, רוחב, גובה):
super().__init__(רוחב, גובה, "המשחק שלי")
arcade.set_background_color (arcade.color. לבן)

defon_draw(עצמי):
arcade.start_render()

defעדכון(עצמי, זמן_דלתא):
לַעֲבוֹר

MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()

זה יוצר חלון עם רקע לבן. לאחר מכן, הוסף שחקן למשחק שלך:

מעמדשחקן:
def__init__(עצמי, x, y):
self.x = x
self.y = y
self.speed = 5
self.radius = 20

defלצייר(עצמי):
arcade.draw_circle_filled (self.x, self.y, self.radius, arcade.color. כְּחוֹל)

instagram viewer

defזוז שמאלה(עצמי):
self.x -= self.speed

defזוז ימינה(עצמי):
self.x += self.speed

defלזוז_מעלה(עצמי):
self.y += self.speed

defלרדת(עצמי):
self.y -= self.speed

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

יְבוּא מִקמֶרֶת

SCREEN_WIDTH = 640
SCREEN_HEIGHT = 480

מעמדהמשחק שלי(מִקמֶרֶת. חַלוֹן):
def__init__(עצמי, רוחב, גובה):
super().__init__(רוחב, גובה, "המשחק שלי")
arcade.set_background_color (arcade.color. לבן)
self.player = שחקן (SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2)

defon_draw(עצמי):
arcade.start_render()
self.player.draw()

defעדכון(עצמי, זמן_דלתא):
לַעֲבוֹר

defרָאשִׁי():
MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()

אם __שם__ == "__רָאשִׁי__":
רָאשִׁי()

עכשיו יש לך שחקן במשחק שאתה יכול לצייר על המסך.

תגובה ללחיצות ושחרורים על מקשים

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

כדי להשתמש בשיטות אלה, עליך להגדיר אותן ברשימה שלך מִקמֶרֶת. חַלוֹן תת מחלקה. כאשר השחקן לוחץ או משחרר מקש, ארקייד יפעיל את השיטה המתאימה, ויעביר לו שני ארגומנטים: מקש ומוסיפים. מַפְתֵחַ הוא מספר שלם המייצג את קוד המפתח של המקש לחוץ או משוחרר. משנה הוא שדה סיביות המייצג כל מקשי שינוי שהשחקן גם לחץ עליהם, כמו Shift או Control.

הנה דוגמה כיצד להגיב ללחיצת מקש במשחק שלך:

מעמדהמשחק שלי(מִקמֶרֶת. חַלוֹן):
defon_key_press(עצמי, מפתח, משנה):
אם key == arcade.key. שמאלה:
# הזז שחקן שמאלה
אליף key == arcade.key. ימין:
# הזז שחקן ימינה
אליף key == arcade.key. לְמַעלָה:
# הזז שחקן למעלה
אליף key == arcade.key. מטה:
# הזיזו את השחקן למטה

כדי להגיב לגירסאות מפתח, אתה יכול להגדיר את on_key_release שיטה באותו אופן:

מעמדהמשחק שלי(מִקמֶרֶת. חַלוֹן):
defon_key_release(עצמי, מפתח, משנה):
אם key == arcade.key. שמאלה:
# הפסק להזיז את השחקן שמאלה
אליף key == arcade.key. ימין:
# תפסיק להזיז את השחקן ימינה
אליף key == arcade.key. לְמַעלָה:
# תפסיק להזיז את השחקן למעלה
אליף key == arcade.key. מטה:
# תפסיק להזיז את השחקן למטה

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

התאמה אישית של טיפול בקלט מקלדת כך שיתאים לצרכי המשחק שלך

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

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

הנה דוגמה:

מעמדהמשחק שלי(מִקמֶרֶת. חַלוֹן):
def__init__(עצמי, רוחב, גובה, כותרת):
super().__init__(רוחב, גובה, כותרת)
self.player = Player(100, 100)

self.key_map = {
arcade.key. שמאל: self.player.move_left,
arcade.key. מימין: self.player.move_right,
arcade.key. למעלה: self.player.move_up,
arcade.key. למטה: self.player.move_down
}

defon_key_press(עצמי, מפתח, משנה):
אם מַפְתֵחַ ב self.key_map:
self.key_map[key]()

defon_key_release(עצמי, מפתח, משנה):
אם מַפְתֵחַ ב self.key_map:
self.key_map[מקש + 1]()

השב לכניסות משתמש בזמן אמת

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