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:
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.
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
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] >= 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('-topmost', 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('Score: ', len(s.body)) message_box('You Lost! ', 'Play again... ') s.reset((10, 10)) break redrawWindow(win) pass main() </=>
Wyjście:
Jeśli wąż dotknie się, zakończy grę i wyświetli następujący komunikat.
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
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.