logo

Kaip sukurti žaidimą Python

Labiausiai pritaikoma kalba yra Python, kuri naudojama beveik visose pramonės šakose, įskaitant žaidimų kūrimą, interneto svetainių kūrimą, mašinų mokymąsi, dirbtinį intelektą ir GUI programas.

Žaidimas sukurtas naudojant pygame paketą, kuris yra integruota Python funkcija. Turėdami elementarų Python programavimo supratimą, galime sukurti vizualiai patrauklius žaidimus su tinkama animacija, garso efektais ir muzika, naudodami pygame modulį.

Vaizdo žaidimams kurti naudojama kelių platformų biblioteka, vadinama Pygame. Jame yra garso bibliotekų ir kompiuterinių vaizdų, kurie suteikia žaidėjui įprastą žaidimų patirtį.

Pete'as Shinnersas kuria jį, kad pakeistų PySDL.

Būtinos Pygame sąlygos

Norėdami išmokti Pygame, turime suprasti Python programavimo kalbą.

enum tostring java

Pygame diegimas

Norėdami įdiegti Pygame, atidarykite komandinės eilutės terminalą ir įveskite šią komandą.

 pip install pygame 

Taip pat galime įdiegti per IDE. Norėdami gauti daugiau diegimo vadovo, apsilankykite mūsų išsamioje pygame mokymo programoje (https://www.javatpoint.com/pygame). Čia rasite visus esminius pygame paaiškinimus.

Paprastas Pygame pavyzdys

Štai toks paprasto pygame lango kūrimo pavyzdys.

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

Išvestis:

npm talpyklos išvalymas
Kaip sukurti žaidimą Python

Paaiškinimas:

Pateiktas kodas atidaro 400 x 500 pikselių Pygame langą ir paleidžia kilpą, kuri visą laiką stebi įvykius. Ciklas pakeičia kintamąjį „atlikta“ į „True“, kuris užbaigia ciklą ir užbaigia programą, jei aptinkamas įvykis „QUIT“ (paprastai vartotojui išėjus iš lango). Atnaujina ekraną ir užtikrina, kad visi pakeitimai būtų rodomi ekrane naudojant metodą „pygame.display.flip()“. Trumpai tariant, kodas generuoja nedidelį „Pygame“ langą, kuris lieka aktyvus, kol vartotojas jo nepaleidžia, ir parodo pagrindinę programos struktūrą, kuri yra pagrįsta įvykiais.

Visa grafika bus piešiama pygame lange.

Supraskime pagrindinę aukščiau pateiktos programos sintaksę.

    importuoti pygame:Tai modulis, kuris suteikia mums prieigą prie visų Pygame funkcijų.karštis ():Jis naudojamas inicijuoti kiekvieną iš pygame būtinų modulių.display.set_mode((plotis, aukštis)):Jis naudojamas lango dydžiui reguliuoti. Tai grąžins daiktą ant paviršiaus. Grafiniai veiksmai atliekami per paviršiaus objektą.event.get():Rezultatas yra tuščia įvykių eilė. Jei to nepavadinsime, operacinė sistema suvoks žaidimą kaip nereaguojantį ir pradės kauptis langų pranešimai.UŽDARYTI:Kai paspaudžiame kryžminį mygtuką lango kampe, jis naudojamas įvykiui atmesti.display.flip():Jame atsispindi visi žaidimo atnaujinimai. Turime susisiekti su ekranu, kai tik atliekame kokius nors pakeitimus.flip() yra funkcija.

Ant Pygame paviršiaus galima nupiešti bet kokią formą, įskaitant gražius šriftus ir paveikslėlius. Daugybė Pygame integruotų metodų leidžia piešti geometrines figūras ekrane. Šios formos yra pirmieji žingsniai kuriant žaidimą.

Panagrinėkime toliau pateiktą ekrane piešiamos formos iliustraciją.

kaip išjungti kūrėjo režimą „Android“.

Pavyzdys -

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

Išvestis:

Kaip sukurti žaidimą Python

Paaiškinimas:

Duota Python programa, naudojant Pygame paketą, sukuria grafinį langą su jame nubraižytomis skirtingomis geometrinėmis figūromis. Programa sukuria 400 x 300 pikselių Pygame langą, o tada pradeda kilpą, kuri visą laiką stebi įvykius, užtikrindama, kad langas liktų atidarytas, kol vartotojas jį išjungs. Jis išvalo ekraną šios kilpos pradžioje ir tada naudoja Pygame piešimo procedūras, kad sukurtų įvairias formas su skirtingomis spalvomis ir linijų pločiais. Šios formos apima linijas, daugiakampius, elipses, apskritimus ir lankus. Kiekviena forma turi tinkamas koordinates ir apibrėžtas savybes. Galiausiai ekranui atnaujinti naudojamas „pygame.display.flip()“. Programa nutraukia pygame uždarius langą.

Programa yra „Pygame“ piešimo galimybių pritaikomumo ir įvairovės pavyzdys ir sudaro sąlygas kurti interaktyvias grafines programas. Kūrėjai gali sukurti daugybę vaizdinių komponentų Pygame grafinėje aplinkoje koreguodami tokius parametrus kaip koordinates, spalvas ir linijų plotį. Tai leidžia kurti interaktyvias daugialypės terpės programas, žaidimus ir modeliavimą.

Pavyzdys – žaidimo „Snake“ kūrimas naudojant „Pygame“.

Programa -

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

Išvestis:

Kaip sukurti žaidimą Python

Jei gyvatė paliečia save, ji nutrauks žaidimą ir parodys tokį pranešimą.

Java kodo pavyzdžiai
Kaip sukurti žaidimą Python

Norėdami tęsti, tiesiog spustelėkite mygtuką Gerai. Pycharm terminalas rodo mūsų rezultatą (naudojome Pycharm IDE, bet galite naudoti bet kurį Python IDE).

Kaip sukurti žaidimą Python

Paaiškinimas:

Pateiktas Python scenarijus naudoja Pygame paketą, kad sukurtų paprastą Snake žaidimą. Jame nustatomos ir gyvatės, ir atskirų jos kūną sudarančių kubelių klasės. Pygame naudojamas žaidimo langui, kuriame yra tinklelio struktūra ir judanti gyvatė, nustatyti. Suvalgius 'užkandžio' kubelį, gyvatė pailgėja, o jei įbėga į save ar ribines sienas, žaidimas baigtas.

Norint valdyti gyvatės kryptį, generuoti užkandžius atsitiktiniuose tinklelio taškuose, aptikti gyvatės galvos ir kūno susidūrimus, atnaujinti žaidimo būseną ir perbraižyti žaidimo langą, žaidimo logika turi tvarkyti vartotojo įvestį. Norėdami valdyti žaidimo sąveiką ir vaizdinius atnaujinimus, scenarijus naudoja Pygame įvykių tvarkymo ir piešimo metodus. Jame taip pat yra pagrindinė pranešimų dėžutės funkcija, kuri naudoja „Tkinter“, kad parodytų žaidėjo pranešimus, pvz., kai jie pralaimi žaidimą. Apskritai, scenarijus parodo pagrindines „Pygame“ žaidimų programavimo idėjas ir siūlo elementarų senovinio „Snake“ žaidimo perteikimą.