Мазмуну:
- 1 -кадам: Кеңири баяндама
- 2 -кадам: Пререквизиттер
- 3 -кадам: "Hello World" Pygame Zero
- 4 -кадам: Актеруңузду тартуу
- 5 -кадам: Актёрду көзөмөлдөңүз
- 6 -кадам: тректи куруу
- 7 -кадам: Унаа кырсыгы
- 8 -кадам: Оюнду Raspberry Piде иштетиңиз
- 9 -кадам: Сиз жеңдиңизби?
- 10 -кадам: Жыйынтык
Video: Биринчи жарыш оюнуңузду түзүңүз: 10 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:41
Эгерде сиз 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
Сураныч, төмөндөгү "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де иштетиңиз
On Raspberry Pi pgzero 2015 -жылдын сентябрында Raspbian Jessie чыгарылгандан бери демейки боюнча орнотулган.
Жөн гана буйрукту колдонуу менен Raspberry Piңизди жаңыртыңыз:
sudo apt-get update
Файл жайгашкан жериңизге барып, Терминалга териңиз.
pgzrun.py
9 -кадам: Сиз жеңдиңизби?
Сиз тректи башка туурасы кылуу үчүн trackWidth өзгөрмөсүн өзгөртүү менен оюнду оңой же кыйын кыла аласыз. Тректи ылдамыраак же жайыраак кылуу үчүн SPEEDтин маанисин өзгөртө аласыз.
10 -кадам: Жыйынтык
Pygame Zero - бул компьютер оюндарын жазууну каалагандар үчүн эң сонун тандоо.
Эгерде кандайдыр бир суроолоруңуз болсо, албетте, комментарий калтырсаңыз болот. Менин чыгармаларым жөнүндө көбүрөөк билүү үчүн, менин каналыма баш багыңыз:
myYouTube
myTwitter
myLinkedin
Бул көрсөтмөлүү окуу үчүн рахмат ^^ жана жакшы күн. Көрүшкөнчө. Ахмед Нуира.
Сунушталууда:
Өзүңүздүн 2048 Оюнуңузду W/Java менен программалаңыз!: 8 кадам
Өзүңүздүн 2048 Оюн W/Java!: Мен 2048 оюнун жакшы көрөм. Ошентип, мен өз версиямды программалоону чечтим. Бул чыныгы оюнга абдан окшош, бирок аны программалоо мага каалаган убакта каалаган нерсемди өзгөртүү эркиндигин берет. Эгерде мен кадимки 4x4 ордуна 5x5 оюнун кааласам, анда
Өзүңүздүн 1D понг оюнуңузду жасаңыз: 5 кадам (сүрөттөр менен)
Өзүңүздүн 1D Понг Оюнуңузду түзүңүз: Бул проект үчүн мен ойноо абдан кызыктуу болгон 1D Понг Оюнун түзүү үчүн MDF тактасын бузулган баскычтар, светодиоддор жана Arduino Nano менен кантип бириктиргенимди көрсөтөм. Жолдо мен сизге электроника схемасын кантип түзүү керектигин жана кандай айырмачылыкты көрсөтөм
DIY PC рулу жана педалдары картондон! Жарыш симуляторлору жана оюндары үчүн (Пикир, Калакты которгучтар, Дисплей): 9 кадам
DIY PC рулу жана педалдары картондон! Жарыш симуляторлору жана оюндары үчүн (Пикир, Калакты которгучтар, Дисплей): Эй баары! Бул кызыксыз мезгилде, биз баарыбыз эмне кылаарыбызды издеп айланып жүрөбүз. Чыныгы жашоодо жарышуу иш -чаралары жокко чыгарылып, алардын ордуна симуляторлор коюлду. Мен кемчиликсиз иштеген арзан тренажерду курууну чечтим
CDлерди жарыш машиналарына кайра иштетүү: 8 кадам (сүрөттөр менен)
CDлерди жарыш машиналарына кайра иштетүү: Саламатсыздарбы. Бул биздин автожарыш унаабыз Бул толугу менен бекер жана автоматтык түрдө Эгерде сиз Ата -эне болсоңуз, анда бул сиздин балдарыңыз менен ойногонго абдан ылайыктуу болот, муну абдан жөнөкөй кылып, абдан кызыктуу болот, мен сизге жол көрсөтөм, келгиле! СИЗГЕ диск дискке муктаж
Өзүңүздүн Tic Tac Toe оюнуңузду Javaга жазыңыз: 6 кадам
Өзүңүздүн Tic Tac Toe оюнуңузду Javaга жазыңыз: Баарыңыздар Tic Tic Toe классикалык оюну жөнүндө билесиздер. Менин башталгыч класстарымдан бери Tic Tac Toe мен досторум менен ойногон популярдуу оюн болчу. Мен ар дайым оюндун жөнөкөйлүгүнө кызыкчумун. Биринчи курста менин