Papatohu roguelike i C++

Papatohu roguelike i C++

Whakataki

"Ehara a Linux mo nga keemu!" - he rerenga korero tawhito: inaianei he maha nga keemu whakamiharo mo tenei punaha whakamiharo. Heoi ano, i etahi wa ka hiahia koe ki tetahi mea motuhake e pai ana ki a koe... Na ka whakatau ahau ki te hanga i tenei mea motuhake.

Tuhinga

Kaore au e whakaatu me te korero i te katoa o te waehere (kaore i te tino pai) - ko nga kaupapa matua anake.

1.Tauāhua

Kua whakarārangihia nga tawhā kiripuaki katoa ki konei (te hauora, te patu, te wheako, me etahi atu) Ko te mea pai ko te tuhi me te ahunga o te neke (kare i te waatea inaianei).

int x = 5, y = 5;
    hp = 100,
    maxhp = 100,
    dm    = 20,
    armor = 0,
    xp    = 0,
    level = 0,
    diff  = 10, // сложность
    pos   = 0; // направление

bool reg = 0,
       Mdm = 0, // бонусы
       ght = 0;

string color; // цвет будет использован в качестве индикатора состаяния героя

void hero()  // здесь происходит перемещение героя на координаты (x ; y)
{
  cout << "e[u " << "e[0;0H"; // восстановление позиции курсора, затирание пробелом
  for (int i = 0; i <= x; i++)
    cout << RIGHT;              // макрос "e[1C"
  for (int i = 0; i <= y; i++)
    cout << DOWN;             // макрос "e[1B"
  cout << "e[s" << color << "╬"; // сохранение позиции курсора
}

2.Whakahaere

Me pehea te neke i te kiripuaki kua marama kee (x—++, y—++). Engari he pai ake te tukatuka papapātuhi:

char key;
char getkey()
{
  system("stty raw");
  key = getchar();
  system("stty cooked");
  return key;
}

Ko nga mea katoa e toe ana ko te tautuhi i nga "tohu mana". Ka taea e koe te mahi ma te whakawhiti, engari e kino ana ahau.

switch(...) case .. : ... ; break pai ake penei

#define KEY if (key ==
#define I ){
#define J ;}else

void keys()
{
  getkey();
    KEY 'a' I x-- ; pos = 1 J
    KEY......
}

Ataahua! Ko nga mahi kopikopiko ka oma huri noa i te mata! Engari he aha te ahua o te ahua kino ... A ka whiti te pehu, me nga reta ... Ka whakatikahia e matou!

//До цикла
  cout << "e[?25l"; //отключаем отображение курсора
  system("stty -echo"); //отключаем эхо-ввод
  system("xset r rate 120 10"); // изменяем задержку на более плавную
//После цикла
//-------Return_normal_system_settings--------
  cout << "e[00m";
  system("reset");
  system("xset r rate 200 20");

Aue! Kotahi ōrau kua reri!

3.Te ao huri noa ia tatou

I konei ka mahia e matou he huinga mo nga wahanga x, y o te ao me nga waahanga ake (char o[N]), he pera ano mo nga taniwha me nga putea.

Waihangahia he mahi world(int objx[N] .... objy[N] ... obj[N], ... objcolor[N]) mā te whakataurite ki hero(), engari me nga tawhā me te taapiri taapiri mo te whakaputa i te huinga ... mo te ngahau, ka tuhi noa tatou i te waahi tirohanga (vis) (if (ox[k] < vis && oy[k]....))

Inaianei ka whakakiia e matou te mata ki nga matūriki o te ao ma te whakamahi i nga ruuma me nga waahanga huarahi ngawari me nga tikanga, i te wa ano ka uru atu matou ki nga hoariri me nga taonga, mo te tino ohorere kaore matou e wareware srand(time(NULL));

//------------------GENERATION---------------
void rooms()
{
  for (int i = 0; i <= 50; i++)
  {
    px[i] = rand() % 115 + 2;
    py[i] = rand() % 34 + 2;
    pl[i] = rand() % 5 + 5;
    ph[i] = rand() % 5 +  5;

    if (px[i] + pl[i] > 117) px[i] = 50 - pl[i] / 2; else
    if (px[i] < 2)           px[i] = 50 - pl[i] / 2; else
    if (py[i] < 1)           py[i] = 15 - ph[i] / 2; else
    if (py[i] + ph[i] > 37)  py[i] = 15 - ph[i] / 2;

    for (int j = 0; j <= i; j++)
    {
      while (px[i] > px[j] && px[i] < px[j] + pl[j])
        (px[i]+pl[i]/2 >= 55) ? px[i]++ : px[i]-- ;

      while (py[i] > py[j] && py[i] < py[j] + ph[j])
        (py[i]+ph[i]/2 >= 18) ? py[i]++ : py[i]-- ;

      while (px[i]+pl[i] > px[j] && px[i]+pl[i] < px[j] + pl[j])
        (px[i]+pl[i]/2 >= 55) ? px[i]++ : px[i]-- ;

      while (py[i]+ph[i] > py[j] && py[i]+ph[i] < py[j] + ph[j])
        (py[i]+ph[i]/2 >= 18) ? py[i]++ : py[i]-- ;
    }

    for (int j = 0; j <= i; j++)
    {
      while (px[j] + pl[j] >= 116) px[j]-- ;
      while (px[j] < 2)            px[j]++ ;
      while (py[j] < 1)            py[j]++ ;
      while (py[j] + ph[j] >= 37)  py[j]-- ;
    }
    tx[i] = px[i]+10; ty[i] = py[i]-3;

    if (i <= diff)
    {
      ex[i]  = px[i];
      ey[i]  = py[i];
      while (ex[i] < 10){ ex[i]++ ; epos[i] = 3 ;}
      while (ey[i] < 10){ ey[i]++ ; epos[i] = 1 ;}
      e[i]   = evar[pl[i]];
      ecolor[i] = "e[00me[31m";

      edm[i] = edmvar[pl[i]];
      ehp[i] = ehpvar[pl[i]];
      exp[i] = expvar[pl[i]];
    }
    rect(px[i], py[i], pl[i], ph[i]);
  }
}

void corrs()
{
  int pc, px, py;
  for (int i = 0; i <= 4; i++)
  {
    if (i < 2){
      px = 3;
      py = rand() % 33 + 3;
      pc = 110;
      line(px, py, pc, true);
      line(px, py+1, pc, true);
    } else {
      px = rand() % 100 + 3;
      py = 3;
      pc = 33;
      line(px, py, pc, false);
      line(px+1, py, pc, false);
    }
  }
}

4.Whakawhitiwhiti

Inaianei me karo taatau ki te haere i nga pakitara me nga taniwha ka whiwhi moni mai i nga taonga.

Ko a maatau tino pai mo a #define

#define TOUCH if (x == ox[i] && y == oy[i] && pos ==
#define HIT   x == ex[i] && y == ey[i] && pos ==
 for (int i = 0; i <= n; i++)
  {
    if (i <= diff)
    {
     if (Mdm) ehp[i]-=2 ; // если бонус "массовый урон" включен
     epos[i] = 0;

     if (ex[i] < x+5 && ex[i] > x-5 &&
         ey[i] < y+5 && ey[i] > y-5  )
     {
       edel(i); // функция переписывающая предыдущее положение противника
       if (ex[i] < x I ex[i]++ ; epos[i] = 1 J
       if (ex[i] > x I ex[i]-- ; epos[i] = 2 J
       if (ey[i] < y I ey[i]++ ; epos[i] = 3 J
       if (ey[i] > y I ey[i]-- ; epos[i] = 4 ;}
     }
   for (int j = 0; j <= n; j++) // столкновение моба со стенками
       while (ex[i] == ox[j] && ey[i] == oy[j] || ex[i] == ex[j] && ey[i] == ey[j] && j != i)
       {
         if (epos[i] == 1) ex[i]-- ; else
         if (epos[i] == 2) ex[i]++ ; else
         if (epos[i] == 3) ey[i]-- ; else
         if (epos[i] == 4) ey[i]++ ;
       }

     if (x == ex[i] && y == ey[i]) //  "битва"
      {
       if (ehp[i] > 1)
       {
         ehp[i] -= dm;
         (edm[i] < armor) ?
         hp -= 0 :
         hp -= edm[i]-armor;
       } else {
         ex[i] = ey[i] = -1;
         xp += exp[i];
         ehp[i] = 12;
       }
     }
     if (!ght) // если не призрак проверять столкновение игрока с врагами
     {
       if (HIT 1) y++ ;else
       if (HIT 2) x-- ;else
       if (HIT 3) y-- ;else
       if (HIT 4) x++ ;
     }
    }
    if (!ght) // то же, но со стенами
    {
      TOUCH 1 I y++ J
      TOUCH 2 I x-- J
      TOUCH 3 I y-- J
      TOUCH 4 ) x++ ;
    }
  }

5.Tahua

Ka whakaatu noa matou i te tahua, te tatau i nga taonga, ka whakamahi i te getkey() hei tukatuka i te whiringa a te kaitakaro. Ka tuhia e matou te pae mana o te kiripuaki, ka whakatinana i te tahua taumata, tuhia nga korero o muri, ka whiwhi matou i taku i kiia ko "Subsoil".

mutunga

He mea penei tenei. Ka taea e koe te takaro kua tikiake, wetewete me te rere penei:

$ sudo chmod +x Subsoil-1.0/Subsoil

$ Subsoil-1.0/Subsoil

, ranei, i te mutunga o te whakahihiri, tuhia he haerenga mo to hiahia. Ka whakatupato ahau i a koe i mua: ehara i te mea ngawari taku keemu!

Hononga

Whakatupuranga tikanga, Kaipupuri.

Source: will.com

Tāpiri i te kōrero