logo

Hogyan lehet játékot fejleszteni Pythonban

A leginkább alkalmazkodó nyelv a Python, amelyet szinte minden iparágban használnak, beleértve a játékfejlesztést, webfejlesztést, gépi tanulást, mesterséges intelligenciát és GUI-alkalmazásokat.

A játék fejlesztése a pygame csomag segítségével történik, amely a Python beépített funkciója. A Python programozás kezdetleges megértésével a pygame modul használatával vizuálisan tetszetős játékokat készíthetünk megfelelő animációval, hangeffektusokkal és zenével.

A Pygame nevű, többplatformos könyvtárat videojátékok készítésére használják. Hangkönyvtárakkal és számítógépes látványelemekkel rendelkezik, amelyek tipikus játékélményt biztosítanak a játékosnak.

Pete Shinners a PySDL helyére fejleszti.

A Pygame előfeltételei

A Pygame megtanulásához meg kell értenünk a Python programozási nyelvet.

null ellenőrzés java-ban

Pygame telepítése

A Pygame telepítéséhez nyisson meg egy parancssori terminált, és írja be a következő parancsot.

 pip install pygame 

IDE-n keresztül is telepíthetjük. További telepítési útmutatóért látogassa meg teljes pygame oktatóanyagunkat (https://www.javatpoint.com/pygame). Itt megtalálja az összes lényeges pygame magyarázatot.

java metódus felülbírálása

Egyszerű Pygame példa

Íme a következő példa egy egyszerű pygame ablak létrehozására.

 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() 

Kimenet:

Hogyan készítsünk játékot Pythonban

Magyarázat:

A mellékelt kód megnyit egy 400x500 pixeles Pygame ablakot, és elindít egy ciklust, amely folyamatosan figyeli az eseményeket. A ciklus a 'done' változót True értékre változtatja, ami befejezi a ciklust, és leállítja a programot, ha a rendszer egy QUIT eseményt észlel (általában amikor a felhasználó kilép az ablakból). Frissíti a kijelzőt, és gondoskodik arról, hogy a „pygame.display.flip()” metódusnak köszönhetően minden változtatás megjelenjen a képernyőn. Röviden fogalmazva, a kód létrehoz egy kis Pygame ablakot, amely aktív marad, amíg a felhasználó el nem utasítja, és egy eseményvezérelt alapvető programstruktúrát mutat be.

Minden grafika megjelenik a pygame ablakban.

Ismerjük meg a fenti program alapvető szintaxisát.

    pygame importálása:Ez az a modul, amely hozzáférést biztosít számunkra a Pygame összes funkciójához.hőség():A pygame minden szükséges moduljának inicializálására szolgál.display.set_mode((szélesség, magasság)):Az ablak méretének beállítására szolgál. A felületen visszaadja az elemet. A grafikus műveleteket a felületi objektumon keresztül hajtják végre.event.get():Az eredmény egy üres eseménysor. Ha nem hívjuk, az operációs rendszer úgy fogja fel, hogy a játék nem reagál, és az ablak üzenetei gyűlni kezdenek.KILÉPÉS:Amikor rákattintunk az ablak sarkában lévő kereszt gombra, az esemény elvetésére szolgál.display.flip():A játék minden frissítése megjelenik benne. Minden változtatáskor kapcsolatba kell lépnünk a kijelzővel. A flip() egy függvény.

Bármilyen forma rajzolható a Pygame felületére, beleértve a gyönyörű betűtípusokat és képeket. A Pygame számos beépített módszere lehetővé teszi geometriai alakzatok rajzolását a képernyőre. Ezek az űrlapok a játék létrehozásának első lépéseit jelentik.

hány mb egy GB-ban

Vizsgáljuk meg az alábbi ábrát egy képernyőre rajzolt űrlapról.

Példa -

 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() 

Kimenet:

Hogyan készítsünk játékot Pythonban

Magyarázat:

hány nulla van 1 milliárdban

Az adott Python program a Pygame csomag segítségével grafikus ablakot hoz létre, amelybe különböző geometriai alakzatokat rajzol. A program létrehoz egy 400x300 pixeles Pygame ablakot, majd elindít egy ciklust, amely folyamatosan figyeli az eseményeket, ügyelve arra, hogy az ablak nyitva maradjon, amíg a felhasználó ki nem lép belőle. A ciklus elején törli a képernyőt, majd a Pygame rajzolási rutinjait használja különböző színű és vonalszélességű formák létrehozásához. Ezek az alakzatok vonalakat, sokszögeket, ellipsziseket, köröket és íveket tartalmaznak. Minden formának megvannak a megfelelő koordinátái és tulajdonságai. Végül a 'pygame.display.flip()' a kijelző frissítésére szolgál. A program leállítja a pygame-et az ablak bezárásakor.

Az alkalmazás példaként szolgál a Pygame rajzi képességeinek alkalmazkodóképességére és változatosságára, és keretet biztosít az interaktív grafikus alkalmazások fejlesztéséhez. A fejlesztők vizuális összetevők széles skáláját hozhatják létre a Pygame grafikus környezetében olyan paraméterek beállításával, mint a koordináták, színek és vonalszélességek. Ez lehetővé teszi interaktív multimédiás alkalmazások, játékok és szimulációk létrehozását.

Példa – Snake játék fejlesztése Pygame segítségével

Program -

 # 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() </=>

Kimenet:

Hogyan készítsünk játékot Pythonban

Ha a kígyó megérinti magát, akkor befejezi a játékot és a következő üzenetet jeleníti meg.

Hogyan készítsünk játékot Pythonban

A folytatáshoz egyszerűen kattintson az OK gombra. A Pycharm terminál megjeleníti a pontszámunkat (mi a Pycharm IDE-t használtuk, de használhat bármilyen Python IDE-t).

Hogyan készítsünk játékot Pythonban

Magyarázat:

objektív java

A mellékelt Python szkript a Pygame csomagot használja egy egyszerű Snake játék létrehozásához. Osztályokat hoz létre mind a kígyónak, mind a testét alkotó külön kockáknak. A Pygame a játék ablakának beállítására szolgál, amely egy rácsszerkezetet és egy mozgó kígyót tartalmaz. Egy 'snack' kocka elfogyasztása után a kígyó megnyúlik, és ha belefut önmagába vagy a határoló falakba, akkor a játéknak vége.

A kígyó irányának kezeléséhez, a rács véletlenszerű pontjain falatkák generálásához, a kígyó feje és teste közötti ütközések észleléséhez, a játék állapotának frissítéséhez és a játékablak újrarajzolásához a játék logikájának kezelnie kell a felhasználói bevitelt. A játék interakcióinak és vizuális frissítéseinek vezérléséhez a szkript a Pygame eseménykezelési és rajzolási módszereit használja. Ezenkívül rendelkezik egy alapvető üzenetdoboz-funkcióval, amely a Tkinter segítségével jeleníti meg a játékos üzeneteit, például amikor elveszítenek egy játékot. Összességében a forgatókönyv kulcsfontosságú ötleteket mutat be a Pygame játékprogramozásban, és a régi Snake játék kezdetleges megjelenítését kínálja.