ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 22.11.2023
Просмотров: 208
Скачиваний: 11
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Файлдан кескіні бар бетті қосу
Кескінді ендіру коды
car = pygame.Surface((400, 250))
car = pygame.image.load('car.bmp')
screen.blit(car, (50, 20))
Нәтижесі:
5-сурет
Кейбір жағдайларда кескін үшін мөлдір фон қою керек. Surface класының set_colorkey() әдісімен кескіннің фонын мөлдір етуге болады. set_colorkey() әдісінде бірнеше түс ұсынылады. Көрсетілген түстің барлық пикселі мөлдір болады.
4-тапсырма. Негізгі беттің түсін жасылға өзгертіп, фоны мөлдір кескін қосу керек
Код үзіндісі:
6-сурет
Нәтижесі:
7-сурет
Ойынға бірнеше кескін енгізген кезде беттердің қосылу ретін ескеру қажет.
Екі кодты және олардың нәтижелерін салыстыр.
1-код:
8-сурет
Нәтижесі:
9-сурет
2-код:
10-сурет
Нәтижесі:
11-сурет
Осы сабақта талқыланған тапсырмаларды әртүрлі графикалық редакторларда құрылған кейіпкерлерді жүктеу үшін ойында қолдануға болады.
Кейіпкерлерді анимациялау. 1-сабақ
Анимация арқылы ойын кейіпкерлерін қозғалтуға болады. Суреттерді қайталап салу және объектіні экраннан жою арқылы қимылдатудың жолдары бар.
Объектіні қозғалту алгоритмі:
Фигураны жою үшін жұмыс бетінің фонын анықтап алу қажет. Мұны Surface объектісінің fill() әдісімен жасауға болады. Бұл әдіспен фонды кез келген түске өзгертуге болады. Әрекеттерді ойын циклінде қайталайды.
Экрандағы нүкте (пиксель) координаттармен (х, у) белгіленеді. Кері санақ сол жақ жоғары бұрышта орналасқан
(0,0) нүктеден басталады. х координатасы солдан оңға, ал у координатасы жоғарыдан төменге қарай артады.
1-сурет. Экранның координаттар жүйесі
Объектілерді жылжыту үшін координаттарды өзгерту керек. Жылжытқан кезде қадам арасы жиі орналасуы қажет, сонда қозғалыс біркелкі болады. Егер көлденеңінен жылжыту керек болса, онда х координатасын өзгертеді. Тігінен жылжыту керек болса, у координатасын өзгертеді.
1-тапсырма. Көлікті көлденең бағытта қозғалту керек. Файл «car.bmp» деп аталады.
Программалық коды:
2-сурет
Ескерту. Ойын циклін ашпас бұрын x кескінін шығаруға арналған бастапқы координата орнатылады, оның мәні сол жақ шекарадан асуы керек. Беттің фоны кескіннің фонымен сәйкес келуі керек. Егер кескіннің фоны мөлдір болса, жұмыс бетінің фоны ретінде кез келген түсті таңдауға болады. Суреттегі көлік ақ фонда салынған, сондықтан жұмыс беті де ақ түсті болады. Автокөлік көлденеңінен қозғалады, сондықтан оңға жылжу үшін х координатасын арттыру керек.
Нәтижесі:
3-сурет. Иллюстрации және анимация\Анимация1.mp4
Бұл тапсырмадағы объект терезенің оң жақ жиегіне жеткенше қозғалады. Шартты қолдан, ойын терезесі жабылғанша объектінің қозғалысын қайталауға болады.
2-тапсырма. Жоғарыдан төменге түсетін шеңбер сызу керек. Анимация терезе жабылғанша қайталанады.
Программалық коды:
4-сурет
Ескерту. Шеңберді circle() функциясы арқылы салады, ол шеңбер центрі мен радиусының координаттарын анықтайды. Шеңбер тігінен қозғалатын болғандықтан, х координаты қозғалмайды. у координатының мәні 2 қадамға артады. Ойын циклі ашылмай тұрып, бастапқы координаттың мәні анықталады, ол жоғары шекарадан асуы керек. Егер шеңбер төменде болса, онда ол қайтадан жоғары жылжиды.
Нәтижесі:
5-сурет. Иллюстрации және анимация\Анимация2.mp4
Кескінді қиғашынан жылжыту үшін екі координатты да өзгерту керек.
3-тапсырма. Таудан түскен көліктің кескінін салу.
Ескерту. Тау мен машинаның кескіні алдын ала графикалық редакторда жасалып, кодпен бірге бумада сақталуы керек.
Нәтижесі:
6-сурет. Иллюстрации және анимация\Анимация3.mp4
Программалық коды:
7-сурет
Қозғалыс траекториясы күрделірек болуы мүмкін. Мұндай жағдайларда координаттар кіріктірілген математикалық функциялармен есептеледі.
4-тапсырма. Планетаның Күнді айнала қозғалу моделін жасау керек.
Программалық коды:
8-сурет
Нәтижесі:
9-сурет. Иллюстрации және анимация\Анимация4.mp4
Қарастырылған тәсілдерді бірнеше объектіні қозғалту үшін қолдануға болады.
Кейіпкерлерді анимациялау. 2-сабақ
Ойындағы кейіпкерлерді пернетақта арқылы басқаруға болады. Пернетақтадағы пернелерді басқан кезде pygame.event модулі басқаратын белгілі бір оқиғалар болады. Оқиға пайда болған кезде Event класының объектісі құрылады. Осы кластың барлық объектісінде type (оқиға типі) қасиеті бар, оған басқа да қасиеттердің жиынтығы тәуелді болады.
Пернетақта оқиғалары пернелерді басу және жіберу деп аталатын екі түрге бөлінеді. Бұл оқиғалардың мәнін pygame.KEYDOWN және pygame.KEYUP тұрақты модульдермен анықтайсың.
Екі оқиғаның да key және mod атрибуттары бар. key-де әрекет орындалатын перне жазылады. mod атрибутында пернелер тіркелімінде қолданылатын модификатор пернелер (Shift, Ctrl және т. б.) бар.
Программадағы пернелерді тұрақты түрде орнатуға болады. Ол үшін пернелерді пайдаланарда алдына K әрпін қосып жазу керек. Кестеде пернетақтадағы кейбір тұрақты пернелер берілген:
K_BACKSPACE
Вackspace
K_TAB
Тab
K_ESCAPE
Еsc
K_UP
жоғарыға бағыттаушы
K_DOWN
төменге бағыттаушы
K_RIGHT
оңға бағыттаушы
K_LEFT
солға бағыттаушы
K_INSERT
Insert
K_HOME
Нome
K_END
Еnd
K_PAGEUP
Рageup
K_PAGEDOWN
Рagedown
Негізінен, ойында қозғалу үшін бағыттауыш пернелер қолданылады. Шарттарды қолданып, объектінің қай бағытта қозғалатынын анықтауға болады.
Мысалы, сол жаққа бағыттайтын пернені басқан кезде объектіні жылжыту үшін мына кодты жазу керек:
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT: x -= 5
Сыртқы шарт басылған перненің оқиғасын анықтайды. Әрекет орындалатын пернені басқан кезде оның атауы ішкі шартта болады. Нысан солға қарай жылжыған кезде х координатасы кемиді. Сол сияқты, басқа пернелерді пайдаланып та объектіні қозғалтуға болады. Координаттардың өзгеруі қозғалыс бағытына байланысты.
1-тапсырма. Терезенің ортасында шаршы бар. Бағыттауыштарды пайдаланып, шаршыны жоғары, төмен, солға, оңға жылжытатын программа жазу керек.
1-сурет
2-сурет. Толық коды
Бұл тапсырмада пернені басқан сайын шаршы таңдалған бағытта 5 пиксельге жылжиды.
Көбінесе перне басылған кезде ойын объектінің белгілі бір бағытта үздіксіз қозғалуын талап етеді. Мұны негізгі циклдегі pygame.KEYDOWN оқиғасының координатын өзгерту арқылы жүзеге асыруға болады. Пернені жіберген кезде қозғалысты тоқтату үшін pygame.KEYUP оқиғасына шарт қосу керек. Программада жалауша рөлін атқаратын айнымалы болуы керек. Бұл айнымалының мәні перне күйіне байланысты (басылған немесе босатылған).
2-тапсырма. Бағыттауыштарды пайдаланып, шаршыны жылжытатын программа жаз. Қозғалыс пернені басқан кезде үздіксіз орындалуы керек.
3-сурет. Программаның толық коды
Кейбір жағдайларда кодты pygame.key.get_pressed () функциясы арқылы жеңілдетуге болады. Егер перне басылса, функция 1 мәнін, әйтпесе 0 мәнін қайтарады.
3-тапсырма. Бағыттауыштарды пайдаланып, автокөлік суретін жоғары, төмен, солға, оңға жылжытатын программа жазу керек.
4-сурет
5-сурет. Программаның толық коды
Егер екі немесе одан да көп перненің тіркесімін орнату қажет болса, онда күрделі логикалық өрнек қолданылады. Мысалы, «жоғары» бағыттауыш пен «z» пернесін бір уақытта басуды орнату үшін шартқа мына өрнекті жазу керек:
keys[pygame.K_UP] and keys[pygame.K_z]
4-тапсырма. Пернелер тіркесімі арқылы кодты қиғаш қозғалыс бағыттарымен толықтыр:
"←" + "1" – солға жоғары
"←" + "2" – солға төмен
"→" + "3" – оңға жоғары
""→" " + "4" – оңға төмен
6-сурет. Код үзіндісі
Қарастырған тапсырмаларға сүйеніп, ойындағы кейіпкерлердің қозғалысын пернетақтадан басқаруға болатынына көз жеткіздің.
Кескінді ендіру коды
car = pygame.Surface((400, 250))
car = pygame.image.load('car.bmp')
screen.blit(car, (50, 20))
Нәтижесі:
5-сурет
Кейбір жағдайларда кескін үшін мөлдір фон қою керек. Surface класының set_colorkey() әдісімен кескіннің фонын мөлдір етуге болады. set_colorkey() әдісінде бірнеше түс ұсынылады. Көрсетілген түстің барлық пикселі мөлдір болады.
4-тапсырма. Негізгі беттің түсін жасылға өзгертіп, фоны мөлдір кескін қосу керек
Код үзіндісі:
6-сурет
Нәтижесі:
7-сурет
Ойынға бірнеше кескін енгізген кезде беттердің қосылу ретін ескеру қажет.
Екі кодты және олардың нәтижелерін салыстыр.
1-код:
8-сурет
Нәтижесі:
9-сурет
2-код:
10-сурет
Нәтижесі:
11-сурет
Осы сабақта талқыланған тапсырмаларды әртүрлі графикалық редакторларда құрылған кейіпкерлерді жүктеу үшін ойында қолдануға болады.
Кейіпкерлерді анимациялау. 1-сабақ
Анимация арқылы ойын кейіпкерлерін қозғалтуға болады. Суреттерді қайталап салу және объектіні экраннан жою арқылы қимылдатудың жолдары бар.
Объектіні қозғалту алгоритмі:
-
Жұмыс аумағына пішін салу. -
Экранда кескін көрініп тұрған кезде негізгі терезені жаңарту. -
Пішінді жою. -
Дәл сол пішінді сәл алға жылжытып салу. -
Терезені жаңарту. -
Осылай 4-5 рет пішіннің суретін салып, әр салған сайын пішін орнын өзгерту керек.
Фигураны жою үшін жұмыс бетінің фонын анықтап алу қажет. Мұны Surface объектісінің fill() әдісімен жасауға болады. Бұл әдіспен фонды кез келген түске өзгертуге болады. Әрекеттерді ойын циклінде қайталайды.
Экрандағы нүкте (пиксель) координаттармен (х, у) белгіленеді. Кері санақ сол жақ жоғары бұрышта орналасқан
(0,0) нүктеден басталады. х координатасы солдан оңға, ал у координатасы жоғарыдан төменге қарай артады.
1-сурет. Экранның координаттар жүйесі
Объектілерді жылжыту үшін координаттарды өзгерту керек. Жылжытқан кезде қадам арасы жиі орналасуы қажет, сонда қозғалыс біркелкі болады. Егер көлденеңінен жылжыту керек болса, онда х координатасын өзгертеді. Тігінен жылжыту керек болса, у координатасын өзгертеді.
1-тапсырма. Көлікті көлденең бағытта қозғалту керек. Файл «car.bmp» деп аталады.
Программалық коды:
2-сурет
Ескерту. Ойын циклін ашпас бұрын x кескінін шығаруға арналған бастапқы координата орнатылады, оның мәні сол жақ шекарадан асуы керек. Беттің фоны кескіннің фонымен сәйкес келуі керек. Егер кескіннің фоны мөлдір болса, жұмыс бетінің фоны ретінде кез келген түсті таңдауға болады. Суреттегі көлік ақ фонда салынған, сондықтан жұмыс беті де ақ түсті болады. Автокөлік көлденеңінен қозғалады, сондықтан оңға жылжу үшін х координатасын арттыру керек.
Нәтижесі:
3-сурет. Иллюстрации және анимация\Анимация1.mp4
Бұл тапсырмадағы объект терезенің оң жақ жиегіне жеткенше қозғалады. Шартты қолдан, ойын терезесі жабылғанша объектінің қозғалысын қайталауға болады.
2-тапсырма. Жоғарыдан төменге түсетін шеңбер сызу керек. Анимация терезе жабылғанша қайталанады.
Программалық коды:
4-сурет
Ескерту. Шеңберді circle() функциясы арқылы салады, ол шеңбер центрі мен радиусының координаттарын анықтайды. Шеңбер тігінен қозғалатын болғандықтан, х координаты қозғалмайды. у координатының мәні 2 қадамға артады. Ойын циклі ашылмай тұрып, бастапқы координаттың мәні анықталады, ол жоғары шекарадан асуы керек. Егер шеңбер төменде болса, онда ол қайтадан жоғары жылжиды.
Нәтижесі:
5-сурет. Иллюстрации және анимация\Анимация2.mp4
Кескінді қиғашынан жылжыту үшін екі координатты да өзгерту керек.
3-тапсырма. Таудан түскен көліктің кескінін салу.
Ескерту. Тау мен машинаның кескіні алдын ала графикалық редакторда жасалып, кодпен бірге бумада сақталуы керек.
Нәтижесі:
6-сурет. Иллюстрации және анимация\Анимация3.mp4
Программалық коды:
7-сурет
Қозғалыс траекториясы күрделірек болуы мүмкін. Мұндай жағдайларда координаттар кіріктірілген математикалық функциялармен есептеледі.
4-тапсырма. Планетаның Күнді айнала қозғалу моделін жасау керек.
Программалық коды:
8-сурет
Нәтижесі:
9-сурет. Иллюстрации және анимация\Анимация4.mp4
Қарастырылған тәсілдерді бірнеше объектіні қозғалту үшін қолдануға болады.
Кейіпкерлерді анимациялау. 2-сабақ
Ойындағы кейіпкерлерді пернетақта арқылы басқаруға болады. Пернетақтадағы пернелерді басқан кезде pygame.event модулі басқаратын белгілі бір оқиғалар болады. Оқиға пайда болған кезде Event класының объектісі құрылады. Осы кластың барлық объектісінде type (оқиға типі) қасиеті бар, оған басқа да қасиеттердің жиынтығы тәуелді болады.
Пернетақта оқиғалары пернелерді басу және жіберу деп аталатын екі түрге бөлінеді. Бұл оқиғалардың мәнін pygame.KEYDOWN және pygame.KEYUP тұрақты модульдермен анықтайсың.
Екі оқиғаның да key және mod атрибуттары бар. key-де әрекет орындалатын перне жазылады. mod атрибутында пернелер тіркелімінде қолданылатын модификатор пернелер (Shift, Ctrl және т. б.) бар.
Программадағы пернелерді тұрақты түрде орнатуға болады. Ол үшін пернелерді пайдаланарда алдына K әрпін қосып жазу керек. Кестеде пернетақтадағы кейбір тұрақты пернелер берілген:
Пернетақталық тұрақтылар
Перне
K_BACKSPACE
Вackspace
K_TAB
Тab
K_ESCAPE
Еsc
K_UP
жоғарыға бағыттаушы
K_DOWN
төменге бағыттаушы
K_RIGHT
оңға бағыттаушы
K_LEFT
солға бағыттаушы
K_INSERT
Insert
K_HOME
Нome
K_END
Еnd
K_PAGEUP
Рageup
K_PAGEDOWN
Рagedown
Негізінен, ойында қозғалу үшін бағыттауыш пернелер қолданылады. Шарттарды қолданып, объектінің қай бағытта қозғалатынын анықтауға болады.
Мысалы, сол жаққа бағыттайтын пернені басқан кезде объектіні жылжыту үшін мына кодты жазу керек:
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT: x -= 5
Сыртқы шарт басылған перненің оқиғасын анықтайды. Әрекет орындалатын пернені басқан кезде оның атауы ішкі шартта болады. Нысан солға қарай жылжыған кезде х координатасы кемиді. Сол сияқты, басқа пернелерді пайдаланып та объектіні қозғалтуға болады. Координаттардың өзгеруі қозғалыс бағытына байланысты.
1-тапсырма. Терезенің ортасында шаршы бар. Бағыттауыштарды пайдаланып, шаршыны жоғары, төмен, солға, оңға жылжытатын программа жазу керек.
1-сурет
2-сурет. Толық коды
Бұл тапсырмада пернені басқан сайын шаршы таңдалған бағытта 5 пиксельге жылжиды.
Көбінесе перне басылған кезде ойын объектінің белгілі бір бағытта үздіксіз қозғалуын талап етеді. Мұны негізгі циклдегі pygame.KEYDOWN оқиғасының координатын өзгерту арқылы жүзеге асыруға болады. Пернені жіберген кезде қозғалысты тоқтату үшін pygame.KEYUP оқиғасына шарт қосу керек. Программада жалауша рөлін атқаратын айнымалы болуы керек. Бұл айнымалының мәні перне күйіне байланысты (басылған немесе босатылған).
2-тапсырма. Бағыттауыштарды пайдаланып, шаршыны жылжытатын программа жаз. Қозғалыс пернені басқан кезде үздіксіз орындалуы керек.
3-сурет. Программаның толық коды
Кейбір жағдайларда кодты pygame.key.get_pressed () функциясы арқылы жеңілдетуге болады. Егер перне басылса, функция 1 мәнін, әйтпесе 0 мәнін қайтарады.
3-тапсырма. Бағыттауыштарды пайдаланып, автокөлік суретін жоғары, төмен, солға, оңға жылжытатын программа жазу керек.
4-сурет
5-сурет. Программаның толық коды
Егер екі немесе одан да көп перненің тіркесімін орнату қажет болса, онда күрделі логикалық өрнек қолданылады. Мысалы, «жоғары» бағыттауыш пен «z» пернесін бір уақытта басуды орнату үшін шартқа мына өрнекті жазу керек:
keys[pygame.K_UP] and keys[pygame.K_z]
4-тапсырма. Пернелер тіркесімі арқылы кодты қиғаш қозғалыс бағыттарымен толықтыр:
"←" + "1" – солға жоғары
"←" + "2" – солға төмен
"→" + "3" – оңға жоғары
""→" " + "4" – оңға төмен
6-сурет. Код үзіндісі
Қарастырған тапсырмаларға сүйеніп, ойындағы кейіпкерлердің қозғалысын пернетақтадан басқаруға болатынына көз жеткіздің.