ЭОЖ 373.5.02.016:004(574)
PYTHON ПРОГРАММАЛАУ Т1Л1НДЕ ГРАФИКА ЖЭНЕ АНИМАЦИЯ
Ц¥РУ ЖОЛДАРЫ
АНУАРБЕКОВА ГУЛЗАТ ДЖАПАРХАНОВНА
PhD, Информатика жэне бiлiмдi акпараттандыру кафедрасы, Абай атындагы ^азак ¥лттык Педагогикалык университетi, Алматы, ^азакстан
Андатпа. Макалада Python программалау илшде графика KeMerÎMeH фигуралар мен кескiндердi салу, анимация жасау карастырылган. Python программалау тшнде компьютерлiк ойындарда графикалык элементтердi колдану кeрсетiлген.
ЮлттЫ свздер: Python, графика, анимация, PyGame, Tkinter.
Соцгы жылдары бiлiм берудщ эртYрлi саласында ецделген мэлiметтердщ кeлемi артып келедi жэне суреттермен жумыс ютеу Yшiн Python программалау тiлiнде суреттердi eцдеудщ эртYрлi эдiстерi талап етшуде.
Эдетте IT саласындагы мамандар тегш, кiрiктiрiлген дайын функциялары бар, Yйренуге оцай тiл, ез программаларын жылдам куруга мYмкiндiк беретiн программалау тшдерш карастырады. Сондай тшдердщ бiрi - Python программалау тш болып табылады.
Python - интерпретатор режимiнде жумыс iстей алатын жогары децгейлi багдарламалау тiлi. Python философиясыныц негiзгi принциптершщ бiрi программалауды жацадан Yйренушiлерге программа кодыныц тYсiнуге ыцгайлылыгы болып табылады. Оныц карапайымдылыгы, колданудыц ыцгайлылыгы, карапайым синтаксисi мен семантикасы жэне объекпге багытталган тэсiлдi колдану мYмкiндiгi элемнщ тYкпiр-тYкпiрiнен кептеген программа курушыларды кызыктырды. Тагы бiр артыкшылыгы тегiн программа болып табылады.
Python-да графика кeмегiмен фигуралар мен кескiндердi салуга, анимация жасауга, Python-да математикалык есептеулер жYргiзуге болады. Python программасында компьютерлiк ойындарда графикалык элементтердi колдануга болады.
Python программалау тшнщ графика мен анимацияны куру жолдарын карастырайык. Python программалау тшнщ графика жэне анимациямен жумыс ютеу Yшiн арнайы графикалык модульдердi колдану кажет.
Pygame - бул «ойын ютапханасы», программистерге ойын к¥руга ^ментес^^ к¥ралдар жиынтыгы болып табылады. Оныц курамына:
• Графика жэне анимация
• Дыбыс
• Баскару элеменш^ жатады.
Кiтапхана (библиотека) - бул функциялар мен кластар кодтарыныц жиынтыгы. Python программалау тшнде код ютапханасын сипаттау Yшiн колданылатын термин - модуль (module) деп аталады. Мысалы, pygame модулiнде iшкi модульдер ретшде pygame.draw, pygame.image, pygame.mouseжэне т.б. модульдер пайдаланылады.
PyGame кiтапханасы - 2D ойындарын жэне баска мультимедиалык косымшаларды эзiрлеуге арналган Python программалау тшнщ модулi болып есептеледi.
PyGame eте ыцгайлы болганымен Python-ныц стандартты ютапханасына кiрмейдi. Компьютерге Pygame модулi Python программасынан бeлек орнатылады (операциялык жYЙеге байланыты кажеттi нусканы https://www.pygame.org/download.shtml адрес аркылы компьютерiмiзге кeшiремiз). Python программасына Pygame кiтапханасын орнату Yшiн Пуск->Служебные Windows ->Командная строка командаларын орындаймыз. Командалык катарга pip install pygame командасын терiп, Enter батырмасына басамыз.
Pygame орнатылган соц ойын жYретiн терезеш К¥РУ керек. 1-суретте берiлген программаны орындаганда экранда eлшемдерi 360*320 пиксельдi кара фонды терезе пайда
болады.
.} grl 1 ру ■ СЛ>5«геЛ'уи«тЛ>оситет1ь'Проиг1 □ X
Fife £Л Fgmut gun QpOoos tfndow Цф
acreen-pygine.dlapliy.лес iuidel¡360,320]}
Сурет - 1 - Pygame орнатылган соц ойын жYретiн кара фонды терезенi к¥руга арналган программа коды
Графикалык примитивтердi пайдалана отырып, казак Yйдiц суретiн салатын программа курайык. Программа коды теменде берiлген. import pygame pygame.init()
screen=pygame.display.set_mode([360,320]) screen.fill([250,255,255])
pygame.draw.rect(screen,[255,0,0],[80,150, 250,180],1)
pygame.draw.line(screen,[255,0,0],[80,150],[180,250],1)
pygame.draw.line(screen,[255,0,0],[330,150],[230,50],1)
pygame.draw.circle(screen,[255,0,0],[205,50],25,1)
pygame.draw.rect(screen,[255,0,0],[150,175,130,180],1)
pygame.draw.line(screen,[255,0,0],[220,175], [220,320],1)
pygame.display.flip()
Алынган нэтиже 3-суретте керсетшген.
U pyqamc window X
/Оч
Сурет - 3-К^азак Yй
Graph модулi-Tkinter ютапханасыныц Canvas виджетi негiзiнде Python тшнде графикалык программаларды к¥руга арналган.
penColor(color) командасы калам тYсiн тагайындауга арналган команда. penSize(width) командасы калам калыцдыгын тагайындауга арналган команда. Ендi функция мен циклдi пайдалана отырып, олимпиада сакинасын экранга шыгаратын программа курайык. Программа коды теменде бершген. from graph import * penColor ( "red" ) penSize(5) def row1( y ):
Сурет - 2-Кара фонды Pygame Tepe3eci
x = 80
for i in range(3): circle(x, y, 50) x += 100 y = 60 row1( y ) def row2( y ): x = 130
for i in range(2): circle(x, y, 50) x += 100 y = 130 row2( y ) run()
Сурет - 4 - Олимпиада сакинасы
Белгш 6ip окигага непзделген компьютерлш ойындарды ойнаудыц, сол окиганы кинофильм аркылы Kepin немесе кiтап аркылы окыганга Караганда eзiндiк ерекшелiгi бар. Компьютерлш ойынды ойнау барысында ойыншы окигага e3i тiкелей виртуалды катысуына мYмкiндiк алады. Эдетте компьютеpлiк ойындар eзiндiк ерекше фонымен, ойындагы окигалардьщ даму каркынымен 6iздi eзiне тартады. Ойын курауда ойынныц арткы фоны ойынньщ тарихы мен оныц атмосферасын калыптастырушы негiзгi параметрдщ 6ipi болып саналады.
Фон - сурет немесе мэпннщ артындагы орналастырылган тYC немесе кескш.
Ойын барысында кешпкердщ артында кepiнiп туратын фонды екi тYpлi беруге болады:
1. ойын алацын тацдаган 6ip тYCпен толы; беру;
2. арткы фонга ойын такырыбына сай сурет кою.
Мысал ретшде, screen.fill(120, 130, 100) командасы аркылы ойын терезесш RGB=(120, 130, 100) тYсiмен толтырып бояуга болады. Мундагы screen - терезе, fill - толтыру деген магынаны 6iлдipедi. Эрине ойын терезес мундай фон кою ойынды тартымды кepсете алмайды. Сол Yшiн ойынныц мазмунына сай арткы фонга сурет кою оны кызыкты етедi. Ойын теpезесiне арткы фонды кою командалары 6еpiлген:
- суретп жYктеу Yшiн pygame.image.load() - файлдан кажетп суpеттi жYктейдi. Pygame барлык графикалык типтеpдi барлык уакытта оки 6еpмейдi. Дегенмен, эркашанда мiндеттi тYPде .bmp кецейтiлуi бар суpеттеpдi оки алады. Егер программа pygame.get.extended() "True" мэнш кабылдаса, онда .png, .jpg, .gif жэне т.с.с. типтеpдi окитын болады.
- экарнга шыгару Yшiн screen.blit(image,(x,y)) - сол жак жогары (x,y) нYктесiнен бастап суретп кeшipiп кояды. pygame.surface.blit- 6ip суpеттi екiншiсiнiц Yстiне орналастырады.
- суреттщ eлшемiн eзгеpту ушт new image=pygame.transform.scale(image, (width, height)) жазамыз. Мундагы image, (width, height) - енпзшген сурет атауы, узындыгы мен енiн
керсетедц Rect - тштертбурышты аймактарды сактау жэне баскару Yшiн колданылады; pygame.Surface.convert - сурет форматыныц пикселiн eзгертедi жэне pygame.Surface.set_colorkey - мeлдiр бет-ri орнатады.
Мысал карастырып кeрейiк. Арткы фонга жайлаудыц суретiн жэне ойын кейiпкерi ретiнде жылкыныц суретiн шыгаратын программа курайык. Программа коды теменде беiрлген.
import pygame pygame.init()
screen=pygame.display.set_mode([700,500])
jau_sur=pygame.image.load('zh.jpg') # фондыц cypemmi жуктейЫ.
jau rect=jau_sur.get_rect(center=(300,270)) #жайлаудыц cypemiH экранныц дэл ортасына орналастырады.
screen.blit(jau_sur,jau_rect) #суретке арналган жайлаудыц суретт орналастырады
zhilki_sur=pygame.image.load('zhilki.png')
zhilki_rect=zhilki_sur.get_rect(center=(300,270))
screen.blit(zhilki_sur,zhilki_rect)
pygame.display.update()
running=True
while running:
for event in pygame.event.get(): if event.type==pygame.QUIT: running==False pygame.quit()
Сурет- 5 - Арт^ы фон жэне ойын кешпкерш 6ipiKTipin шыгару
Ендi кейiпкерлердi козгалызка келтiрудi карастырайык.
Анимация (Animation) - ол козгалыстыц эртYрлi кезещне сэйкес кесюндер тiзбегiн экранда жылдамдата керсету аркылы дене козгалысы динамикасын бейнелеу болып табылады.
Компьютерлт анимация - дегенде графикалык пиксельдердщ бiр орыннан екiншi орынга ауыстыруы деп ty^^ керек.
Мысал ретшде бYркiттiц ушуын кeрсетейiк. Программа коды теменде бершген.
import pygame
pygame.init()
screen=pygame.display.set_mode([700,500]) jau_sur=pygame.image.load('zh.jpg') j au_rect=j au_sur.get_rect(center=(300,270)) screen.blit(j au_sur,j au_rect) burkit=pygame.image.load('orel 1.png') burkit_rect=jau_sur.get_rect(center=(300,270)) burkit=pygame.transform.scale(burkit,(180,100)) screen.blit(burkit,[10,50]); pygame.di splay.flip() pygame.time.wait(1000) screen.fill((100, 150, 200))
# екi есе кiшiрейтемiз jau_sur=pygame.image.load('zh.jpg')
j au_rect=j au_sur.get_rect(center=(300,270)) screen.blit(j au_sur,j au_rect)
scale = pygame.transform.scale(burkit, (burkit.get_width() // 2,
burkit.get_height() // 2)) scale_rect = scale.get_rect(center=(200, 150)) screen.blit(scale, scale_rect) pygame.display.update(burkit_rect) pygame.time.wait(1000) screen.fill((100, 150, 200))
# 45 градуска бурамыз jau_sur=pygame.image.load('zh.jpg')
j au_rect=j au_sur.get_rect(center=(300,270))
screen.blit(j au_sur,j au_rect)
rot = pygame.transform.rotate(burkit, 45)
rot_rect = rot.get_rect(center=(200, 150))
screen.blit(rot, rot_rect)
pygame.di splay.update()
running=True
while running:
for event in pygame.event.get(): if event.type==pygame.QUIT: running==False pygame.quit()
Сурет - 6 - ^озгалыска кел^ршген бYркiт
Графика жэне анимациямен жумыс ютеуге арналган Tkinter пакет деп аталады. Tkinter-бул Tk кiтaпхaнaсымeн жумыс icTeyre арналган Python пaкeтi. Tk кiтaпхaнaсындa GUI компонeнттeрi бар (graphical user interface-GUI). Бул кiтaпхaнa TCL багдарламалау тiлiндe жазылган.
Графикалык пайдаланушы интeрфeйci (GUI) барлык тeрeзeлeрдi, тYЙмeлeрдi, теруге арналган мэтiн eрicтeрiн, айналдыргыштарды, тiзiмдeрдi, радио тYЙмeлeрiн, флажоктарды жэне экранда керген баска элeмeнттeрдi бiлдiрeдi.
Tkinter-дi Python тiлiнeн TCL тшне аудармашы рeтiндe усынуга болады. Программа коды Python-да жазылады, ал tkinter модулшщ коды программацызды TK ютапханасы тYciнeтiн Tcl тiлiнe аударады.
Tkinter кез келген жолмен Python модyлi Yшiн стандартты тYPдe импортталады:
import tkinter
from tkinter import *
import tkinter as tk
Tkinter пакет аркылы кecкiндi козгалыска кeлтiрyдi карастырайык. Мысал рeтiндe ауыр жYк келшнщ жYPy жолын керсететш программаны курайык. from tkinter import* tk=Tk()
canvas=Canvas(tk ,width=700, height=500,bg='white') canvas.pack()
minion_obj=PhotoImage(file="gruz.png")
id_img = canvas.create_image(50,50,anchor=NW,image=minion_obj)
print(id_img)
import time
for i in range(1,100):
canvas.move(id_img,2,0)
tk.update()
time.sleep(0.02)
-^
Сурет - 7 - ЖYрiп бара жаткан ауыр жYк кeлiгi
Дорыта келгенде, Python-да графика мен анимация - бул мэлiметтердi визуализациялауга, иллюстрациялар жасауга жэне Timi ойын дамытуга арналган куатты программалау тш болып табылады. Python-да кол жетiмдi кiтапханалар мен куралдардыц кец аукымы аркылы программистер мен суретшшер ездершщ шыгармашылык идеяларын визуалды тYPде керсету аркылы жYзеге асыра алады. Осы икемдiлiк пен ыцгайлылыктыц аркасында Python программалау тiлi кептеген салаларда графика мен анимация жасау Yшiн танымал тацдау болып кала береди
ЭДЕБИЕТТЕР
1. Python тiлiнде програмалау негiздерi : оку куралы / К. З. Халыкова, С. Н. Идрисов, Н. Т. Маликова, Г. Азат. - Алматы : Лантар Трейд, 2022. - 316 б.
2. Златопольский Д.М. Основы программирования на языке Python. - М.: ДМК Пресс, 2017.
3. Программирование на языке высокого уровня Python : учеб. пособие для прикладного бакалавриата / Д. Ю. Федоров. — 2-е изд., перераб. и доп. — М. : Издательство Юрайт, 2019. — 161 с.