Мазмұны:
- Жабдықтар
- 1 -қадам: Негізгі цикл
- 2 -қадам: джойстик
- 3 -қадам: дисплей буфері
- 4 -қадам: басқыншылар, оқтар және ойыншы
- 5 -қадам: Оны өзіңізге айналдырыңыз
Бейне: Micropython ішіндегі ғарыштық басқыншылар: бит: 5 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:23
Алдыңғы мақалаларда біз TinkerGen білім беруімен жасалған портативті ретро ойын консолі GameGo -да ойын жасауды зерттедік. Біз жасаған ойындар ескі Nintendo ойындарын еске түсірді. Бүгінгі мақалада біз артқа, арткада ойындарының алтын дәуіріне бір қадам шегінетін боламыз. Біз Micropython -да Micro: bit микроконтроллерінде Space Invaders ойынын қайта құрамыз және бұрылыс ретінде біз BitPlayer Micro: bit кеңейтімін қолданамыз, бұл бізге ойынды ыңғайлы ойнауға мүмкіндік береді.
Бұл оқулық Micropython-да ойынды кодтау туралы болғандықтан, біз бұрын графикалық программалау сабақтарында қолданған дәстүрлі кезең-кезеңмен емес, біз блоктар бойынша блок-блок арқылы өтеміз-маңызды функцияларды, сыныптарды және негізгі цикл Сіз толық кодты осы жобаның GitHub репозиторийінен жүктей аласыз. Бекітіңіз, бастайық!
Жабдықтар
TinkerGen BitPlayer
BBC Micro: аз
1 -қадам: Негізгі цикл
Бұл оқулықта мен «әдіс» сөзін жиі қолданатын боламын. Питондағы әдіс функцияға біршама ұқсас, тек объектімен/сыныптармен байланысты. Осылайша, жеңілдету үшін сіз оны «сыныптағы функция» ретінде оқи аласыз. Сіз әдістер туралы толығырақ мына жерден оқи аласыз.
Біз негізгі циклды енгіземіз
game_over болмаған кезде:
шарт. Ішінде біз басқыншылардың санын, олардың пайда болу мүмкіндігін және деңгейлік сөздіктен келесі деңгейге өту үшін қажет санды аламыз. Содан кейін біз JoyStick сыныптық данасының Listen_Dir даналық әдістерімен солға-оңға қозғалысты тексереміз. Егер шарттардың бірі «True» деп бағаланса, біз ойнайтын кейіпкеріміздің x мәнін көбейтеміз/азайтамыз. Біз оны екі шартпен [-2, 2] шектейміз. Содан кейін біз DisplayBuffer класының данасын инициализациялаймыз және «қалқан» немесе «атыс қаруы» түймелерінің басылуын тексереміз. Нысандарды кейін көрсету үшін DisplayBuffer.set () әдісін қолданамыз. Қалқанды көрсету үшін біз DisplayBuffer.set () тікелей қолданамыз, бірақ оқтар мен басқыншылар үшін оларды тиісті тізімге қосамыз және дисплейлерді кейін көрсету үшін келесі кодпен циклге бір -бірлеп орнатамыз ():
оқтардағы b үшін: b.render (dispBuf) v үшін вадерлерде: v.render (dispBuf)
Барлық басқыншылар, оқтар мен қалқандар әр негізгі цикл қайталанатын кезде бір рет көрсетіледі
dispBuf.render ()
Негізгі цикл аяқталмас бұрын біз басқыншылардың кез келген оқтары экранның соңына жеткенін тексереміз, егер олар болса, біз оларды тиісті тізімнен өшіреміз.
2 -қадам: джойстик
BitPlayer-ді ұстау және пайдалану оңай, Gameboy немесе PSP контроллері сияқты 2 осьті джойстикпен, сонымен қатар L, R, A, B, C және D деп белгіленген 6 бағдарламаланатын батырманы қамтиды. Терең және интерактивті тәжірибе үшін BitPlayer өзі дыбыстық сигнал, діріл қозғалтқышы және OLED дисплейі сияқты қосымша перифериялық құрылғыларды қосуға арналған Grove I2C портынан тұрады.
Біз бұл ойын үшін джойстиктің сол жақ-оң жақ рокерін ғана қолданамыз, мысалы BitPlayer-дің барлық түймелерін пайдалану үшін сіз осы жобаның GitHub репозиторийінде joystick_example.py сайтына кіре аласыз. JoyStick класының данасын құрған кезде біз X осінің әдепкі оқуын тексереміз және сол мәнді self. Read_X ішінде сақтаймыз. Содан кейін Listen_Dir функциясында біз осы әдепкі мәннен ауытқу сезімталдық айнымалысынан жоғары екенін тексереміз (егер сіз JoyStick тым сезімтал деп ойласаңыз, оны өзіңіз реттеп көріңіз) және анықталған бағыт бойынша True False мәнін қайтарыңыз.
Бұл қалай жұмыс істейтіні туралы нақты мысалды қарастырайық:
Біздің осьтік X осінің көрсеткіші 0 деп айтайық. Егер Джойстикті оңға жылжытсақ:
New_X = JoyStick_X.read_analog () #New_X = 200
Оңға = Жаңа_Х - өзін -өзі. Оқу_Х #Оңға = 200 Солға = өзін -өзі оқу. X -Жаңа_Х #Солға = -200
Содан кейін біз бағытты тексергенде:
Precision = 150if Right> Precision: #200> 150 True Get_Rocker = DIR ['R'] elif Left> Precision: #-200> 150 False Get_Rocker = DIR ['L'] else: Get_Rocker = DIR ['NONE'] if Dir == Get_Rocker: return True else else: False қайтару
3 -қадам: дисплей буфері
DisplayBuf класы жарықдиодты экранды басқаруға жауап береді. Бұл set () және render () екі әдісін қолдана отырып орындалады. set () әдісі жарықдиодты экран пикселдеріне сәйкес келетін мәндерді өзгертеді. Естеріңізде болар, Micro: bit LED экранындағы пиксельдер жол немесе тізім түрінде көрсетілуі мүмкін - «00000: 00000: 00000: 00000: 00000» бос экран. «00000: 00000: 00000: 00000: 00100» - төменгі жолдың ортасында күңгірт жарық пикселі бар экран.
00000:
00000
:00000
:00000:
00100"
Бұл белгіні өңдеу оңай болуы мүмкін:)
Сонымен, негізгі цикл кезінде біз DisplayBuf -дің call (set) әдісімен экранда көрсетілуі қажет барлық объектілерді орнатамыз. Содан кейін біз олардың барлығын экранда бір мезгілде көрсету үшін render () әдісін қолданамыз.
4 -қадам: басқыншылар, оқтар және ойыншы
Оқтар мен басқыншылар Mover класына жатады. Mover класс даналарының x, y орналасуы мен жылдамдығы, сондай -ақ жарықтығы бар. Mover класында set () және move () екі даналық әдістері бар. set () әдісі жай жарық диодты матрицада көрсету үшін сақтау үшін координаттары жаңартылған DisplayBuf set () әдісін шақырады. move () әдісі дана жылдамдығына сәйкес даналық координатаны жаңартады - бұл деңгейлердің өсуімен басқыншылардың жылдамдығын өзгерту қажет болған кезде пайдалы болады.
Class Bullet және class Invader - бұл Mover класының ішкі сыныптары. Мұнда біз мұрагерлік деп аталатын нәрсені қолданамыз. Super () функционалдығы кодты қайталамай -ақ, кіші сыныптағы суперкласстың әдістерін шақыруға мүмкіндік береді.
5 -қадам: Оны өзіңізге айналдырыңыз
Құттықтаймын! Сіз жай ғана Micro: бит ойынында классикалық Space Invaders ойынын қайта құрдыңыз. Әрине, сіз ойын кодын осы жерден жақсарта аласыз - мысалы, қазіргі уақытта ойынның тек бір деңгейі бар - сіз одан да күрделі ойындарды қоса аласыз. Сондай -ақ, есіңізде болар, бастапқы ойында плеердің алдында жартастар бар, оларды да қосуға болады.
Егер сіз ойынның жақсартылған нұсқасын жасасаңыз, оны төмендегі түсініктемелерде бөлісіңіз! BitPlayer және өндірушілер мен STEM тәрбиешілеріне арналған басқа жабдық туралы қосымша ақпарат алу үшін біздің веб -сайтқа кіріңіз, https://tinkergen.com/ және біздің ақпараттық бюллетеньге жазылыңыз.
TinkerGen жақында MARK (Make A Robot Kit) үшін Kickstarter науқанын құрды, бұл кодтауды, робототехниканы, AI үйретуге арналған роботтар жиынтығы!
Hexkcd/micro-vaders бастап Micropython бастапқы коды, TinkerGen BitPlayer жұмыс істеу үшін өзгертілді.
Ұсынылған:
СКД басқыншылары: 16x2 СКД дисплейіндегі ойын сияқты ғарыштық басқыншылар: 7 қадам
СКД басқыншылары: 16x2 СКД дисплейіндегі ғарыштық басқыншылар ойыны: Аңызға айналған «Космостық басқыншылар» ойынын енгізудің қажеті жоқ. Бұл жобаның ең қызықты ерекшелігі - бұл графикалық шығару үшін мәтіндік дисплейді қолдану. Бұған 8 таңбалы таңбаны енгізу арқылы қол жеткізуге болады. Сіз толық Arduino жүктей аласыз
Микро бит бойынша ғарыштық басып алушыларды қалай жасауға болады: 4 қадам
Микро бит бойынша ғарыштық басып алушыларды қалай жасауға болады: Сондықтан бірінші қадам - біздің кемені жасау. Сіз " Негізгі " және " Бастауда " блок Содан кейін сіз " Айнымалылар " және сіз " SHIP " деп аталатын айнымалы жасайсыз. және " Айнымалылар " ішінен блокты таңдаңыз. қойынды t
Микро бағдарламалау: бит робот және джойстик: MicroPython көмегімен бит контроллері: 11 қадам
Micro: Bit Robot & Joystick бағдарламалау: MicroPython көмегімен бит контроллері: Robocamp 2019 үшін біздің жазғы робототехника лагері, 10-13 жас аралығындағы жастар BBC микро: битке негізделген «салмаққа қарсы роботты» дәнекерлейді, бағдарламалайды және құрады. микро: бит қашықтан басқару құралы ретінде пайдаланылады. Егер сіз қазір Robocamp -та болсаңыз, шаңғымен
Кербал ғарыштық бағдарламасының физикалық кезеңдеу түймесімен ғарыштық ұшырылымды жаңартыңыз: 6 қадам
Ғарыштық ғарыштық бағдарламаның физикалық кезеңдеу түймесімен ғарыштық ұшырылымды жаңартыңыз: Мен жақында Kerbal Space бағдарламасының демо нұсқасын алдым. Кербал ғарыш бағдарламасы - бұл тренажерлық ойын, ол зымырандарды жобалауға және ұшыруға және оларды алыс айлар мен планеталарға бағыттауға мүмкіндік береді. Мен әлі күнге дейін Айға сәтті қонуға тырысамын (о
Pimoroni Enviro көмегімен жарық пен түсті өлшеу: микро үшін бит: бит: 5 қадам
Pimoroni Enviro көмегімен жарық пен түстерді өлшеу: бит үшін микро: бит: Мен бұрын жарық пен түстерді өлшеуге мүмкіндік беретін кейбір құрылғыларда жұмыс істедім, және сіз осындай өлшемдердің теориясы туралы көптеген нұсқауларды таба аласыз. жақында қоршаған ортаны шығарды: бит, m үшін қосымша