logo

Jak stworzyć grę w Pythonie

Najbardziej elastycznym językiem jest Python, który jest używany w prawie każdej branży, w tym w tworzeniu gier, tworzeniu stron internetowych, uczeniu maszynowym, sztucznej inteligencji i aplikacjach GUI.

Gra została stworzona przy użyciu pakietu pygame, który jest wbudowaną funkcją Pythona. Mając podstawową wiedzę na temat programowania w Pythonie, możemy tworzyć atrakcyjne wizualnie gry z odpowiednią animacją, efektami dźwiękowymi i muzyką, wykorzystując moduł pygame.

Do tworzenia gier wideo używana jest wieloplatformowa biblioteka o nazwie Pygame. Posiada biblioteki dźwiękowe i wizualizacje komputerowe, aby zapewnić graczowi typowe wrażenia z gry.

Pete Shinners rozwija go, aby zastąpić PySDL.

Wymagania wstępne dla Pygame

Aby nauczyć się Pygame, musimy zrozumieć język programowania Python.

ocalić od

Instalowanie Pygame'a

Aby zainstalować Pygame, otwórz terminal wiersza poleceń i wprowadź następujące polecenie.

 pip install pygame 

Możemy go również zainstalować poprzez IDE. Aby uzyskać dalsze wskazówki dotyczące instalacji, odwiedź nasz kompletny samouczek dotyczący gry pygame (https://www.javatpoint.com/pygame). Tutaj znajdziesz wszystkie niezbędne wyjaśnienia dotyczące gry pygame.

Prosty przykład gry Pygame

Oto następujący przykład tworzenia prostego okna pygame.

podciąg w Javie
 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() 

Wyjście:

Jak stworzyć grę w Pythonie

Wyjaśnienie:

Dostarczony kod otwiera okno Pygame o wymiarach 400x500 pikseli i uruchamia pętlę, która przez cały czas obserwuje zdarzenia. Pętla zmienia zmienną „done” na True, co kończy pętlę i program w przypadku wykrycia zdarzenia QUIT (zwykle gdy użytkownik opuszcza okno). Aktualizuje wyświetlacz i upewnia się, że wszelkie zmiany zostaną pokazane na ekranie dzięki metodzie „pygame.display.flip()”. Krótko mówiąc, kod generuje małe okno Pygame, które pozostaje aktywne, dopóki użytkownik go nie zamknie, przedstawiając podstawową strukturę programu sterowaną zdarzeniami.

Cała grafika zostanie narysowana w oknie pygame.

co to znaczy xd

Rozumiemy podstawową składnię powyższego programu.

    importuj grę pygame:Jest to moduł, który daje nam dostęp do wszystkich funkcji Pygame.ciepło():Służy do inicjalizacji każdego z niezbędnych modułów pygame.display.set_mode((szerokość, wysokość)):Służy do dostosowania rozmiaru okna. Odda przedmiot na powierzchni. Działania graficzne realizowane są poprzez obiekt powierzchniowy.wydarzenie.get():Rezultatem jest pusta kolejka zdarzeń. Jeśli tego nie wywołamy, system operacyjny uzna, że ​​gra nie odpowiada, a komunikaty w oknie zaczną się gromadzić.ZREZYGNOWAĆ:Kliknięcie przycisku krzyżyka w rogu okna powoduje odrzucenie zdarzenia.wyświetlacz.flip():Wszelkie aktualizacje gry są w nim odzwierciedlane. Za każdym razem, gdy dokonujemy jakichkolwiek zmian, musimy skontaktować się z wyświetlaczem. Flip() jest funkcją.

Na powierzchni Pygame można narysować dowolną formę, w tym piękne czcionki i obrazy. Liczne metody wbudowane w Pygame pozwalają na rysowanie kształtów geometrycznych na ekranie. Formularze te stanowią pierwsze kroki w tworzeniu gry.

Przyjrzyjmy się poniższej ilustracji formularza rysowanego na ekranie.

Przykład -

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

Wyjście:

Python sortujący bąbelki
Jak stworzyć grę w Pythonie

Wyjaśnienie:

Dany program w Pythonie tworzy okno graficzne z narysowanymi w nim różnymi kształtami geometrycznymi za pomocą pakietu Pygame. Program tworzy okno Pygame o wymiarach 400x300 pikseli, a następnie uruchamia pętlę, która cały czas obserwuje zdarzenia, upewniając się, że okno pozostaje otwarte, dopóki użytkownik go nie opuści. Czyści ekran na początku tej pętli, a następnie wykorzystuje procedury rysowania Pygame do tworzenia różnorodnych form o różnych kolorach i szerokościach linii. Kształty te obejmują linie, wielokąty, elipsy, okręgi i łuki. Każda forma ma swoje odpowiednie współrzędne i zdefiniowane właściwości. Na koniec do odświeżenia wyświetlacza używana jest funkcja „pygame.display.flip()”. Program kończy pygame po zamknięciu okna.

Aplikacja służy jako przykład możliwości adaptacji i różnorodności możliwości rysowania Pygame oraz zapewnia platformę do tworzenia interaktywnych aplikacji graficznych. Programiści mogą tworzyć szeroką gamę komponentów wizualnych w środowisku graficznym Pygame, dostosowując parametry, takie jak współrzędne, kolory i szerokość linii. Pozwala to na budowę interaktywnych aplikacji multimedialnych, gier i symulacji.

Przykład — tworzenie gry Snake przy użyciu programu Pygame

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

Wyjście:

Jak stworzyć grę w Pythonie

Jeśli wąż dotknie się, zakończy grę i wyświetli następujący komunikat.

Jak stworzyć grę w Pythonie

Aby wznowić, po prostu kliknij przycisk OK. Terminal Pycharm wyświetla nasz wynik (użyliśmy Pycharm IDE, ale możesz użyć dowolnego IDE Pythona).

Shreya Ghoshal
Jak stworzyć grę w Pythonie

Wyjaśnienie:

Dostarczony skrypt Pythona wykorzystuje pakiet Pygame do stworzenia prostej gry Snake. Ustanawia klasy zarówno dla Węża, jak i oddzielnych kostek tworzących jego ciało. Pygame służy do konfiguracji okna gry, które ma strukturę siatki i poruszającego się węża. Po zjedzeniu kostki „przekąski” wąż wydłuża się i jeśli wpadnie na siebie lub na ściany graniczne, gra się kończy.

Aby zarządzać kierunkiem węża, generować przekąski w losowych punktach siatki, wykrywać kolizje pomiędzy głową i ciałem węża, aktualizować stan gry i przerysowywać okno gry, logika gry musi obsługiwać dane wprowadzane przez użytkownika. Aby kontrolować interakcje w grze i aktualizacje wizualne, skrypt wykorzystuje metody obsługi zdarzeń i rysowania Pygame. Posiada również podstawową funkcję okna wiadomości, która wykorzystuje Tkinter do wyświetlania wiadomości graczom, na przykład w przypadku przegranej gry. Ogólnie rzecz biorąc, scenariusz przedstawia kluczowe pomysły w programowaniu gier Pygame i oferuje podstawową wersję klasycznej gry Snake.