logo

כיצד לפתח משחק ב- Python

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

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

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

פיט שיינרס מפתח אותו כדי לתפוס את מקומו של PySDL.

תנאים מוקדמים עבור Pygame

אנחנו צריכים להבין את שפת התכנות Python כדי ללמוד Pygame.

סוג של ב-java

התקנת Pygame

כדי להתקין את Pygame, פתח מסוף שורת פקודה והזן את הפקודה הבאה.

 pip install pygame 

אנחנו יכולים להתקין אותו גם דרך IDE. למדריך התקנה נוסף, בקר במדריך המלא שלנו ל-pygame (https://www.javatpoint.com/pygame). כאן תמצאו את כל ההסברים החיוניים למשחקי משחק.

דוגמה פשוטה של ​​Pygame

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

חלון.פתח
 import pygame pygame.init() screen = pygame.display.set_mode((400,500)) done = False while not done: for event in pygame.event.get(): if event.type == pygame.QUIT: done = True pygame.display.flip() 

תְפוּקָה:

איך לפתח משחק בפייתון

הֶסבֵּר:

הקוד שסופק פותח חלון Pygame בגודל 400x500 פיקסלים ומתחיל לולאה שצופה באירועים כל הזמן. הלולאה משנה את המשתנה 'בוצע' ל-True, מה שמסיים את הלולאה ומסיים את התוכנית אם מזוהה אירוע QUIT (בדרך כלל כשהמשתמש עוזב את החלון). מעדכן את התצוגה ומוודא שכל השינויים מוצגים על המסך הודות לשיטת 'pygame.display.flip()'. בקיצור, הקוד יוצר חלון Pygame קטן שנשאר פעיל עד שהמשתמש מבטל אותו, ומציג מבנה תוכנית בסיסי המונחה על ידי אירועים.

כל הגרפיקה תצויר בחלון ה-pygame.

בואו נבין את התחביר הבסיסי של התוכנית לעיל.

    ייבוא ​​pygame:זה המודול שנותן לנו גישה לכל הפונקציות של Pygame.חוֹם():הוא משמש כדי לאתחל כל אחד מהמודולים הדרושים של ה-pygame.display.set_mode((רוחב, גובה)):זה משמש כדי להתאים את גודל החלון. זה יחזיר את הפריט על פני השטח. הפעולות הגרפיות מתבצעות דרך אובייקט פני השטח.event.get():התוצאה היא תור אירועים ריק. אם לא נקרא לזה, מערכת ההפעלה תתפוס את המשחק כלא מגיב, והודעות החלון יתחילו להצטבר.לְהַפְסִיק:כאשר אנו לוחצים על כפתור הצלב בפינת החלון, הוא משמש כדי לבטל את האירוע.display.flip():כל עדכון למשחק בא לידי ביטוי בו. עלינו ליצור קשר עם התצוגה בכל פעם שאנו מבצעים שינויים.flip() היא פונקציה.

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

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

ניב שינה

דוגמא -

גיל ריהאנה
 import pygame from math import pi pygame.init() # size variable is using for set screen size size = [400, 300] screen = pygame.display.set_mode(size) pygame.display.set_caption('Example program to draw geometry') # done variable is using as flag done = False clock = pygame.time.Clock() while not done: # clock.tick() limits the while loop to a max of 10 times per second. clock.tick(10) for event in pygame.event.get(): # User did something if event.type == pygame.QUIT: # If user clicked on close symbol done = True # done variable that we are complete, so we exit this loop # All drawing code occurs after the for loop and but # inside the main while done==False loop. # Clear the default screen background and set the white screen background screen.fill((0, 0, 0)) # Draw on the screen a green line which is 5 pixels wide. pygame.draw.line(screen, (0, 255, 0), [0, 0], [50, 30], 5) # Draw on the screen a green line which is 5 pixels wide. pygame.draw.lines(screen, (0, 0, 0), False, [[0, 80], [50, 90], [200, 80], [220, 30]], 5) # Draw a rectangle outline pygame.draw.rect(screen, (0, 0, 0), [75, 10, 50, 20], 2) # Draw a solid rectangle pygame.draw.rect(screen, (0, 0, 0), [150, 10, 50, 20]) # This draw an ellipse outline, using a rectangle as the outside boundaries pygame.draw.ellipse(screen, (255, 0, 0), [225, 10, 50, 20], 2) # This draw a solid ellipse, using a rectangle as the outside boundaries pygame.draw.ellipse(screen, (255, 0, 0), [300, 10, 50, 20]) # Draw a triangle using the polygon function pygame.draw.polygon(screen, (0, 0, 0), [[100, 100], [0, 200], [200, 200]], 5) # This draw a circle pygame.draw.circle(screen, (0, 0, 255), [60, 250], 40) # This draw an arc pygame.draw.arc(screen, (0, 0, 0), [210, 75, 150, 125], 0, pi / 2, 2) # This function must write after all the other drawing commands. pygame.display.flip() # Quite the execution when clicking on close pygame.quit() 

תְפוּקָה:

כיצד לפתח משחק ב- Python

הֶסבֵּר:

תוכנת Python הנתונה יוצרת חלון גרפי עם צורות גיאומטריות שונות מצוירות בו באמצעות חבילת Pygame. התוכנית יוצרת חלון Pygame בגודל 400x300 פיקסלים, ואז היא מתחילה לולאה שצופה באירועים כל הזמן, ומוודאת שהחלון נשאר פתוח עד שהמשתמש יוצא ממנו. הוא מנקה את המסך בתחילת הלולאה הזו ולאחר מכן משתמש בשגרות הציור של Pygame כדי ליצור מגוון צורות עם צבעים ורוחב קווים משתנים. צורות אלה כוללות קווים, מצולעים, אליפסות, עיגולים וקשתות. לכל צורה יש את הקואורדינטות והמאפיינים המתאימים לה. לבסוף, 'pygame.display.flip()' משמש לרענון התצוגה. התוכנית מפסיקה את pygame עם סגירת החלון.

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

דוגמה - פיתוח משחק נחש באמצעות Pygame

תכנית -

 # Snake Tutorial Using Pygame import math import random import pygame import tkinter as tk from tkinter import messagebox class cube(object): rows = 20 w = 500 def __init__(self, start, dirnx=1, dirny=0, color=(255, 0, 0)): self.pos = start self.dirnx = 1 self.dirny = 0 self.color = color def move(self, dirnx, dirny): self.dirnx = dirnx self.dirny = dirny self.pos = (self.pos[0] + self.dirnx, self.pos[1] + self.dirny) def draw(self, surface, eyes=False): dis = self.w // self.rows i = self.pos[0] j = self.pos[1] pygame.draw.rect(surface, self.color, (i * dis + 1, j * dis + 1, dis - 2, dis - 2)) if eyes: centre = dis // 2 radius = 3 circleMiddle = (i * dis + centre - radius, j * dis + 8) circleMiddle2 = (i * dis + dis - radius * 2, j * dis + 8) pygame.draw.circle(surface, (0, 0, 0), circleMiddle, radius) pygame.draw.circle(surface, (0, 0, 0), circleMiddle2, radius) # This class is defined for snake design and its movement class snake(object): body = [] turns = {} def __init__(self, color, pos): self.color = color self.head = cube(pos) self.body.append(self.head) self.dirnx = 0 self.dirny = 1 def move(self): for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() keys = pygame.key.get_pressed() # It will manage the keys movement for the snake for key in keys: if keys[pygame.K_LEFT]: self.dirnx = -1 self.dirny = 0 self.turns[self.head.pos[:]] = [self.dirnx, self.dirny] elif keys[pygame.K_RIGHT]: self.dirnx = 1 self.dirny = 0 self.turns[self.head.pos[:]] = [self.dirnx, self.dirny] elif keys[pygame.K_UP]: self.dirnx = 0 self.dirny = -1 self.turns[self.head.pos[:]] = [self.dirnx, self.dirny] elif keys[pygame.K_DOWN]: self.dirnx = 0 self.dirny = 1 self.turns[self.head.pos[:]] = [self.dirnx, self.dirny] # Snake when hit the boundary wall for i, c in enumerate(self.body): p = c.pos[:] if p in self.turns: turn = self.turns[p] c.move(turn[0], turn[1]) if i == len(self.body) - 1: self.turns.pop(p) else: if c.dirnx == -1 and c.pos[0] = c.rows - 1: c.pos = (0, c.pos[1]) elif c.dirny == 1 and c.pos[1] &gt;= c.rows - 1: c.pos = (c.pos[0], 0) elif c.dirny == -1 and c.pos[1] <= 0 1 0: c.pos="(c.pos[0]," c.rows - 1) else: c.move(c.dirnx, c.dirny) def reset(self, pos): self.head="cube(pos)" self.body="[]" self.body.append(self.head) self.turns="{}" self.dirnx="0" self.dirny="1" # it will add the new cube in snake tail after every successful score addcube(self): dx, dy="tail.dirnx," tail.dirny if dx="=" and self.body.append(cube((tail.pos[0] 1, tail.pos[1]))) elif -1 + 1: self.body.append(cube((tail.pos[0], tail.pos[1] 1))) -1: self.body[-1].dirnx="dx" self.body[-1].dirny="dy" draw(self, surface): for i, c enumerate(self.body): i="=" c.draw(surface, true) c.draw(surface) drawgrid(w, rows, sizebtwn="w" rows x="0" y="0" l range(rows): draw grid line pygame.draw.line(surface, (255, 255, 255), (x, 0), w)) (0, y), (w, y)) this class define game surface redrawwindow(surface): global width, s, snack is used to surface.fill((0, 0, 0)) s.draw(surface) snack.draw(surface) drawgrid(width, surface) pygame.display.update() randomsnack(rows, item): positions="item.body" while true: len(list(filter(lambda z: z.pos="=" positions)))> 0: continue else: break return (x, y) # Using Tkinter function to display message def message_box(subject, content): root = tk.Tk() root.attributes(&apos;-topmost&apos;, True) root.withdraw() messagebox.showinfo(subject, content) try: root.destroy() except: pass # main() function def main(): global width, rows, s, snack width = 500 rows = 20 win = pygame.display.set_mode((width, width)) s = snake((255, 0, 0), (10, 10)) snack = cube(randomSnack(rows, s), color=(0, 255, 0)) flag = True clock = pygame.time.Clock() while flag: pygame.time.delay(50) clock.tick(10) s.move() if s.body[0].pos == snack.pos: s.addCube() snack = cube(randomSnack(rows, s), color=(0, 255, 0)) for x in range(len(s.body)): if s.body[x].pos in list(map(lambda z: z.pos, s.body[x + 1:])): print(&apos;Score: 
&apos;, len(s.body)) message_box(&apos;You Lost!
&apos;, &apos;Play again...
&apos;) s.reset((10, 10)) break redrawWindow(win) pass main() </=>

תְפוּקָה:

כיצד לפתח משחק ב- Python

אם הנחש יגע בעצמו אז הוא יסיים את המשחק ויציג את ההודעה הבאה.

אופס בג'אווה
כיצד לפתח משחק ב- Python

כדי להמשיך, פשוט לחץ על כפתור אישור. מסוף Pycharm מציג את הניקוד שלנו (השתמשנו ב-Pycharm IDE, אבל אתה יכול להשתמש בכל Python IDE).

כיצד לפתח משחק ב- Python

הֶסבֵּר:

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

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