Мазмуну:

Биринчи жарыш оюнуңузду түзүңүз: 10 кадам
Биринчи жарыш оюнуңузду түзүңүз: 10 кадам

Video: Биринчи жарыш оюнуңузду түзүңүз: 10 кадам

Video: Биринчи жарыш оюнуңузду түзүңүз: 10 кадам
Video: I ОРУН // ДҮЙНӨЛҮК КУРАН ЖАРЫШ // Мухаммадали Умаров 2024, Ноябрь
Anonim
Image
Image
Сүрөт
Сүрөт

Эгерде сиз Python коддоону жасап, оюн жазгыңыз келсе, Pygame Zero аркылуу болушу мүмкүн.

Бул окуу куралында биз жөнөкөй жарыш оюнун жазабыз.

1 -кадам: Кеңири баяндама

Pygame модулу Pythonдо оюн жазууга жардам берген көптөгөн функцияларды кошот.

Pygame Zero бир кадам алдыга жылат, сизге ошол оюндардын баарын жасоонун жана программанын структурасын орнотуунун татаал процессин өткөрүп жиберүүгө мүмкүнчүлүк берет.

Pygame Zero - Raspberry Pi же Linux машинасында компьютер оюндарын жазууну каалагандар үчүн эң сонун тандоо.

Сага керек болот:

  • Linux OS менен иштеген машина
  • Python программасын жазуу үчүн редактор
  • Баскычтоп
  • Кээ бир фантазия

Файлдар:

github.com/AhmNouira/-Racing-Game

2 -кадам: Пререквизиттер

Биринчиден, ноутбукту Ubuntu 18.04 OS менен колдоном. Андан кийин оюнду 8 -кадамда Raspberry Piде иштетебиз.

Бул окуу куралын улантуудан мурун, сиз sudo артыкчылыктары бар колдонуучу катары киргениңизди текшериңиз.

Python 3 үчүн пипти орнотуу

Төмөнкү буйрукту колдонуу менен пакеттердин тизмесин жаңыртуу менен баштаңыз:

sudo apt update

Python 3 үчүн пипти орнотуу үчүн төмөнкү буйрукту колдонуңуз:

sudo apt install python3-pip

пип версиясын текшерүү менен орнотууну текшериңиз:

pip3 -версия

Pygame Zero орнотуу

pip3 орнотуу pgzero --user

Бул ошондой эле Pygame орнотот. Алдын ала түзүлгөн Pygame топтомдору

Ошентип, сапарыңыздагы биринчи кадам Python 3 IDLE же сүйүктүү питон редакторуңузду ачуу болот.

3 -кадам: "Hello World" Pygame Zero

Демейки боюнча, Pygame Zero терезеси 800 пикселдин туурасы менен 600 пикселдин бийиктигинде ачылат. Ыңгайлаштырсаңыз болот

терезеңиздин өлчөмү, эгер сиз WIDTH = 700 HIGH = 800 кошсоңуз, эки алдын ала белгиленген өзгөрмөлөрдү орното аласыз.

Pygame нөл оюн циклинин адатта аткара турган функцияларын камсыз кылат:

Draw () функциясы

Биз бул функцияны программабызга кадимкидей Pythonдо функцияны аныктагандай жаза алабыз.

Pygame Zero Python сыяктуу эле форматтоо эрежелерине ылайык иштейт, андыктан кодуңузду туура чегинтүүгө кам көрүшүңүз керек болот.

#!/usr/bin/python3 # котормочуну койду

import pgzrun # import pgzero модул WIDTH = 700 # терезенин туурасы БИЙИКТИК = 800 # терезенин бийиктиги def draw (): # pygame нөл тартуу функциясынын экраны. толтуруу ((128, 128, 128)) # экранды RGB менен толтуруу color screen.draw.text ("Hello World!", (270, 320), # draw "Hello World!" color = (255, 255, 255), fonttsize = 40) pgzrun.go ()

Биринчиден, программаңыздын файлын сактап, ага ат коюшуңуз керек.

Андан кийин Терминал терезесин ачыңыз, файлдын жайгашкан жерине барып, териңиз:

./.py

4 -кадам: Актеруңузду тартуу

Сиздин актёрду тартуу
Сиздин актёрду тартуу

Эми бизде сахна топтому бар, биз Актерлорубузду түзө алабыз, алар Pygame Zeroдогу динамикалык объекттер.

Биз программанын үстүнө терүү менен Актёрду жүктөй алабыз:

унаа = Актёр ("жарыш унаасы")

Pygame Zeroдо биздин сүрөттөр сүрөттөр деп аталган каталогдо сакталууга тийиш, биздин программанын жанында. Ошентип, биздин Актер racecar.png деп аталган сүрөттөр папкасынан сүрөт файлын издейт. Бул GIF же-j.webp

Терүү аркылуу анын ордун экранда коюуга болот:

car.pos = 350, 560

Андан кийин draw () функциясында биз тере алабыз

car.draw () # биздин жарыш машинабызды анын аныкталган абалына тарткыла

Толук программа мындай болот:

#!/usr/bin/python3

import pgzrun WIDTH = 700 # терезенин туурасы HEIGHT = 800 # терезенин бийиктиги = Actor ("racecar") car.pos = 350, 560 def draw (): # pygame zero draw function function.fill ((128, 128, 128)) # экранды car.draw () pgzrun.go () менен толтур

Бул иштеп жатканына ынануу үчүн программаңызды текшериңиз.

5 -кадам: Актёрду көзөмөлдөңүз

Актёрду көзөмөлдө
Актёрду көзөмөлдө

Биз машинабызды экранда тарткандан кийин, кийинки этап оюнчуга аны жылдырууга мүмкүнчүлүк берүү.

Биз муну баскычтардын жардамы менен жасай алабыз. Бул ачкычтардын абалын update () деп аталган дагы бир алдын ала аныкталган функциядан окуй алабыз.

Update () Функциясы

Бул функция оюн иштеп жатканда дайыма текшерилип турат.

Биз жебе баскычтарын басууну аныктоо үчүн жана ошондой эле бул жөнүндө бир нерсе кылуу үчүн кээ бир коддорду жазышыбыз керек.

Ошентип, биз бул функцияны программабызга кошобуз

def update ():

эгер клавиатура.солдо: car.x -= 2 эгерде клавиатура.оңдо: car.x += 2 болсо клавиатура.up: car.y -= 2 эгер клавиатура. төмөндө: car.y += 2

Бул коддор машинанын Актерун солго, оңго, алдыга жана артка жылдырат.

6 -кадам: тректи куруу

Тректи куруу
Тректи куруу

Эми биз рулду башкара турган машинага ээ болгонубуз үчүн, анын жүрүшү үчүн трек керек.

Биз тректи актёрлордон бирден катар түзөбүз. Биз жараткан актёрлорду көзөмөлдөө үчүн кээ бир тизмелерди түзүшүбүз керек.

Биз трекке дагы бир нече өзгөрмөлөрдү орнотушубуз керек.

Андан кийин makeTrack () деп аталган жаңы функцияны түзөлү, Функция биздин сүрөттөр папкасындагы bare-p.webp

trackLeft = Сол тизмелерди сактоо үчүн # тизме

trackRight = оң тизме сактала турган # тизме trackCount = 0 # барри санын эсептөө trackPosition = 350 trackWidth = 150 # туурасы сол жана оң баррилердин def makeTrack (): # функциясы бир баррини сол жана оң глобалдык trackCount кылуу үчүн, trackLeft, trackRight, trackPosition, trackWidth trackLeft.append (Актер ("жылаңач", пос = (trackPosition-trackWidth, 0))) trackRight.append (Актер ("жылаңач", пос = (trackPosition + trackWidth, 0))) trackCount += 1

Кийинки нерсе, экрандын ылдыйкы бөлүктөрүн машинага карай жылдыруу.

Келгиле, updateTrack () деп аталган жаңы функцияны жазалы, Бул функция трек блоктору пайда боло турган жерде жаңырат. Трек бөлүктөрү кокус сандар менен түзүлгөн, андыктан ар бир оюн башкача.

trackDriction = False

ЫЛДАМДЫК = 4 # оюндун ылдамдыгын кокустуктан киргизет randint # randint классын туш келди модулдан def updateTrack (): global trackCount, trackPosition, trackDirection, trackWidth, SPEED b = 0 b 32: if trackDirection == False: trackPosition += 16 if trackDirection == True: trackPosition - = 16 if randint (0, 4) == 1: trackDirection = trackDirection if trackPosition> 700 - trackWidth: trackDirection = эгер trackPosition < trackWidth: trackDirection = False makeTrack () # экрандын жогору жагында жаңы трек түзүү

Сураныч, төмөндөгү "RaceGameDemo" деп аталган zip файлына кайрылыңыз.

Эгерде биз учурда кодубузду иштете турган болсок, машинаны көздөй чуркап бараткан тректи көрүшүбүз керек. Бир гана көйгөй - биз машинаны трек тоскоолдуктарынан ары жылдыра алабыз жана кээ бир кагылышууларды аныктоо менен алардын ичинде машинаны сактап калууну каалайбыз.

7 -кадам: Унаа кырсыгы

Автокырсык
Автокырсык
Автокырсык
Автокырсык
Автокырсык
Автокырсык

Биз машинабыз Тракторго тийбей турганын текшеришибиз керек.

updateTrack () функциябыздагы colliderect () ыкмасын колдонуп, кагылышууларды текшере алабыз.

Бул оюнда бизде өзгөрүлмө gameStatus сакталган оюнга үч башка абал болот:

  • gameStatus == 0 # оюн иштеп жатат
  • gameStatus == 1 # унаа кырсыгы
  • gameStatus == 2 # оюн аяктады

GameStatus өзгөрмөсүнө жооп берүү үчүн draw () функциясын жана update () функциясын өзгөртүү керек болот.

Акыркы бүтүрүү

Азыр кылышыбыз керек болгон нерсе, эгерде gameStatus 1 же 2 деп коюлса, бир нерсени көрсөтүү керек, мисалы, биз кызыл түстү көрсөтүшүбүз керек

желек, эгер машина куласа. Биз муну төмөнкү код менен жасай алабыз:

screen.blit ("redflag", (230, 230))

Машинанын аягына жеткенин билүү үчүн, биз канча трек бөлүмүн түзгөнүн эсептеп көрүшүбүз керек, анан биз 200гө жеткенде gameStatusту 2ге коюп, анан желекченин желегин көрсөтүңүз:

screen.blit ("finishflag", (230, 230))

Биз ошондой эле оюндун учурдагы упайы сыяктуу экранда кандайдыр бир текстти көрсөтөбүз.

Мунун баары кантип бири -бирине дал келерин билүү үчүн коддун толук тизмесин караңыз.

8 -кадам: Оюнду Raspberry Piде иштетиңиз

Оюнду Raspberry Piде иштетүү
Оюнду Raspberry Piде иштетүү
Оюнду Raspberry Piде иштетүү
Оюнду Raspberry Piде иштетүү

On Raspberry Pi pgzero 2015 -жылдын сентябрында Raspbian Jessie чыгарылгандан бери демейки боюнча орнотулган.

Жөн гана буйрукту колдонуу менен Raspberry Piңизди жаңыртыңыз:

sudo apt-get update

Файл жайгашкан жериңизге барып, Терминалга териңиз.

pgzrun.py

9 -кадам: Сиз жеңдиңизби?

Жеңдиңби?
Жеңдиңби?

Сиз тректи башка туурасы кылуу үчүн trackWidth өзгөрмөсүн өзгөртүү менен оюнду оңой же кыйын кыла аласыз. Тректи ылдамыраак же жайыраак кылуу үчүн SPEEDтин маанисин өзгөртө аласыз.

10 -кадам: Жыйынтык

Pygame Zero - бул компьютер оюндарын жазууну каалагандар үчүн эң сонун тандоо.

Эгерде кандайдыр бир суроолоруңуз болсо, албетте, комментарий калтырсаңыз болот. Менин чыгармаларым жөнүндө көбүрөөк билүү үчүн, менин каналыма баш багыңыз:

myYouTube

myTwitter

myLinkedin

Бул көрсөтмөлүү окуу үчүн рахмат ^^ жана жакшы күн. Көрүшкөнчө. Ахмед Нуира.

Сунушталууда: