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

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

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

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

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

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

התחל בייבוא ​​מודול PyGame הדרוש ואתחולו.

יְבוּא pygame

pygame.init()

לאחר מכן, הגדר את המסך וצור את הנגן ואת חפצי האויב באמצעות pygame. Rect() פוּנקצִיָה.

# הגדר את המסך
screen = pygame.display.set_mode((800, 600))

# הגדר את הצבעים
שחור = (0, 0, 0)
לבן = (255, 255, 255)

# הגדר את מלבן השחקן ואת אובייקט האויב
שחקן = pygame. רק(350, 500, 50, 50)
אויב = pygame. רק(350, 0, 50, 50)

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

instagram viewer
# הגדר את לולאת המשחק
פועל = נָכוֹן

בזמן רץ:
ל מִקרֶה ב pygame.event.get():
אם event.type == pygame. לְהַפְסִיק:
פועל = שֶׁקֶר

# מלא את המסך בלבן
screen.fill (לבן)

# הזז את מלבן הנגן
keys = pygame.key.get_pressed()

אם keys[pygame. K_LEFT]:
player.x -= 5

אם keys[pygame. K_RIGHT]:
player.x += 5

אם keys[pygame. K_UP]:
player.y -= 5

אם keys[pygame. K_DOWN]:
player.y += 5

# בדוק אם יש התנגשות בין שחקן לאויב
אם player.colliderect (אויב):
פועל = שֶׁקֶר

# צייר את מלבן השחקן ואת חפץ האויב על המסך
pygame.draw.rect (מסך, שחור, שחקן)
pygame.draw.rect (מסך, שחור, אויב)

# עדכן את המסך
pygame.display.update()

# צא מהמשחק
pygame.quit()

הפנה אויבים לעבר השחקן

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

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

# חשב את המרחק בין האויב לשחקן
distance_x = player.x - enemy.x
distance_y = player.y - enemy.y
מרחק = (מרחק_x ** 2 + מרחק_י ** 2) ** 0.5

# הזז את האויב לעבר השחקן
מהירות = 2

אם מרחק != 0:
enemy.x += מהירות * מרחק_x / מרחק
enemy.y += speed * distance_y / distance

הפוך את תנועת האויב באקראי על המסך

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

כדי לעשות זאת, צור כיוון אקראי עבור האויב לנוע באמצעות המודול האקראי ב- Python. להשתמש ב בְּחִירָה() פונקציה לבחירת כיוון אקראי מתוך רשימה של כיוונים שהאויב יכול לנוע בהם. לאחר מכן עדכן את מיקומו של האויב בהתאם לכיוון הנבחר.

יְבוּא אַקרַאִי

# הזז את האויב באופן אקראי על המסך
direction = random.choice(['שמאלה', 'ימין', 'לְמַעלָה', 'מטה'])

אם כיוון == 'שמאלה':
enemy.x -= 5
אליף כיוון == 'ימין':
enemy.x += 5
אליף כיוון == 'לְמַעלָה':
enemy.y -= 5
אליף כיוון == 'מטה':
enemy.y += 5

תנועת אויב מבוססת קרבה

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

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

# הזז את האויב לעבר השחקן אם השחקן קרוב
מהירות = 2

אם מרחק < 300:
אם מרחק != 0:
enemy.x += מהירות * מרחק_x / מרחק
enemy.y += speed * distance_y / distance

האויב מתחמק מהתקפות שחקן

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

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

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

מהירות = 2

אם מרחק < 400:
אם מרחק != 0:
# חשב את וקטור היחידה לכיוון הנגן
unit_vector_x = distance_x / מרחק
unit_vector_y = distance_y / distance

# חשב את הווקטור הניצב
perpendicular_vector_x = -unit_vector_y
perpendicular_vector_y = unit_vector_x

# חשב את מכפלת הנקודה של הווקטור הניצב וה-
# וקטור יחידה
dot_product = perpendicular_vector_x * unit_vector_x
+ אנכי_וקטור_y * יחידת_וקטור_y

# הזז את האויב בניצב לווקטור היחידה
אם dot_product > 0:
enemy.x += מהירות * perpendicular_vector_x
enemy.y += מהירות * perpendicular_vector_y
אַחֵר:
enemy.x -= מהירות * אנכי_וקטור_x
enemy.y -= מהירות * perpendicular_vector_y

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

הוספת תכונות נוספות

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

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

# הוסף אויבים מרובים שנעים באקראי על המסך
אויבים = []

ל אני ב טווח(5):
אויב = pygame. Rect (random.randint(0, 750), random.randint(0, 550), 50,
50)

enemies.append (אויב)

# הוסף מכשולים שהשחקן צריך להימנע מהם
מכשול = pygame. רק(200, 250, 50, 50)

# הגדר את לולאת המשחק
שעון = pygame.time. שָׁעוֹן()
פועל = נָכוֹן

בזמן רץ:
ל מִקרֶה ב pygame.event.get():
אם event.type == pygame. לְהַפְסִיק:
פועל = שֶׁקֶר

# מלא את המסך בלבן
screen.fill (לבן)

# הזז את מלבן הנגן
keys = pygame.key.get_pressed()

אם keys[pygame. K_LEFT]:
player.x -= 5
אם keys[pygame. K_RIGHT]:
player.x += 5
אם keys[pygame. K_UP]:
player.y -= 5
אם keys[pygame. K_DOWN]:
player.y += 5

# הזז את האויבים באופן אקראי על המסך
ל אוֹיֵב ב אויבים:
direction = random.choice(['שמאלה', 'ימין', 'לְמַעלָה', 'מטה'])

אם כיוון == 'שמאלה':
enemy.x -= 5
אליף כיוון == 'ימין':
enemy.x += 5
אליף כיוון == 'לְמַעלָה':
enemy.y -= 5
אליף כיוון == 'מטה':
enemy.y += 5

# בדוק אם יש התנגשות בין שחקן לאויב
אם player.colliderect (אויב):
פועל = שֶׁקֶר

# צייר את מלבן השחקן, חפצי האויב והמכשול
# המסך
pygame.draw.rect (מסך, שחור, שחקן)

ל אוֹיֵב ב אויבים:
pygame.draw.rect (מסך, שחור, אויב)

pygame.draw.rect (מסך, שחור, מכשול)

# עדכן את המסך
pygame.display.update()

# הגדר את קצב הפריימים של המשחק
clock.tick(60)

# צא מהמשחק
pygame.quit()

שפר את חווית המשחק שלך עם אויבים

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