בין אם התנגשות מעניקה כוח-אפ או מובילה לסיום המשחק, אתה צריך להיות מסוגל לזהות אותה. הנה איך לעשות זאת עם ספריית הארקייד של Python.
התנגשויות הן היבט בסיסי במשחקיות בז'אנרים רבים של משחקי וידאו. הם מוסיפים שכבה של אתגר והתרגשות למשחקים, המחייבים את השחקנים לנווט מכשולים, להתחמק מאויבים ולאסוף תגמולים.
יישום זיהוי התנגשות וטיפול במשחקים שלך הוא חיוני ליצירת מכניקת משחק מציאותית ודינמית שגורמת לשחקנים להיות מעורבים ומבדרים. אתה יכול לזהות בקלות התנגשויות עם ספריית הארקייד, באמצעות הפונקציות המובנות שלה.
יצירת משחק פשוט
לפני שמתחילים, ודא שיש לך pip מותקן במכשיר שלך. השתמש בפקודה זו כדי להתקין את ספריית הארקייד:
ארקייד להתקין pip
לאחר מכן, צור משחק שבו השחקן יכול לנוע ימינה ושמאלה כדי להימנע מהתנגשות במלבן אויב. אתה יכול להשתמש בפונקציית הציור המובנית עבור ספרייטים.
אתה יכול למצוא את השלם קוד בריפו זה של GitHub.
הנה הקוד למשחק:
יְבוּא מִקמֶרֶת
SCREEN_WIDTH = 640
SCREEN_HEIGHT = 480
MOVEMENT_SPEED = 5מעמדהמשחק שלי(מִקמֶרֶת. חַלוֹן):
)
def__init__(עצמי, רוחב, גובה):
super().__init__(רוחב, גובה, "המשחק שלי"
arcade.set_background_color (arcade.color. לבן)
self.player = ארקייד. SpriteSolidColor(50, 50, arcade.color. כְּחוֹל)
self.player.center_x = SCREEN_WIDTH // 3
self.player.center_y = 50
self.enmy = ארקייד. SpriteSolidColor(50, 50, arcade.color. אָדוֹם)
self.enemy.center_x = SCREEN_WIDTH // 2
self.enemy.center_y = 50defon_draw(עצמי):
arcade.start_render()
self.player.draw()
self.enemy.draw()defon_key_press(עצמי, מפתח, משנה):
אם key == arcade.key. שמאלה:
self.player.center_x -= MOVEMENT_SPEED
אליף key == arcade.key. ימין:
self.player.center_x += MOVEMENT_SPEEDdefעדכון(עצמי, זמן_דלתא):
אם arcade.check_for_collision (self.player, self.enemy):
הדפס("סוף המשחק")defרָאשִׁי():
משחק = MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()
אם __שם__ == "__רָאשִׁי__":
רָאשִׁי()
תכונות זיהוי התנגשות של ארקייד
ספריית ארקייד מספקת דרך פשוטה לזהות התנגשויות בין ספרייטים. ה לבדוק_לאיתר_התנגשות הפונקציה לוקחת שני ספרייטים כארגומנטים ומחזירה ערך בוליאני המציין אם הספרייטים התנגשו. אתה יכול להשתמש בפונקציה זו כדי לזהות התנגשויות בין השחקן לבין ספרייטים של האויב במשחק שלך.
אתה יכול לשנות את עדכון שיטה לבדוק אם יש התנגשויות בין השחקן לספרייטים של האויב. אם הספרייה מזהה התנגשות, תוכל להדפיס סוף המשחק לקונסולה.
הנה הקוד המעודכן:
defעדכון(עצמי, זמן_דלתא):
אם arcade.check_for_collision (self.player, self.enemy):
הדפס("סוף המשחק")
אַחֵר:
self.player.update()
עם השינוי הזה, המשחק שלך יזהה התנגשויות והדפס סוף המשחק טקסט אם השחקן מתנגש באויב.
הוספת תכונות נוספות
כדי להפוך את המשחק שלך למושך יותר, אתה יכול להוסיף תכונות נוספות כמו ניקוד, חיזוקים ואויבים מרובים.
לדוגמה, אתה יכול ליצור רשימה של אויבים ולעדכן את המשחק כדי להוליד אויבים חדשים בעמדות אקראיות לאחר כל התנגשות. אתה יכול להזיז את השחקן שמאל וימין כדי להימנע מהאויב ולקלוע נקודה. להלן דוגמה כיצד ניתן ליישם את התכונות הללו:
יְבוּא אַקרַאִי
מעמדהמשחק שלי(מִקמֶרֶת. חַלוֹן):
def__init__(עצמי, רוחב, גובה):
super().__init__(רוחב, גובה, "המשחק שלי")
arcade.set_background_color (arcade.color. לבן)
self.player = ארקייד. SpriteSolidColor(50, 50, arcade.color. כְּחוֹל)
self.player.center_x = SCREEN_WIDTH // 2
self.player.center_y = 50
self.enemies = ארקייד. SpriteList()
self.score = 0
ל אני ב טווח(3):
אויב = ארקייד. SpriteSolidColor(50, 50, arcade.color. אָדוֹם)
enemy.center_x = random.randint(0, SCREEN_WIDTH)
enemy.center_y = random.randint (SCREEN_HEIGHT // 2, SCREEN_HEIGHT)
self.enemies.append (אויב)defon_draw(עצמי):
arcade.start_render()
self.player.draw()
self.enemies.draw()
arcade.draw_text(f"ציון: {self.score}", 10, SCREEN_HEIGHT - 30, arcade.color. שָׁחוֹר, 16)
defעדכון(עצמי, זמן_דלתא):
אם arcade.check_for_colision_with_list (self.player, self.enemies):
הדפס("סוף המשחק")
arcade.close_window()
אַחֵר:
self.player.update()
ל אוֹיֵב ב self.enemies:
enemy.center_y -= MOVEMENT_SPEED / 2
אם enemy.center_y < 0:
enemy.center_x = random.randint(0, SCREEN_WIDTH)
enemy.center_y = random.randint (SCREEN_HEIGHT // 2, SCREEN_HEIGHT)
self.score += 1
עם השינויים האלה, למשחק שלך יש עכשיו אויבים מרובים שצצים בעמדות אקראיות ונעים כלפי מטה. השחקן צובר נקודה עבור כל אויב שנמנע בהצלחה, והמשחק מסתיים אם השחקן מתנגש באויב כלשהו.
שפר את מעורבות המשתמש עם התנגשויות
על ידי הוספת תכונות של זיהוי התנגשות וטיפול למשחקים שלך, תוכל ליצור חוויות משחק סוחפות ומאתגרות יותר לשחקנים. ממשחקי הימנעות ואסוף פשוטים ועד למשחקי פלטפורמה ויורים מורכבים יותר, התנגשויות ממלאות תפקיד מכריע ביצירת מכניקת משחק מרתקת ומספקת.
לכן, אם אתה רוצה ליצור משחקים מרתקים וסוחפים יותר שגורמים לשחקנים לחזור לעוד, שקול לשלב תכונות של זיהוי התנגשות במכניקת המשחק שלך.