Ва ман самимона боварӣ дорам, ки бо навиштани муҳаррики бозии худ ва бозӣ дар он шумо метавонед чашмони худро кушоед, тирезаҳоро пок кунед ва кабинаатонро насос кунед ва як барномасози ботаҷриба ва интегралӣ шавед.
"Дониш бе амал бефоида аст, амал бе дониш хатарнок аст" Конфуций
Дафтарчаи ман ҳаёти ман аст!
Пас, дар амал гуфта метавонам, ки барои ман ҳама чиз аз дафтар оғоз мешавад. Ман дар он ҷо на танҳо вазифаҳои ҳаррӯзаи худро менависам, балки диаграммаҳо мекашам, барномарезӣ мекунам, тарҳрезӣ мекунам ва масъалаҳо, аз ҷумла риёзиро ҳал мекунам. Ҳамеша блокнотро истифода баред ва танҳо бо қалам нависед. Ин тоза, бароҳат ва боэътимод аст, IMHO.
Дафтарчаи ман (аллакай пур карда шудааст). Чунин ба назар мерасад. Он дорои вазифаҳои ҳаррӯза, ғояҳо, расмҳо, диаграммаҳо, ҳалли онҳо, ҳисобдории сиёҳ, код ва ғайра мебошад.
Саҳнаи 3D бозӣ нест. Илова бар ин, моделсозӣ ва аниматсия кардани объектҳои 3D (хусусан аломатҳо) тӯлонӣ ва душвор аст. Пас аз бозӣ кардан бо Unity, ман фаҳмидам, ки ман бояд аз асосҳо идома диҳам, ё дурусттараш, оғоз кунам. Як чизи оддӣ ва зуд, аммо ҳамзамон глобалӣ, барои фаҳмидани сохтори бозиҳо.
Ва мо чӣ содда ва зуд дорем? Ин дуруст аст, консол ва 2D. Аниқтараш, ҳатто консол ва рамзҳо. Боз ба ҷустуҷӯи илҳом дар интернет шурӯъ кардам (дар маҷмӯъ, ман интернетро инқилобтарин ва хатарноктарин ихтирооти асри XNUMX медонам). Ман як видеои як барномасозеро, ки консол Tetris сохтааст, кофтам. Ва ба мисли бозии худ тасмим гирифт, ки "мор"-ро бибурад. Аз видео, ман дар бораи ду чизи асосӣ омӯхтам - ҳалқаи бозӣ (бо се функсия / қисм) ва баромад ба буфер.
Давраи бозӣ метавонад чунин бошад:
int main()
{
Setup();
// a game loop
while (!quit)
{
Input();
Logic();
Draw();
Sleep(gameSpeed); // game timing
}
return 0;
}
Рамз якбора тамоми функсияи main() -ро пешниҳод мекунад. Ва давраи бозӣ пас аз шарҳи мувофиқ оғоз мешавад. Дар давра се функсияи асосӣ мавҷуданд: Input(), Logic(), Draw(). Аввалан, вуруди додаҳо Вуруд (асосан назорати пахши клавиатура), баъд коркарди маълумоти воридшуда Мантиқ, сипас дар экран намоиш дода мешавад - кашидан. Ва ҳамин тавр, ҳар як кадр. Аниматсия бо ин роҳ сохта мешавад. Ин мисли мультфильмҳост. Одатан коркарди маълумоти воридотӣ вақти бештарро мегирад ва то ҷое ки ман медонам, суръати чаҳорчӯбаи бозиро муайян мекунад. Аммо дар ин ҷо функсияи Logic() хеле зуд аст. Аз ин рӯ, суръати чаҳорчӯба бояд аз ҷониби функсияи Sleep() бо параметри gameSpeed, ки ин суръатро муайян мекунад, назорат карда шавад.
даври бозӣ. Барномасозии мор дар блокнот
Агар шумо бозии консолии рамзӣ таҳия карда истода бошед, пас намоиш додани маълумот дар экран бо истифода аз баромади муқаррарии ҷараёни 'cout' кор намекунад - ин хеле суст аст. Аз ин рӯ, натиҷа бояд дар буфери экран анҷом дода шавад. Ин қадар тезтар ва бозӣ бе хато кор хоҳад кард. Ростӣ, ман намефаҳмам, ки буфери экран чист ва он чӣ гуна кор мекунад. Аммо ман дар ин ҷо як мисоли рамзӣ медиҳам ва шояд касе дар шарҳҳо вазъиятро равшан кунад.
Ҳар як росткунҷа бо матритсаи пур аз рақамҳо ифода карда мешавад. Дар омади гап, ман метавонам як нозуки ҷолибро қайд кунам - ҳамаи матритсаҳо дар бозӣ ҳамчун массиви якченака барномарезӣ шудаанд. На дучанд, балки якченака! Массивҳои якченака кор кардан бо онҳо хеле осонтар ва тезтар аст.
Намунаи матритсаи танки бозӣ
Намояндагии матритсаи як танки бозӣ бо массиви якченака
Намунаи бештари тасвирии муаррифии матритса бо массиви якченака
Аммо дастрасӣ ба элементҳои массив дар як ҳалқаи дучандон сурат мегирад, ки гӯё он массиви якченака не, балки массиви дученака бошад. Ин барои он анҷом дода мешавад, ки мо то ҳол бо матритсаҳо кор мекунем.
Гузаронидани массиви якченака дар даври дукарата. Y ID сатр, X ID сутун аст
Лутфан таваҷҷӯҳ намоед, ки ба ҷои идентификаторҳои муқаррарии матритсаи i, j, ман идентификаторҳои x ва y -ро истифода мебарам. Ҳамин тавр, ба назари ман, бештар ба чашм писанд ва ба майна равшантар менамояд. Илова бар ин, чунин қайд имкон медиҳад, ки матритсаҳои истифодашаванда ба меҳварҳои координатавии тасвири дученака қулай проексия карда шаванд.
Тахминан, битмап аз маҷмӯи пикселҳо иборат аст. Ҳар чор байт дар массив як пиксели RGB аст. Як байт барои як арзиши сурх, як байт барои як арзиши сабз (G) ва як байт барои ранги кабуд (B). Илова бар ин, дар як абзор як байт мавҷуд аст. Ин се ранг - Сурх / Сабз / Кабуд (RGB) - бо ҳамдигар дар таносуби гуногун омехта мешаванд - ва ранги пиксел дар натиҷа ба даст меояд.
Акнун, боз, ҳар як росткунҷа ё объекти бозӣ бо матритсаи ададҳо ифода карда мешавад. Ҳамаи ин объектҳои бозӣ дар маҷмӯа ҷойгир карда шудаанд. Ва он гоҳ онҳо дар майдони бозӣ ҷойгир карда, як матритсаи бузурги ададӣ ташкил медиҳанд. Ман ҳар як рақами матритсаро ба ранги мушаххас харита кардам. Масалан, рақами 8 кабуд, рақами 9 зард, рақами 10 хокистарии тира ва ғайра аст. Ҳамин тариқ, мо гуфта метавонем, ки мо матритсаи майдони бозӣ дорем, ки дар он ҳар як рақам як навъ ранг аст.
Ҳамин тавр, мо аз як тараф матритсаи ададии тамоми майдони бозӣ ва аз тарафи дигар харитаи бит барои намоиши тасвир дорем. То ҳол, bitmap "холӣ" аст - он ҳанӯз дар бораи пикселҳои ранги дилхоҳ маълумот надорад. Ин маънои онро дорад, ки қадами охирин пур кардани харитаи bitmap бо маълумот дар бораи ҳар як пиксел дар асоси матритсаи ададии майдони бозӣ хоҳад буд. Намунаи равшани чунин тағирот дар расми зер оварда шудааст.