תבלין את משחקי הארקייד שלך על ידי הצגת אויבים.
לאויבים יש תפקיד מכריע ביצירת משחקים מרתקים ומאתגרים. הם מספקים מכשולים וייבים לשחקנים, מה שהופך את חווית המשחק למרגשת יותר. ספריית Arcade של Python מציעה דרך פשוטה לשלב אויבים במשחקים שלך.
צור משחק פשוט
לפני שמתחילים, ודא שיש לך pip מותקן במכשיר שלך. השתמש בפקודה זו כדי להתקין את מִקמֶרֶת סִפְרִיָה:
ארקייד להתקין pip
לאחר מכן, התחל ביצירת משחק פשוט שבו השחקן יכול לנוע ימינה ושמאלה באמצעות מקשי החצים.
הקוד המשמש במאמר זה זמין כאן מאגר GitHub והוא בחינם עבורך לשימוש תחת רישיון MIT.
יְבוּא מִקמֶרֶת
# מידות חלון
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600# תכונות שחקן
PLAYER_RADIUS = 25
PLAYER_SPEED = 5מעמדGameWindow(מִקמֶרֶת. חַלוֹן):
def__init__(עצמי, רוחב, גובה):
super().__init__(רוחב, גובה)
arcade.set_background_color (arcade.color. לבן)
self.player_x = רוחב // 2defon_draw(עצמי):
arcade.start_render()
arcade.draw_circle_filled (self.player_x, PLAYER_RADIUS, PLAYER_RADIUS, arcade.color. כְּחוֹל)defon_key_press(עצמי, מפתח, משנה):
אם key == arcade.key. שמאלה:
self.player_x -= PLAYER_SPEED
אליף key == arcade.key. ימין:
self.player_x += PLAYER_SPEEDdefעדכון(עצמי, זמן_דלתא):
לַעֲבוֹרdefרָאשִׁי():
window = GameWindow (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()
אם __שם__ == "__רָאשִׁי__":
רָאשִׁי()
יצירת אויב פשוט
כדי ליצור אויב שהורג את השחקן בהתנגשות, צור עיגול נוסף על המסך. בתוך ה on_draw פונקציה, אתה יכול לצייר את מעגל האויב הזה ולבדוק אם יש התנגשויות ב עדכון שיטה. אתה יכול גם השתמש ב-sprites עבור אויבים.
# הוסף למחלקה GameWindow
מעמדGameWindow(מִקמֶרֶת. חַלוֹן):
# ...def__init__(עצמי, רוחב, גובה):
# ...# תכונות אויב
self.enemy_x = רוחב // 2
self.enemy_y = גובה - PLAYER_RADIUS
self.enemy_radius = 20defon_draw(עצמי):
# ...
arcade.draw_circle_filled (self.enemy_x, self.enemy_y, self.enemy_radius, arcade.color. אָדוֹם)
defעדכון(עצמי, זמן_דלתא):
אם self.is_colision (self.player_x, self.player_y, self.enemy_x, self.enemy_y, PLAYER_RADIUS, self.enemy_radius):
הדפס("סוף המשחק!")
defהוא_התנגשות(עצמי, x1, y1, x2, y2, radius1, radius2):
distance_squared = (x1 - x2) ** 2 + (y1 - y2) ** 2
radius_sum_squared = (radius1 + radius2) ** 2
לַחֲזוֹר distance_squared <= radius_sum_squared
לגרום לאויב לעקוב אחרי השחקן
במשחקים מסוימים, אויבים יכולים לרדוף אחרי השחקן, ולהוסיף אלמנט דינמי למשחק. כדי ליצור אויב עוקב, עליך לעדכן את מיקומו על סמך מיקומו של השחקן. בְּכָל פַּעַם השחקן זז, האויב נע באותו כיוון. אתה יכול להשיג זאת על ידי שינוי ה- עדכון שיטה. צור קובץ חדש בשם enemy-follow-player.py והוסיפו את הקוד עם העדכונים הבאים:
# הוסף למחלקה GameWindow
מעמדGameWindow(מִקמֶרֶת. חַלוֹן):
# ...defעדכון(עצמי, זמן_דלתא):
אם self.player_x < self.enemy_x:
self.enemy_x -= PLAYER_SPEED
אליף self.player_x > self.enemy_x:
self.enemy_x += PLAYER_SPEED
אם self.is_collision (self.player_x, self.player_y,
self.enemy_x, self.enemy_y,
PLAYER_RADIUS, ENEMY_RADIUS):
הדפס("סוף המשחק!")
defהוא_התנגשות(עצמי, x1, y1, x2, y2, radius1, radius2):
distance_squared = (x1 - x2) ** 2 + (y1 - y2) ** 2
radius_sum_squared = (radius1 + radius2) ** 2
לַחֲזוֹר distance_squared <= radius_sum_squared
להלן הפלט:
הוספת כדורי אויב
כדי ליצור אויב שיורה כדורים, צור א כַּדוּר מחלקה ורשימה למעקב אחר כדורים פעילים. האויב יצור מעת לעת כדור חדש ויעדכן את מיקומו. צור קובץ חדש בשם bullets.py והוסיפו את הקוד עם העדכונים הבאים:
# הוסף למחלקה GameWindow
מעמדכַּדוּר:
def__init__(עצמי, x, y, רדיוס, מהירות):
self.x = x
self.y = y
self.radius = רדיוס
self.speed = מהירותdefעדכון(עצמי):
self.y -= self.speedמעמדGameWindow(מִקמֶרֶת. חַלוֹן):
# ...def__init__(עצמי, רוחב, גובה):
# ...# תכונות אויב
self.bullets = []
self.bullet_radius = 5
self.bullet_speed = 3
self.bullet_cooldown = 60# מספר פריימים בין שרצים של כדורים
self.bullet_timer = 0defon_draw(עצמי):
# ...
ל כַּדוּר ב self.bullets:
arcade.draw_circle_filled (bullet.x, bullet.y,
self.bullet_radius, arcade.color. שָׁחוֹר)defעדכון(עצמי, זמן_דלתא):
# ...self.bullet_timer += 1
אם self.bullet_timer >= self.bullet_cooldown:
self.bullets.append (Bullet (self.enemy_x, self.enemy_y - self.enemy_radius,
self.bullet_radius, self.bullet_speed))
self.bullet_timer = 0
ל כַּדוּר ב self.bullets:
bullet.update()
אם self.is_colision (self.player_x, self.player_y, self.enemy_x,
self.enemy_y, PLAYER_RADIUS, ENEMY_RADIUS):
הדפס("סוף המשחק!")
defהוא_התנגשות(עצמי, x1, y1, x2, y2, radius1, radius2):
distance_squared = (x1 - x2) ** 2 + (y1 - y2) ** 2
radius_sum_squared = (radius1 + radius2) ** 2
לַחֲזוֹר distance_squared <= radius_sum_squared
להלן הפלט:
הוספת נקודות בריאות לאויבים
במשחקים רבים, אויבים יכולים להחזיק בנקודות בריאות (HP), מה שמאפשר להם להחזיק מספר פגיעות לפני שהם מובסים. הוספת נקודות בריאות לאויבים יכולה להציג אלמנטים משחקיים אסטרטגיים ולספק תחושה של התקדמות ואתגר. צור קובץ חדש בשם heath-point.py והוסיפו את הקוד עם העדכונים הבאים:
# מידות חלון
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600# תכונות שחקן
PLAYER_RADIUS = 25
PLAYER_SPEED = 5# תכונות אויב
ENEMY_RADIUS = 20
ENEMY_HEALTH = 100מעמדGameWindow(מִקמֶרֶת. חַלוֹן):
def__init__(עצמי, רוחב, גובה):
super().__init__(רוחב, גובה)
arcade.set_background_color (arcade.color. לבן)
self.player_x = רוחב // 2
self.player_y = גובה // 2
self.enemy_x = רוחב // 2
self.enemy_y = גובה - PLAYER_RADIUS
self.enemy_health = ENEMY_HEALTH
print (self.enemy_health)
defon_draw(עצמי):
arcade.start_render()
arcade.draw_circle_filled (self.player_x,
self.player_y,
PLAYER_RADIUS,
arcade.color. כְּחוֹל)
אם self.enmy_health > 0:
arcade.draw_circle_filled (self.enemy_x,
self.enemy_y,
ENEMY_RADIUS,
arcade.color. אָדוֹם)
defעדכון(עצמי, זמן_דלתא):
אם self.is_collision (self.player_x, self.player_y,
self.enemy_x, self.enemy_y,
PLAYER_RADIUS, ENEMY_RADIUS):
self.enmy_health -= 10
print (self.enemy_health)
ה ENEMY_HEALTH קבוע יש ערך של 100 כדי לייצג את נקודות הבריאות הראשוניות של האויב. כאשר השחקן מתנגש באויב, אתה יכול להוריד כמה נקודות מבריאותו של האויב. כדי להציג את ערך הבריאות המעודכן, ניתן להדפיס אובייקט טקסט self.health_text שמראה את בריאות האויב הנוכחית.
על ידי שילוב נקודות בריאות עבור אויבים, אתה יכול להציג שכבה של אתגר ואסטרטגיה לשחקנים. ערך הבריאות המוצג מספק משוב חזותי ומאפשר לשחקנים לעקוב אחר מצב הבריאות שנותר של האויב.
בנוסף, אתה יכול להרחיב את הקוד על ידי הוספת היגיון וויזואליים נוספים, כגון הצגת סרגלי בריאות או יישום תנאי תבוסה כאשר בריאותו של האויב מגיעה לאפס.
שיטות עבודה מומלצות ליצירת אויבים
בעת תכנון אויבים למשחק שלך, חשוב לשקול מספר שיטות עבודה מומלצות כדי להבטיח שהם תורמים לחוויית משחק מאתגרת ומהנה. הנה כמה קווים מנחים שכדאי לעקוב אחריהם בעת יצירת אויבים:
תכונות מגוונות
צור אויבים עם תכונות משתנות כמו מהירות, גודל, בריאות וכוח התקפה. סוגים שונים של אויבים צריכים להציב רמות קושי שונות, המחייבות את השחקנים להתאים את האסטרטגיות שלהם בהתאם. על ידי הצגת שילוב של תכונות אויב, אתה יכול לשמור על המשחק רענן ומושך.
התנהגויות ייחודיות
תן לכל סוג אויב את דפוסי ההתנהגות הייחודיים שלו. אויבים מסוימים עשויים לנוע בצורה צפויה, בעוד שאחרים עשויים להפגין תנועות מורכבות או לא יציב. שקול לשלב אלגוריתמי AI של האויב כדי להפוך את ההתנהגות שלהם לאינטליגנטית ובלתי צפויה יותר, ולהוסיף שכבת אתגר נוספת לשחקנים.
נקודות בריאות (HP)
יישם נקודות בריאות עבור אויבים כדי להציג תחושה של התקדמות ועמידות. זה מאפשר לאויבים להחזיק מספר פגיעות לפני שהם מובסים. על ידי הקצאת כמויות שונות של HP לסוגי אויב שונים, אתה יכול ליצור היררכיה של קושי ולעודד שחקנים לתכנן אסטרטגיה ולתעדף את המטרות שלהם.
הפוך משחקים למהנים יותר עם אויבים
הוספת אויבים למשחקים שלך יכולה לשפר משמעותית את חווית המשחק. הם מציגים אתגרים ומניעים שחקנים לשפר את כישוריהם. אויבים יכולים לבוא בצורות שונות, ממכשולים פשוטים ועד יריבים מורכבים מונעי בינה מלאכותית. על ידי יישום אויבים ביעילות, אתה יכול להפוך את המשחקים שלך למושכים ומהנים יותר עבור השחקנים.