DevOps C++ agus “cogaí cistine”, nó Conas a thosaigh mé ag scríobh cluichí agus mé ag ithe

"Tá a fhios agam nach bhfuil a fhios agam rud ar bith" Socrates

Cé dó: do dhaoine TF a spit ar na forbróirí go léir agus ba mhaith leo a gcuid cluichí a imirt!

Céard faoi: conas tosú ag scríobh cluichí i C/C++ más gá duit é!

Cén fáth ar chóir duit é seo a léamh: Ní hé forbairt app mo speisialtacht oibre, ach déanaim iarracht cód a dhéanamh gach seachtain. Mar is breá liom cluichí!

Dia duit Is é mo Ainm Andrey Grankin, Is DevOps mé ag Luxoft. Ní hé forbairt feidhmchláir mo speisialtacht oibre, ach déanaim iarracht cód a dhéanamh gach seachtain. Mar is breá liom cluichí!

Tá tionscal na gcluichí ríomhaireachta ollmhór, fiú níos mó ráflaí inniu ná tionscal na scannán. Scríobhadh cluichí ó thús forbairt na ríomhairí, ag baint úsáide as, de réir caighdeáin nua-aimseartha, modhanna forbartha casta agus bunúsacha. Le himeacht ama, thosaigh innill chluiche le feiceáil le grafaicí, fisic agus fuaim a bhí cláraithe cheana féin. Ligeann siad duit díriú ar fhorbairt an chluiche féin agus gan bac a chur ar a bhunús. Ach in éineacht leo, leis na hinnill, na forbróirí "dul dall" agus díghrádú. Tá an táirgeadh an-na cluichí a chur ar an iompair. Agus tosaíonn cainníocht na táirgeachta i réim ar a cháilíocht.

Ag an am céanna, agus muid ag imirt cluichí daoine eile, táimid teoranta i gcónaí ag láithreacha, plota, carachtair, meicnic cluiche a tháinig daoine eile suas leo. Mar sin thuig mé go raibh ...

… tá sé in am do shaol féin a chruthú, faoi réir agamsa amháin. Saol ina bhfuil mé an tAthair, agus an Mac, agus an Spiorad Naomh!

Agus creidim ó chroí, trí d'inneall cluiche féin agus cluiche a scríobh air, go mbeidh tú in ann do shúile a oscailt, na fuinneoga a ghlanadh agus do chábán a phumpáil, a bheith i do ríomhchláraitheoir níos mó taithí agus lárnach.

San Airteagal seo déanfaidh mé iarracht a insint duit conas a thosaigh mé ag scríobh cluichí beaga i C / C ++, cad é an próiseas forbartha agus cén áit a bhfaighidh mé am le haghaidh caitheamh aimsire i dtimpeallacht ghnóthach. Tá sé suibiachtúil agus cuireann sé síos ar an bpróiseas a bhaineann le tosú aonair. Ábhar faoin aineolas agus faoin gcreideamh, faoi mo phictiúr pearsanta den domhan faoi láthair. I bhfocail eile, "Níl an riarachán freagrach as do brains pearsanta!".

Cleachtais

“Tá eolas gan cleachtas gan úsáid, tá cleachtas gan eolas contúirteach.” Confucius

Is é mo leabhar nótaí mo shaol!


Mar sin, go praiticiúil, is féidir liom a rá go dtosaíonn gach rud domsa le leabhar nótaí. Scríobhaim síos ní hamháin mo thascanna laethúla ansin, ach freisin tarraingím, cláraíonn, dearadh sreabhchairteacha agus réitim fadhbanna, lena n-áirítear cinn matamaitice. Úsáid leabhar nótaí i gcónaí agus scríobh le peann luaidhe amháin. Tá sé glan, compordach agus iontaofa, IMHO.

DevOps C++ agus “cogaí cistine”, nó Conas a thosaigh mé ag scríobh cluichí agus mé ag ithe
Mo leabhar nótaí (líonta cheana féin). Seo mar a bhreathnaíonn sé. Cuimsíonn sé tascanna laethúla, smaointe, líníochtaí, léaráidí, réitigh, leabharchoimeád dubh, cód, agus mar sin de.

Ag an gcéim seo, d'éirigh liom trí thionscadal a chur i gcrích (tá sé seo i mo thuiscint ar "críochnaitheacht", mar is féidir aon táirge a fhorbairt gan teorainn).

  • Tionscadal 0: is radharc 3D Taispeántas Ailtire é seo atá scríofa in C# ag baint úsáide as inneall cluiche Unity. Le haghaidh ardáin macOS agus Windows.
  • Cluiche 1: cluiche consól Snake Simplí (ar a dtugtar "Nathair" do gach duine) le haghaidh Windows. scríofa in C.
  • Cluiche 2: cluiche console Umair Crazy (ar a dtugtar "Umair" do gach duine), scríofa cheana féin i C ++ (ag baint úsáide as ranganna) agus freisin faoi Windows.

Tionscadal 0 Ailtire taispeána

  • Ardán: Windows (Windows 7, 10), Mac OS (OS X El Capitan v. 10.11.6)
  • Teanga: C#
  • Inneall cluiche: Aontacht
  • Inspioráid: Darrín Lile
  • Stór: GitHub

DevOps C++ agus “cogaí cistine”, nó Conas a thosaigh mé ag scríobh cluichí agus mé ag ithe
Taispeántas Ailtire Radharc 3D

Cuireadh an chéad tionscadal i bhfeidhm ní i C/C++, ach i C# ag baint úsáide as inneall cluiche Unity. Ní raibh an t-inneall seo chomh dian ar chrua-earraí agus a bhí Inneall Paula Meehan, agus ba chosúil dom go raibh sé níos éasca é a shuiteáil agus a úsáid. Níor mheas mé innill eile.

Ní raibh an sprioc in Unity dom a fhorbairt de chineál éigin cluiche. Bhí mé ag iarraidh radharc 3D a chruthú le carachtar de shaghas éigin. Bhí air, nó in áit Sí (múnla mé an cailín a raibh mé i ngrá léi =) bogadh agus idirghníomhú leis an domhan lasmuigh. Ní raibh sé tábhachtach ach tuiscint a fháil ar cad é Unity, cad é an próiseas forbartha, agus cé mhéad iarracht a thógann sé rud éigin a chruthú. Seo mar a rugadh an tionscadal Ailtire Demo (bhí an t-ainm invented beagnach ón bullshit). Is dócha gur thóg sé dhá mhí d'obair laethúil orm le ríomhchlárú, samhaltú, beochan, téachtadh.

Thosaigh mé le físeáin teagaisc ar YouTube ar conas samhlacha 3D a chruthú i Cumascóir. Is uirlis iontach saor in aisce é Cumascóir le haghaidh samhaltú 3D (agus níos mó) nach gá a shuiteáil. Agus anseo bhí turraing ag fanacht liom ... Tharla sé go raibh samhaltú, beochan, téachtadh ina topaicí ollmhóra ar leith ar ar féidir leat leabhair a scríobh. Tá sé seo fíor go háirithe do na carachtair. Chun méara, fiacla, súile agus codanna eile den chorp a shamhaltú, beidh eolas uait ar anatamaíocht. Conas a shocraítear matáin an duine? Conas a bhogann daoine? Bhí orm cnámha a “chur isteach” i ngach lámh, cos, méar, minceanna!

Múnlaigh an clavicle, luamháin bhreise cnámh, ionas go mbeidh cuma nádúrtha ar an mbeochan. Tar éis ceachtanna den sórt sin, tuigeann tú an obair ollmhór a dhéanann cruthaitheoirí na scannán beoite, gan ach 30 soicind de fhíseán a chruthú. Ach maireann scannáin 3D uaireanta! Agus ansin tagann muid amach as na hamharclanna agus a rá rud éigin cosúil le: “Ta, cartún / scannán shitty! D'fhéadfadh siad a bheith tar éis éirí níos fearr…” Amadáin!

Agus rud amháin eile faoi ríomhchlárú sa tionscadal seo. Mar a tharla sé, ba é an chuid is suimiúla domsa an ceann matamaitice. Má ritheann tú an radharc (nasc leis an stór i gcur síos ar an tionscadal), tabharfaidh tú faoi deara go rothlaíonn an ceamara timpeall an charachtair cailín i sféar. Chun rothlú ceamara den sórt sin a ríomh, bhí orm comhordanáidí an phointe suímh ar an gciorcal (2D) a ríomh ar dtús, agus ansin ar an sféar (3D). Is é an rud greannmhar gur fuath liom matamaitic ar scoil agus bhí a fhios agam é le lúide. Go páirteach, is dócha, mar ar scoil ní mhíníonn siad duit cén chaoi a gcuirtear an mhatamaitic seo i bhfeidhm sa saol. Ach nuair a bhíonn tú obsessed le do sprioc, aisling, ansin tá an aigne glanta, nochta! Agus tosaíonn tú a bhrath tascanna casta mar eachtra spreagúil. Agus ansin smaoiníonn tú: “Bhuel, cén fáth nach bhféadfadh an matamaiticeoir *a ghrá* insint de ghnáth cén áit ar féidir na foirmlí seo a chlaonadh?”.

DevOps C++ agus “cogaí cistine”, nó Conas a thosaigh mé ag scríobh cluichí agus mé ag ithe
Foirmlí a ríomh chun comhordanáidí pointe ar chiorcal agus ar sféar a ríomh (ó mo leabhar nótaí)

Cluiche 1

  • Ardán: Windows (tástáil ar Windows 7, 10)
  • Teanga: Sílim go raibh sé scríofa i C íon
  • Inneall cluiche: Windows consól
  • Inspioráid: javidx9
  • Stór: GitHub

DevOps C++ agus “cogaí cistine”, nó Conas a thosaigh mé ag scríobh cluichí agus mé ag ithe
Cluiche Simplí Snake

Ní cluiche é an radharc 3D. Ina theannta sin, tá samhaltú agus beochan rudaí 3D (go háirithe carachtair) fada agus deacair. Tar éis dom a bheith ag imirt timpeall le Unity, thuig mé go raibh orm leanúint ar aghaidh, nó in áit tosú, ó na bunghnéithe. Rud simplí agus tapa, ach ag an am céanna domhanda, chun tuiscint a fháil ar struchtúr an-na cluichí.

Agus cad atá againn simplí agus tapa? Sin ceart, consól agus 2D. Níos cruinne, fiú an consól agus siombailí. Arís, thosaigh mé ag lorg inspioráid ar an Idirlíon (go ginearálta, is dóigh liom gurb é an Idirlíon an t-aireagán is réabhlóidí agus is contúirteacha den XNUMXú haois). thochail mé suas físeán de ríomhchláraitheoir amháin a rinne consól Tetris. Agus i gcosúlacht a chluiche, chinn sé "nathair" a ól. Ón físeán, d'fhoghlaim mé faoi dhá rud bunúsacha - an lúb cluiche (le trí fheidhm bhunúsach / páirteanna) agus aschur chuig an maolán.

Seans go bhfeicfeadh an lúb cluiche rud éigin mar seo:

int main()
   {
      Setup();
      // a game loop
      while (!quit)
      {
          Input();
          Logic();
          Draw();
          Sleep(gameSpeed);  // game timing
      }
      return 0;
   }

Cuireann an cód an phríomhfheidhm() iomlán i láthair ag an am céanna. Agus tosaíonn an timthriall cluiche tar éis an trácht comhfhreagrach. Tá trí fheidhm bhunúsacha sa lúb: Ionchur(), Loighic(), Tarraing(). Gcéad dul síos, sonraí ionchuir Ionchur (go príomha rialú eochairbhuillí), a phróiseáil ansin na sonraí a iontráil Logic, ansin a thaispeánann ar an scáileán - Tarraing. Agus mar sin gach fráma. Cruthaítear beochan ar an mbealach seo. Tá sé cosúil le cartúin. De ghnáth is é an t-am is mó a thógann sé na sonraí ionchuir a phróiseáil agus, chomh fada agus is eol dom, socraíonn ráta fráma an chluiche. Ach anseo tá an fheidhm Logic() an-tapa. Mar sin, ní mór an ráta fráma a rialú ag an bhfeidhm Codladh () leis an bparaiméadar gameSpeed ​​​​a chinneann an ráta seo.

DevOps C++ agus “cogaí cistine”, nó Conas a thosaigh mé ag scríobh cluichí agus mé ag ithe
timthriall cluiche. Cláir nathair i leabhar nótaí

Má tá tú ag forbairt cluiche consól siombalach, ansin sonraí a thaispeáint ar an scáileán ag baint úsáide as an t-aschur sruth is gnách 'cout' ní oibreoidh sé - tá sé an-mhall. Dá bhrí sin, ní mór an t-aschur a dhéanamh sa mhaolán scáileáin. Mar sin i bhfad níos tapúla agus beidh an cluiche ag obair gan glitches. Le bheith macánta, ní thuigim go hiomlán cad is maolán scáileáin ann agus conas a oibríonn sé. Ach tabharfaidh mé cód-shampla anseo, agus b'fhéidir go mbeidh duine éigin sna tuairimí in ann an cás a shoiléiriú.

Maolán scáileáin a fháil (mar a déarfá):

// create screen buffer for drawings
   HANDLE hConsole = CreateConsoleScreenBuffer(GENERIC_READ | GENERIC_WRITE, 0,
 							   NULL, CONSOLE_TEXTMODE_BUFFER, NULL);
   DWORD dwBytesWritten = 0;
   SetConsoleActiveScreenBuffer(hConsole);

Aschur díreach chuig an scáileán de scór líne áirithe (an líne chun scóir a thaispeáint):

// draw the score
   WriteConsoleOutputCharacter(hConsole, scoreLine, GAME_WIDTH, {2,3}, &dwBytesWritten);

Go teoiriciúil, níl aon rud casta sa chluiche seo, feictear dom gur sampla maith é de chluiche leibhéal iontrála. Tá an cód scríofa i gcomhad amháin agus eagraithe i roinnt feidhmeanna. Uimh ranganna, aon oidhreacht. Is féidir leat féin gach rud a fheiceáil i gcód foinse an chluiche trí dul go dtí an stór ar GitHub.

Cluiche 2 Umair Crazy

DevOps C++ agus “cogaí cistine”, nó Conas a thosaigh mé ag scríobh cluichí agus mé ag ithe
Cluiche Crazy Tanks

Is dócha gurb é an rud is simplí is féidir leat a iompú isteach i gcluiche a phriontáil carachtair ar an consól. Ach ansin feictear trioblóid amháin: tá airde agus leithead difriúla ag na carachtair (is airde an airde ná an leithead). Mar sin, beidh cuma díréireach ar gach rud, agus beidh cuma i bhfad níos tapúla ar bhogadh síos nó suas ná bogadh ar chlé nó ar dheis. Tá an éifeacht seo an-suntasach i "Nathair" (Cluiche 1). Níl a leithéid de mhíbhuntáiste ag "Umair" (Cluiche 2), ós rud é go n-eagraítear an t-aschur ann trí phéinteáil picteilíní an scáileáin le dathanna éagsúla. D’fhéadfá a rá gur scríobh mé rindreálaí. True, tá sé seo beagán níos casta cheana féin, cé go bhfuil i bhfad níos suimiúla.

Maidir leis an gcluiche seo, beidh sé go leor chun cur síos a dhéanamh ar mo chóras chun picteilíní a thaispeáint ar an scáileán. Sílim gurb é seo an príomhchuid den chluiche. Agus gach rud eile is féidir leat teacht suas leat féin.

Mar sin, níl sa mhéid a fheiceann tú ar an scáileán ach sraith de dhronuilleoga daite gluaiseachta.

DevOps C++ agus “cogaí cistine”, nó Conas a thosaigh mé ag scríobh cluichí agus mé ag ithe
Socraigh dronuilleog

Léirítear gach dronuilleog ag maitrís líonta le huimhreacha. Dála an scéil, is féidir liom aird a tharraingt ar nuance suimiúil amháin - tá na maitrísí go léir sa chluiche cláraithe mar eagar aontoiseach. Gan déthoiseach, ach aontoiseach! Tá eagair aontoiseacha i bhfad níos éasca agus níos tapúla oibriú leo.

DevOps C++ agus “cogaí cistine”, nó Conas a thosaigh mé ag scríobh cluichí agus mé ag ithe
Sampla de mhaitrís umar cluiche

DevOps C++ agus “cogaí cistine”, nó Conas a thosaigh mé ag scríobh cluichí agus mé ag ithe
Ionadaíocht a dhéanamh ar Mhaitrís Umar Cluiche le Eagar Aontoiseach

DevOps C++ agus “cogaí cistine”, nó Conas a thosaigh mé ag scríobh cluichí agus mé ag ithe
Sampla níos léirí de léiriú maitrís trí eagar aontoiseach

Ach tarlaíonn rochtain ar ghnéithe an eagar i lúb dúbailte, amhail is dá mba rud é nach sraith aontoiseach é, ach eagar déthoiseach. Déantar é seo toisc go bhfuil muid fós ag obair le maitrísí.

DevOps C++ agus “cogaí cistine”, nó Conas a thosaigh mé ag scríobh cluichí agus mé ag ithe
Trasnú eagar aontoiseach i lúb dúbailte. Is é Y an t-aitheantas ró, is é X ID an cholúin

Tabhair faoi deara le do thoil, in ionad na ngnáth-aitheantóirí maitrís i, j, úsáidim na haitheantóirí x agus y. Mar sin, feictear dom, níos taitneamhaí don tsúil agus níos soiléire don inchinn. Ina theannta sin, le nodaireacht den sórt sin is féidir na maitrísí a úsáidtear a theilgean go háisiúil ar na haiseanna comhordanáidí d'íomhá dhéthoiseach.

Anois faoi picteilíní, dath agus taispeáint. Úsáidtear an fheidhm StretchDIBits (Ceanntásc: windows.h; Leabharlann: gdi32.lib) le haghaidh aschuir. I measc rudaí eile, cuirtear an méid seo a leanas ar aghaidh chuig an bhfeidhm seo: an gléas ar a dtaispeántar an íomhá (i mo chás, is é seo an consól Windows), comhordanáidí thús taispeáint na híomhá, a leithead / airde, agus an íomhá é féin i bhfoirm mapa giotán (bitmap), arna léiriú ag sraith beart. Giotán mar raon beart!

Feidhm StretchDIBits() ag an obair:

// screen output for game field
   StretchDIBits(
               deviceContext,
               OFFSET_LEFT, OFFSET_TOP,
               PMATRIX_WIDTH, PMATRIX_HEIGHT,
               0, 0,
               PMATRIX_WIDTH, PMATRIX_HEIGHT,
               m_p_bitmapMemory, &bitmapInfo,
               DIB_RGB_COLORS,
               SRCCOPY
               );

Déantar cuimhne a leithdháileadh roimh ré don léarscáil ghiotán seo ag baint úsáide as an bhfeidhm VirtualAlloc(). Is é sin, tá an líon riachtanach beart in áirithe chun faisnéis a stóráil faoi gach picteilín, a thaispeánfar ar an scáileán ansin.

Ag cruthú léarscáil ghiotán m_p_bitmapMemory:

// create bitmap
   int bitmapMemorySize = (PMATRIX_WIDTH * PMATRIX_HEIGHT) * BYTES_PER_PIXEL;
   void* m_p_bitmapMemory = VirtualAlloc(0, bitmapMemorySize, MEM_COMMIT, PAGE_READWRITE);

Go garbh, is éard atá i mapa giotán ná sraith picteilín. Is picteilín RGB é gach ceithre bheart san eagar. Beart amháin in aghaidh an luacha dearg, beart amháin in aghaidh an luacha glas (G), agus beart amháin in aghaidh an dath gorm (B). Ina theannta sin, tá beart amháin in aghaidh an fhleasc. Déantar na trí dathanna seo - Dearg / Glas / Gorm (RGB) - a mheascadh lena chéile i gcomhréireanna éagsúla - agus faightear an dath picteilín mar thoradh air.

Anois, arís, tá gach dronuilleog, nó réad cluiche, á léiriú ag uimhir mhaitrís. Gach ceann de na rudaí cluiche a chur i mbailiúchán. Agus ansin cuirtear iad ar an bpáirc imeartha, ag cruthú maitrís uimhriúil mór amháin. Mhapáil mé gach uimhir sa mhaitrís go dath ar leith. Mar shampla, tá an uimhir 8 gorm, tá an uimhir 9 buí, tá an uimhir 10 liath dorcha, agus mar sin de. Mar sin, is féidir linn a rá go bhfuil maitrís na páirce imeartha againn, áit a bhfuil dath de shaghas éigin ar gach uimhir.

Mar sin, tá maitrís uimhriúil againn den pháirc imeartha ar fad ar thaobh amháin agus mapa giotán chun an íomhá a thaispeáint ar an taobh eile. Go dtí seo, tá an léarscáil ghiotán "folamh" - níl faisnéis ann fós faoi picteilíní an dath atá ag teastáil. Ciallaíonn sé seo gurb é an chéim dheireanach ná an léarscáil ghiotán a líonadh le faisnéis faoi gach picteilín bunaithe ar mhaitrís uimhriúil na páirce imeartha. Tá sampla léiritheach de chlaochlú den sórt sin sa phictiúr thíos.

DevOps C++ agus “cogaí cistine”, nó Conas a thosaigh mé ag scríobh cluichí agus mé ag ithe
Sampla de léarscáil ghiotán (maitrís picteilín) a líonadh le faisnéis bunaithe ar mhaitrís uimhriúil (maitrís dhigiteach) na páirce imeartha (ní mheaitseálann innéacsanna dathanna leis na hinnéacsanna sa chluiche)

Cuirfidh mé píosa fíorchód ón gcluiche i láthair freisin. Sanntar luach (innéacs dathanna) don Innéacs datha athraitheach ag gach atriall den lúb ó mhaitrís uimhriúil na páirce imeartha (mainDigitalMatrix). Ansin scríobhtar an dath féin chuig an athróg datha bunaithe ar an innéacs. Thairis sin, tá an dath mar thoradh air roinnte i gcóimheas dearg, glas agus gorm (RGB). Agus in éineacht leis an bhfleasc (Padding picteilín), scríobhtar an fhaisnéis seo chuig an bpicteilín arís agus arís eile, ag cruthú íomhá datha sa léarscáil ghiotán.

Úsáideann an cód leideanna agus oibríochtaí bitwise, rud a bhíonn deacair a thuiscint. Mar sin comhairle a thabhairt duit a léamh ar leithligh áit éigin conas a oibríonn struchtúir den sórt sin.

Giotán a líonadh le faisnéis bunaithe ar mhaitrís uimhriúil na páirce imeartha:

// set pixel map variables
   int colorIndex;
   COLORREF color;
   int pitch;
   uint8_t* p_row;
 
   // arrange pixels for game field
   pitch = PMATRIX_WIDTH * BYTES_PER_PIXEL;     // row size in bytes
   p_row = (uint8_t*)m_p_bitmapMemory;       //cast to uint8 for valid pointer arithmetic
   							(to add by 1 byte (8 bits) at a time)   
   for (int y = 0; y < PMATRIX_HEIGHT; ++y)
   {
       uint32_t* p_pixel = (uint32_t*)p_row;
       for (int x = 0; x < PMATRIX_WIDTH; ++x)
       {
           colorIndex = mainDigitalMatrix[y * PMATRIX_WIDTH + x];
           color = Utils::GetColor(colorIndex);
           uint8_t blue = GetBValue(color);
           uint8_t green = GetGValue(color);
           uint8_t red = GetRValue(color);
           uint8_t pixelPadding = 0;
 
           *p_pixel = ((pixelPadding << 24) | (red << 16) | (green << 8) | blue);
           ++p_pixel;
       }
       p_row += pitch;
   }

De réir an mhodha a gcuirtear síos air thuas, cruthaítear pictiúr amháin (fráma) sa chluiche Crazy Tanks agus taispeántar é ar an scáileán san fheidhm Draw(). Tar éis eochairbhuillí a chlárú san fheidhm Ionchur() agus a bpróiseáil ina dhiaidh sin san fheidhm Logic(), cruthaítear pictiúr (fráma) nua. Fíor, d'fhéadfadh go mbeadh suíomh difriúil ag rudaí cluiche cheana féin ar an bpáirc imeartha agus, dá réir sin, tarraingítear iad in áit eile. Seo mar a tharlaíonn beochan (gluaiseacht).

Go teoiriciúil (mura bhfuil dearmad déanta agat ar rud ar bith), ní mór duit an lúb cluiche ón gcéad chluiche (“Nathair”) a thuiscint agus an córas chun picteilíní a thaispeáint ar an scáileán ón dara cluiche (“Umair”) a scríobh. Cluichí 2d le haghaidh Windows íosluchtaigh. Gan fuaim! 😉 Níl sa chuid eile de na codanna ach eitilt mhaisiúil.

Ar ndóigh, tá an cluiche "Umair" deartha i bhfad níos casta ná an "Nathair". Bhain mé úsáid as an teanga C++ cheana féin, is é sin, rinne mé cur síos ar rudaí cluiche éagsúla le ranganna. Chruthaigh mé mo bhailiúchán féin - is féidir leat an cód a fheiceáil i gceanntásca/Box.h. Dála an scéil, is dóichí go bhfuil sceitheadh ​​cuimhne ag an mbailiúchán. Leideanna a úsáidtear. D'oibrigh le cuimhne. Caithfidh mé a rá gur chabhraigh an leabhar go mór liom. Tús C++ Trí Chlárú Cluiche. Tús iontach é seo do thosaitheoirí i C++. Tá sé beag, suimiúil agus dea-eagraithe.

Thóg sé timpeall sé mhí an cluiche seo a fhorbairt. Scríobh mé go príomha le linn lóin agus sneaiceanna ag an obair. Shuigh sé i gcistin na hoifige, stomped ar bhia agus scríobh cód. Nó sa bhaile don dinnéar. Mar sin fuair mé "cogaí cistine" den sórt sin. Mar is gnáth, d'úsáid mé leabhar nótaí go gníomhach, agus rugadh na rudaí coincheapúla go léir ann.

Ag deireadh na coda praiticiúla, tarraingeoidh mé amach cúpla scan de mo leabhar nótaí. Chun a thaispeáint cad go díreach a bhí á scríobh agam, ag tarraingt, ag comhaireamh, ag dearadh…

DevOps C++ agus “cogaí cistine”, nó Conas a thosaigh mé ag scríobh cluichí agus mé ag ithe
Dearadh íomhá umar. Agus an sainmhíniú ar cé mhéad picteilín ba chóir do gach umar a áitiú ar an scáileán

DevOps C++ agus “cogaí cistine”, nó Conas a thosaigh mé ag scríobh cluichí agus mé ag ithe
An t-algartam agus na foirmlí do rothlú an umair timpeall a ais a ríomh

DevOps C++ agus “cogaí cistine”, nó Conas a thosaigh mé ag scríobh cluichí agus mé ag ithe
Léaráid de mo bhailiúchán (an ceann a bhfuil an sceitheadh ​​cuimhne air, is dócha). Cruthaítear an bailiúchán mar Liosta Nasctha

DevOps C++ agus “cogaí cistine”, nó Conas a thosaigh mé ag scríobh cluichí agus mé ag ithe
Agus is iarrachtaí futile iad seo le hintleacht shaorga a bhriseadh isteach sa chluiche

Теория

"Tosaíonn fiú turas míle míle leis an gcéad chéim" (eagna na Sean-Síneach)

Bogaimis ó chleachtas go teoiric! Conas a aimsíonn tú am do do chaitheamh aimsire?

  1. Socraigh cad ba mhaith leat i ndáiríre (alas, is é seo an ceann is deacra).
  2. Socraigh tosaíochtaí.
  3. Íobairt go léir "iomarcach" ar mhaithe le tosaíochtaí níos airde.
  4. Bog i dtreo do spriocanna gach lá.
  5. Ná bí ag súil go mbeidh dhá nó trí huaire an chloig saor le haghaidh caitheamh aimsire.

Ar thaobh amháin, ní mór duit a chinneadh cad ba mhaith leat agus tosaíocht a thabhairt. Ar an láimh eile, is féidir roinnt cásanna / tionscadail a thréigean i bhfabhar na dtosaíochtaí seo. I bhfocail eile, beidh ort gach rud "iomarcach" a íobairt. Chuala mé áit éigin gur chóir go mbeadh uasmhéid de thrí phríomhghníomhaíocht sa saol. Ansin beidh tú in ann déileáil leo ar an mbealach is fearr is féidir. Agus cuirfear tús le tionscadail/treoracha breise a ró-ualú corny. Ach tá sé seo go léir, is dócha, suibiachtúla agus aonair.

Tá riail órga áirithe ann: ná bíodh lá 0% agat riamh! D'fhoghlaim mé faoi in alt ag forbróir indie. Má tá tú ag obair ar thionscadal, déan rud éigin faoi gach lá. Agus is cuma cé mhéad a dhéanann tú. Scríobh focal amháin nó líne cód amháin, féach ar fhíseán teagaisc amháin, nó cas ingne amháin isteach sa chlár - déan rud éigin. Tá an chuid is deacra ag tosú. Nuair a thosaíonn tú, is dócha go ndéanfaidh tú beagán níos mó ná mar a theastaigh uait. Mar sin bogfaidh tú i gcónaí i dtreo do sprice agus, creidim dom, go han-tapa. Tar éis an tsaoil, is é moilleadóireacht an príomhchoscán ar gach rud.

Agus tá sé tábhachtach a mheabhrú nár cheart duit an "min sáibh" saor in aisce a mheas faoina luach agus neamhaird a dhéanamh air i 5, 10, 15 nóiméad, fan ar roinnt "logs" mór a mhair uair nó dhó. An bhfuil tú ag seasamh i líne? Smaoinigh ar rud éigin do do thionscadal. An bhfuil tú ag dul suas an staighre beo? Scríobh síos rud éigin i leabhar nótaí. An itheann tú ar an mbus? Ceart go leor, léigh roinnt alt. Bain úsáid as gach deis. Stop ag breathnú ar chait agus madraí ar YouTube! Ná praiseach le d'inchinn!

Agus an ceann deireanach. Más rud é, tar éis an t-alt seo a léamh, gur thaitin leat an smaoineamh cluichí a chruthú gan innill chluiche a úsáid, ansin cuimhnigh ar an ainm Casey Muratori. Tá an fear seo сайт. Sa rannán "féachaint -> EPISODES ROIMHE" gheobhaidh tú ranganna teagaisc físeán iontach saor in aisce ar conas cluiche gairmiúil a chruthú ón tús. Is féidir leat níos mó a fhoghlaim i gcúig Intro go C le haghaidh ceachtanna Windows ná i gcúig bliana staidéir san ollscoil (scríobh duine éigin faoi seo sna tuairimí faoin bhfíseán).

Míníonn Casey freisin go mbeidh tuiscint níos fearr agat ar aon innill atá ann cheana féin trí d’inneall cluiche féin a fhorbairt. I saol na gcreataí, áit a bhfuil gach duine ag iarraidh uathoibriú, beidh tú ag foghlaim conas a chruthú, ní úsáid. Tuiscint a fháil ar nádúr na ríomhairí. Agus beidh tú freisin a bheith i bhfad níos cliste agus níos aibí ríomhchláraitheoir - pro.

Ádh mór ar do chosán roghnaithe! Agus déanaimis an domhan níos gairmiúla.

Author: Andrey Grankin, DevOps



Foinse: will.com