logo

Com desenvolupar un joc en Python

El llenguatge més adaptable és Python, que s'utilitza en gairebé totes les indústries, incloent desenvolupament de jocs, desenvolupament web, aprenentatge automàtic, intel·ligència artificial i aplicacions GUI.

El joc es desenvolupa amb el paquet pygame, que és una característica integrada de Python. Amb una comprensió rudimentària de la programació de Python, podem crear jocs visualment atractius amb animació, efectes de so i música adequats utilitzant el mòdul pygame.

S'utilitza una biblioteca multiplataforma anomenada Pygame per crear videojocs. Disposa de biblioteques de so i visuals per ordinador per oferir al jugador una experiència de joc típica.

Pete Shinners l'està desenvolupant per ocupar el lloc de PySDL.

Requisits previs per a Pygame

Hem de comprendre el llenguatge de programació Python per aprendre Pygame.

objecte a json a java

Instal·lant Pygame

Per instal·lar Pygame, obriu un terminal de línia d'ordres i introduïu l'ordre següent.

 pip install pygame 

També el podem instal·lar mitjançant IDE. Per obtenir més guia d'instal·lació, visiteu el nostre tutorial complet de pygame ( https://www.javatpoint.com/pygame ). Aquí trobareu totes les explicacions essencials del pygame.

Exemple senzill de Pygame

Aquí teniu el següent exemple de creació d'una finestra senzilla de 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() 

Sortida:

punt numpy
Com desenvolupar un joc en Python

Explicació:

El codi subministrat obre una finestra Pygame de 400 x 500 píxels i inicia un bucle que vigila els esdeveniments tot el temps. El bucle canvia la variable 'fet' a True, que finalitza el bucle i finalitza el programa si es detecta un esdeveniment QUIT (normalment quan l'usuari surt de la finestra). Actualitza la pantalla i s'assegura que qualsevol canvi es mostri a la pantalla gràcies al mètode 'pygame.display.flip()'. Per dir-ho breument, el codi genera una petita finestra de Pygame que es manté activa fins que l'usuari la descarta, mostrant una estructura bàsica del programa que es basa en esdeveniments.

com desreferenciar un punter a c

Tots els gràfics es dibuixaran a la finestra de pygame.

Entendrem la sintaxi bàsica del programa anterior.

    importar pygame:És el mòdul que ens dóna accés a totes les funcions de Pygame.calor ():S'utilitza per inicialitzar cadascun dels mòduls necessaris del pygame.display.set_mode((amplada, alçada)):S'utilitza per ajustar la mida de la finestra. Tornarà l'article a la superfície. Les accions gràfiques es realitzen a través de l'objecte de superfície.event.get():El resultat és una cua d'esdeveniments buida. Si no l'anomenem, el sistema operatiu percebrà que el joc no respon i els missatges de la finestra començaran a acumular-se.DEIXAR:Quan fem clic al botó creuat a la cantonada de la finestra, s'utilitza per descartar l'esdeveniment.display.flip():Qualsevol actualització del joc s'hi reflecteix. Hem de contactar amb la pantalla sempre que fem algun canvi.flip() és una funció.

Es pot dibuixar qualsevol forma a la superfície de Pygame, incloses fonts i imatges precioses. Nombrosos mètodes integrats a Pygame us permeten dibuixar formes geomètriques a la pantalla. Aquests formularis representen els primers passos per crear un joc.

Examinem la següent il·lustració d'un formulari que es dibuixa en una pantalla.

Exemple -

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

Sortida:

Com desenvolupar un joc en Python

Explicació:

El programa Python donat crea una finestra gràfica amb diferents formes geomètriques dibuixades mitjançant el paquet Pygame. El programa crea una finestra Pygame de 400 x 300 píxels i, a continuació, inicia un bucle que vigila els esdeveniments tot el temps, assegurant-se que la finestra romangui oberta fins que l'usuari la surti. Esborra la pantalla al principi d'aquest bucle i després utilitza les rutines de dibuix de Pygame per crear una varietat de formes amb diferents colors i amplades de línia. Aquestes formes inclouen línies, polígons, el·lipses, cercles i arcs. Cada forma té les seves coordenades i propietats adequades definides. Finalment, 'pygame.display.flip()' s'utilitza per actualitzar la pantalla. El programa finalitza pygame quan es tanca la finestra.

menú de configuració del telèfon Android

L'aplicació serveix com a exemple de l'adaptabilitat i varietat de les capacitats de dibuix de Pygame i proporciona un marc per desenvolupar aplicacions gràfiques interactives. Els desenvolupadors poden crear una àmplia gamma de components visuals dins de l'entorn gràfic de Pygame ajustant paràmetres com les coordenades, els colors i l'amplada de línia. Això permet la construcció d'aplicacions multimèdia interactives, jocs i simulacions.

Exemple: desenvolupament del joc de serps amb Pygame

Programa -

exemple de classe java
 # 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() </=>

Sortida:

Com desenvolupar un joc en Python

Si la serp es toca, finalitzarà el joc i mostrarà el missatge següent.

Com desenvolupar un joc en Python

Per reprendre, només cal que feu clic al botó D'acord. El terminal Pycharm mostra la nostra puntuació (hem fet servir l'IDE Pycharm, però podeu utilitzar qualsevol IDE de Python).

Com desenvolupar un joc en Python

Explicació:

L'script de Python proporcionat utilitza el paquet Pygame per crear un joc senzill de Snake. Estableix classes tant per a la serp com per als cubs separats que formen el seu cos. Pygame s'utilitza per configurar la finestra del joc, que inclou una estructura de quadrícula i una serp en moviment. Després de menjar un cub de 'snack', la serp s'allarga, i si s'enfronta a ella mateixa o a les parets límit, el joc s'acaba.

Per gestionar la direcció de la serp, generar aperitius en punts aleatoris de la graella, detectar col·lisions entre el cap i el cos de la serp, actualitzar l'estat del joc i tornar a dibuixar la finestra del joc, la lògica del joc ha de gestionar l'entrada de l'usuari. Per controlar les interaccions del joc i les actualitzacions visuals, el guió fa servir els mètodes de gestió i dibuix d'esdeveniments de Pygame. També té una funció bàsica de bústia de missatges que utilitza Tkinter per mostrar els missatges dels jugadors, com ara quan perden una partida. En general, el guió mostra idees clau en la programació de jocs Pygame i ofereix una interpretació rudimentària del joc vintage de la serp.