Најприлагодљивији језик је Питхон, који се користи у скоро свакој индустрији, укључујући развој игара, веб развој, машинско учење, вештачку интелигенцију и ГУИ апликације.
Игра је развијена помоћу пакета пигаме, који је уграђена карактеристика Питхон-а. Уз рудиментарно разумевање Питхон програмирања, можемо креирати визуелно привлачне игре са одговарајућом анимацијом, звучним ефектима и музиком коришћењем модула пигаме.
За креирање видео игара користи се библиотека на више платформи под називом Пигаме. Поседује звучне библиотеке и компјутерске визуелне приказе како би играчу пружио типично искуство играња.
Пете Схиннерс га развија да би заузео место ПиСДЛ-а.
Предуслови за Пигаме
Морамо да разумемо програмски језик Питхон да бисмо научили Пигаме.
датум у низ
Инсталирање Пигаме-а
Да бисте инсталирали Пигаме, отворите терминал командне линије и унесите следећу команду.
pip install 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()
Излаз:
буббле сорт питхон
Објашњење:
Испоручени код отвара Пигаме прозор величине 400к500 пиксела и покреће петљу која све време прати догађаје. Петља мења променљиву 'доне' у Тачно, што завршава петљу и завршава програм ако се открије догађај КУИТ (обично када корисник напусти прозор). Ажурира екран и осигурава да се све промене приказују на екрану захваљујући методи 'пигаме.дисплаи.флип()'. Укратко речено, код генерише мали Пигаме прозор који остаје активан све док га корисник не одбаци, показујући основну структуру програма која је вођена догађајима.
јава излазни карактер
Сва графика ће се нацртати у прозору пигаме.
Хајде да разумемо основну синтаксу горњег програма.
Било који облик може бити нацртан на површини Пигаме-а, укључујући прелепе фонтове и слике. Бројне уграђене методе у Пигаме-у вам омогућавају да цртате геометријске облике на екрану. Ове форме представљају прве кораке у креирању игре.
Хајде да испитамо следећу илустрацију форме која се црта на екрану.
Пример -
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()
Излаз:
Објашњење:
Дати Питхон програм креира графички прозор са различитим геометријским облицима уцртаним у њему користећи Пигаме пакет. Програм креира Пигаме прозор величине 400к300 пиксела, а затим покреће петљу која прати догађаје све време, пазећи да прозор остане отворен док га корисник не затвори. Он брише екран на почетку ове петље, а затим користи Пигаме-ове рутине цртања да креира различите форме са различитим бојама и ширинама линија. Ови облици укључују линије, полигоне, елипсе, кругове и лукове. Сваки облик има своје одговарајуће координате и дефинисана својства. На крају, 'пигаме.дисплаи.флип()' се користи за освежавање екрана. Програм прекида пигаме након затварања прозора.
уникс креирати директоријум
Апликација служи као пример прилагодљивости и разноликости могућности цртања Пигаме-а и пружа оквир за развој интерактивних графичких апликација. Програмери могу креирати широк спектар визуелних компоненти унутар Пигаме-овог графичког окружења прилагођавањем параметара као што су координате, боје и ширине линија. Ово омогућава изградњу интерактивних мултимедијалних апликација, игара и симулација.
Пример - Развијање игре Снаке користећи Пигаме
Програм -
како проверити величину екрана
# 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() </=>
Излаз:
Ако се змија дотакне, прекинуће игру и приказати следећу поруку.
Да бисте наставили, једноставно кликните на дугме ОК. Пицхарм терминал приказује наш резултат (користили смо Пицхарм ИДЕ, али можете користити било који Питхон ИДЕ).
Објашњење:
Достављена Питхон скрипта користи пакет Пигаме за креирање једноставне игре Снаке. Он успоставља класе и за Змију и за засебне коцке које чине њено тело. Пигаме се користи за подешавање прозора игре, који има структуру мреже и покретну змију. Након што поједе коцку 'грицкалице', змија се издужује, а ако налети на себе или на граничне зидове, игра је готова.
Да би се управљало смером змије, генерисало грицкалице на насумичне тачке на мрежи, открило колизије између главе и тела змије, ажурирало стање игре и поново исцртало прозор игре, логика игре мора да управља корисничким уносом. Да би контролисао интеракције игре и визуелна ажурирања, скрипта користи Пигаме-ове методе руковања догађајима и цртања. Такође има основну функцију оквира за поруке која користи Ткинтер да прикаже поруке играча, на пример када изгубе игру. Све у свему, скрипта показује кључне идеје у Пигаме програмирању игара и нуди рудиментарно извођење винтаге игре Снаке.