Peršokti į turinį

[C++] Konsoles žaidimo pamoka "Vaikščiojantis žaidėjas"


Amxxl

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 4010 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Recommended Posts

Sveiki, radau laiko, tai sukuriau nedidele pamokėle trunka vos 11 su puse minutės tad jei domina C++ siūlau peržiūrėti.

http://www.youtube.com/watch?v=jFcOvsWDtHQ

Atrodo taip:

c53547dbb3fb99b0ee5219917e7ecb14894.png

Na ir žinoma kodas:

#include <Windows.h>
#include <iostream>

class Unit
{
   public:
       Unit() : x(0), y(0)
       {
       }

       void Move(int xPos, int yPos)
       {
           x += xPos;
           y += yPos;

           if (x < 1) x = 1;
           if (y < 1) y = 1;
           if (x > 38) x = 38;
           if (y > 18) y = 18;
       }

       bool GetPosition(int xPos, int yPos) const
       {
           return (x == xPos && y == yPos);
       }

       int GetPositionX() const { return x; }
       int GetPositionY() const { return y; }

   protected:
       int x, y;
};

class Player : public Unit
{
   public:
       Player()
       {
           x = 1;
           y = 1;
       }

       char GetCharacter() const { return '*'; }
};

class Game
{
   public:
       Game()
       {
           player = new Player();
           isPlaying = true;
       }

       ~Game()
       {
           delete player;
       }

       void Update()
       {
           HANDLE hGet = GetStdHandle(STD_OUTPUT_HANDLE);
           COORD Position;
           Position.X = 0;
           Position.Y = 0;
           SetConsoleCursorPosition(hGet, Position);

           for (int y = 0; y < 20; ++y)
           {
               for (int x = 0; x < 40; ++x)
               {
                   if (x == 0 || y == 0 || x == 39 || y == 19)
                       std::cout << "#";
                   else if (player->GetPosition(x, y))
                       std::cout << player->GetCharacter();
                   else
                       std::cout << " ";
               }
               std::cout << "\n";
           }

           if (GetAsyncKeyState(VK_UP))
               player->Move(0, -1);
           else if (GetAsyncKeyState(VK_DOWN))
               player->Move(0, 1);
           else if (GetAsyncKeyState(VK_LEFT))
               player->Move(-1, 0);
           else if (GetAsyncKeyState(VK_RIGHT))
               player->Move(1, 0);

           if (GetAsyncKeyState(VK_ESCAPE))
               isPlaying = false;
       }

       bool IsPlaying() const { return isPlaying; }

   private:
       Player* player;
       bool isPlaying;
};

int main()
{
   Game* game = new Game();

   while (game->IsPlaying())
       game->Update();

   delete game;
   return 0;
}

  • Teigiamai 3
Nuoroda į komentarą
Dalintis per kitą puslapį

(redaguota)

amxxL, gal žinai kur galima rasti lietuviškų pamokų su c++. Pamokų kurti žaidimus. Aš su c++ moku ten for, while, if. ir pnš. Artėjant vasarai norėčiau gilintis toliau. Taigi reikia pamokų (lietuviškų būtu gerai), kur kaip daro plius, kad aiškintu kas ką reiškia, o ne, kad tik darytu ir viską kopijuot.

Be to aš naudoju dev c++, nes mokykloj mane ant šitos mokina. Gal žinai geresnių, patogesnių? :) Patark ir dėl šito jai gali. :)

Visų pirma lietuvišku pamokų nelabai rasi tai siulau pasimokint anglu. Aišku yra keli puslapiai kur lietuviu kalba

bet ten tik patys pagrindai ir nevisi. www.coderland.lt arba http://www.youtube.com/3DevOfficial bet cia visiskai pradedantiesiems dar vienas geras forumas www.gamedev.lt (čia apie žaidimų kurima apskritai.

Del IDE tu naudoji dev c++ patarčiau naudoti Microsoft visual C++ 2010 ji yra visiškai nemokama tik reikia užsiregistruoti microsoft puslapyje ir gauti registracijos koda. O jei jau labai nori galiu pamokint ir per pats

per team viewer bet aš nesu pats geriausias mokytojas labai sunku paaiškinti nemokančiam ypač sudėtingus dalykus.

P.S.: Beje pamiršau paminėti kad ši pamoka nebaigta ir bus kitos dalys šios pamokos tik neturiu

įdėju ka tas žaidėjas galėtu padaryti konsolei (pasiųlykit įdeju jei turit :P).

Redaguota , nario -amxxL-
Nuoroda į komentarą
Dalintis per kitą puslapį

(redaguota)

gal jau turi pavidziu? sukurtu zaidimu su c++? jai taip gal netingetum parodyt:D

Kuo tai susije su C++ pamokomis?

Nu šiaip gali būt ir angliškos pamokos, bet supranti ten kaip pradės aiškint kokius naujus dalykus man gali būt, kad sunkiai suprasiu. Bet jai žinai gerų pamokų, pasidalink :)

Nu netingek pats pasieskoti pvz kad ir http://thenewboston.org/

Redaguota , nario -amxxL-
  • Neigiamai 1
Nuoroda į komentarą
Dalintis per kitą puslapį

(redaguota)

Kur ant win32 ,o ne konsolines :)

Lengva tau sakyt žinoma aš galiu bet isivaizduok šita pamoka jau naujokams nelengva ir 85% (gal daugiau nesuprantama).

Kas būtų jei kurčiau win32 išgasdinčiau žmones :(.

o tai tada kam skirtos c++ pamokos? jaigu nesusija su pamokomis, o pvz noriu nes nesu mates dar jokio darbo sukurto su c++ uztai prasau:) nes galvoju pradet mokytis kazka tokio :)

Kaip tu galvoji pradėti mokintis kažka tokio jei nežinai ka su tuo kažkuo gali sukurti?

C++ nera visa galis (na gal ir yra) ir tiek užtenka žinoti tik reikia dometis ta srytim kuria nori.

Nori kurti žaidimus? DirectX SDK jei ant win OpenGL jei linux žinoma yra ir lengvesniu alternatyvu:

SFML, Elf2D ir kiti varikliukai. Bet reikia tureti omenyje kad jie sukurti su tais pačiais DirectX ir OpenGL. Nori kurti consolines programas? Užtenka ir standartiniu biblioteku tas pats su paprastom win32 programom. Mokedamas C++ negali visko sukurti tu turi tiesiog žinas kurias gali naudoti tau dar reikia

moketi standartines bibliotekas mokant jas jau ši ta nuveikti gali. Beje be didelio noro siulau net nepradet nusivilsi kad nieko neišeina ir mesi.

Redaguota , nario -amxxL-
Nuoroda į komentarą
Dalintis per kitą puslapį

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 4010 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Svečias
Ši tema yra užrakinta.
  • Šiame puslapyje naršo:   0 nariai

    • Nėra registruotų narių peržiūrinčių šį forumą.

Skelbimai


×
×
  • Sukurti naują...