Console roguelike C++-แƒจแƒ˜

แƒจแƒ”แƒกแƒแƒ•แƒแƒšแƒ˜

"Linux แƒแƒ  แƒแƒ แƒ˜แƒก แƒ—แƒแƒ›แƒแƒจแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก!" - แƒ›แƒแƒซแƒ•แƒ”แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒคแƒ แƒแƒ–แƒ: แƒแƒฎแƒšแƒ แƒ‘แƒ”แƒ•แƒ แƒ˜ แƒ›แƒจแƒ•แƒ”แƒœแƒ˜แƒ”แƒ แƒ˜ แƒ—แƒแƒ›แƒแƒจแƒ˜แƒ แƒกแƒžแƒ”แƒชแƒ˜แƒแƒšแƒฃแƒ แƒแƒ“ แƒแƒ› แƒจแƒ”แƒกแƒแƒœแƒ˜แƒจแƒœแƒแƒ•แƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ›แƒแƒ’แƒ แƒแƒ› แƒ›แƒแƒ˜แƒœแƒช, แƒฎแƒแƒœแƒ“แƒแƒฎแƒแƒœ แƒ’แƒ˜แƒœแƒ“แƒ แƒ แƒแƒฆแƒแƒช แƒ’แƒแƒœแƒกแƒแƒ™แƒฃแƒ—แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜, แƒ แƒแƒช แƒ›แƒแƒ’แƒ”แƒฌแƒแƒœแƒ”แƒ‘แƒ... แƒ“แƒ แƒ›แƒ” แƒ’แƒแƒ“แƒแƒ•แƒฌแƒงแƒ•แƒ˜แƒขแƒ” แƒจแƒ”แƒ›แƒ”แƒฅแƒ›แƒœแƒ แƒ”แƒก แƒ’แƒแƒœแƒกแƒแƒ™แƒฃแƒ—แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒœแƒ˜แƒ•แƒ—แƒ˜.

แƒคแƒแƒœแƒ“แƒ˜

แƒ›แƒ” แƒแƒ  แƒ•แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘ แƒ“แƒ แƒแƒ  แƒ’แƒ”แƒขแƒงแƒ•แƒ˜แƒ— แƒ›แƒ—แƒ”แƒš แƒ™แƒแƒ“แƒก (แƒ”แƒก แƒแƒ  แƒแƒ แƒ˜แƒก แƒซแƒแƒšแƒ˜แƒแƒœ แƒกแƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ) - แƒ›แƒฎแƒแƒšแƒแƒ“ แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ แƒžแƒฃแƒœแƒฅแƒขแƒ”แƒ‘แƒ˜.

1.แƒžแƒ”แƒ แƒกแƒแƒœแƒแƒŸแƒ˜

แƒแƒฅ แƒฉแƒแƒ›แƒแƒ—แƒ•แƒšแƒ˜แƒšแƒ˜แƒ แƒงแƒ•แƒ”แƒšแƒ แƒžแƒ”แƒ แƒกแƒแƒœแƒแƒŸแƒ˜แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ˜ (แƒฏแƒแƒœแƒ›แƒ แƒ—แƒ”แƒšแƒแƒ‘แƒ, แƒฏแƒแƒ•แƒจแƒแƒœแƒ˜, แƒ’แƒแƒ›แƒแƒชแƒ“แƒ˜แƒšแƒ”แƒ‘แƒ แƒ“แƒ แƒ.แƒจ.) แƒกแƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒแƒ แƒœแƒแƒฎแƒแƒ–แƒ˜ แƒ“แƒ แƒ›แƒแƒซแƒ แƒแƒแƒ‘แƒ˜แƒก แƒ›แƒ˜แƒ›แƒแƒ แƒ—แƒฃแƒšแƒ”แƒ‘แƒ (แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ›แƒŸแƒแƒ›แƒแƒ“ แƒแƒ  แƒแƒ แƒ˜แƒก แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜).

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.แƒ›แƒ”แƒœแƒ”แƒฏแƒ›แƒ”แƒœแƒขแƒ˜

แƒ แƒแƒ’แƒแƒ  แƒ’แƒแƒ“แƒแƒ•แƒ˜แƒขแƒแƒœแƒแƒ— แƒกแƒ˜แƒ›แƒ‘แƒแƒšแƒ แƒฃแƒ™แƒ•แƒ” แƒ’แƒแƒกแƒแƒ’แƒ”แƒ‘แƒ˜แƒ (xโ€”++, yโ€”++). แƒ›แƒแƒ’แƒ แƒแƒ› แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ แƒฃแƒคแƒ แƒ แƒกแƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒแƒ:

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

แƒ แƒฉแƒ”แƒ‘แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ "แƒกแƒแƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ แƒกแƒ˜แƒ›แƒ‘แƒแƒšแƒแƒ”แƒ‘แƒ˜แƒก" แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ. แƒแƒ›แƒ˜แƒก แƒ’แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒ“แƒแƒ›แƒ แƒ—แƒ•แƒ”แƒšแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ›แƒ”แƒ–แƒ˜แƒ–แƒฆแƒ”แƒ‘แƒ.

switch(...) case .. : ... ; break แƒฃแƒ™แƒ”แƒ—แƒ”แƒกแƒ˜แƒ แƒแƒกแƒ”

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

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

แƒกแƒ˜แƒšแƒแƒ›แƒแƒ–แƒ”! แƒแƒ™แƒ แƒ˜แƒคแƒ”แƒ— แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ˜แƒแƒ แƒ”แƒ— แƒ”แƒ™แƒ แƒแƒœแƒ–แƒ”! แƒ›แƒแƒ’แƒ แƒแƒ› แƒ แƒแƒขแƒแƒ›แƒฆแƒแƒช แƒ”แƒก แƒชแƒแƒขแƒ แƒ›แƒ™แƒแƒชแƒ แƒ˜แƒ... แƒ“แƒ แƒ™แƒฃแƒ แƒกแƒแƒ แƒ˜ แƒชแƒ˜แƒ›แƒชแƒ˜แƒ›แƒ”แƒ‘แƒก แƒ“แƒ แƒแƒกแƒแƒ”แƒ‘แƒ˜... แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ›แƒแƒ•แƒแƒกแƒฌแƒแƒ แƒ”แƒ‘แƒ—!

//ะ”ะพ ั†ะธะบะปะฐ
  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");

แฒ•แƒแƒฃ! แƒ”แƒ แƒ—แƒ˜ แƒžแƒ แƒแƒชแƒ”แƒœแƒขแƒ˜ แƒ›แƒ–แƒแƒ“แƒแƒ!

3. แƒกแƒแƒ›แƒงแƒแƒ แƒ แƒฉแƒ•แƒ”แƒœแƒก แƒ˜แƒ แƒ’แƒ•แƒšแƒ˜แƒ•

แƒแƒฅ แƒฉแƒ•แƒ”แƒœ แƒ•แƒฅแƒ›แƒœแƒ˜แƒ— แƒ›แƒแƒกแƒ˜แƒ•แƒ”แƒ‘แƒก แƒกแƒแƒ›แƒงแƒแƒ แƒแƒก x, y แƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒ–แƒ” แƒ“แƒ แƒ—แƒแƒ•แƒแƒ“ แƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒ–แƒ” (char o[N]), แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒ›แƒแƒœแƒกแƒขแƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒ แƒ‘แƒแƒœแƒฃแƒกแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ world(int objx[N] .... objy[N] ... obj[N], ... objcolor[N]) แƒแƒœแƒแƒšแƒแƒ’แƒ˜แƒ˜แƒ— hero(), แƒแƒฆแƒแƒœแƒ“ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒ— แƒ“แƒ แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒ›แƒแƒ แƒงแƒฃแƒŸแƒ˜แƒ— แƒ›แƒแƒกแƒ˜แƒ•แƒ˜แƒก แƒ’แƒแƒ›แƒแƒกแƒแƒขแƒแƒœแƒแƒ“... แƒ’แƒแƒกแƒแƒ แƒ—แƒแƒ‘แƒแƒ“ แƒ•แƒฎแƒแƒขแƒแƒ•แƒ— แƒ›แƒฎแƒแƒšแƒแƒ“ แƒฎแƒ”แƒ“แƒ•แƒ˜แƒก แƒ•แƒ”แƒšแƒจแƒ˜ (vis) (if (ox[k] < vis && oy[k]....))

แƒแƒฎแƒšแƒ แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒ•แƒกแƒ”แƒ‘แƒ— แƒ”แƒ™แƒ แƒแƒœแƒก แƒกแƒแƒ›แƒงแƒแƒ แƒแƒก แƒœแƒแƒฌแƒ˜แƒšแƒแƒ™แƒ”แƒ‘แƒ˜แƒ— แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒ“แƒ แƒžแƒ แƒแƒชแƒ”แƒ“แƒฃแƒ แƒฃแƒšแƒแƒ“ แƒฆแƒ แƒฃ แƒแƒ—แƒแƒฎแƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒ’แƒแƒ“แƒแƒกแƒแƒกแƒ•แƒšแƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—, แƒแƒ›แƒแƒ•แƒ“แƒ แƒแƒฃแƒšแƒแƒ“ แƒจแƒ”แƒ•แƒ“แƒ˜แƒ•แƒแƒ แƒ— แƒ›แƒขแƒ แƒ”แƒ‘แƒกแƒ แƒ“แƒ แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ”แƒ‘แƒจแƒ˜, แƒกแƒ แƒฃแƒšแƒ˜ แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒ˜แƒ—แƒแƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒแƒ  แƒ’แƒ•แƒแƒ•แƒ˜แƒฌแƒงแƒ“แƒ”แƒ‘แƒ 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.แƒฃแƒ แƒ—แƒ˜แƒ”แƒ แƒ—แƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒ

แƒแƒฎแƒšแƒ แƒฉแƒ•แƒ”แƒœ แƒ แƒแƒ’แƒแƒ แƒ›แƒ” แƒฃแƒœแƒ“แƒ แƒแƒ•แƒ˜แƒชแƒ˜แƒšแƒแƒ— แƒ—แƒแƒ•แƒ˜แƒ“แƒแƒœ แƒ™แƒ”แƒ“แƒšแƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒ›แƒแƒœแƒกแƒขแƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ•แƒšแƒ แƒ“แƒ แƒžแƒ แƒ”แƒ›แƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒ แƒœแƒ˜แƒ•แƒ—แƒ”แƒ‘แƒ˜แƒกแƒ’แƒแƒœ.

แƒฉแƒ•แƒ”แƒœแƒ˜ แƒคแƒแƒ•แƒแƒ แƒ˜แƒขแƒ”แƒ‘แƒ˜ แƒแƒ แƒ˜แƒก แƒ“แƒ #แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒแƒ•แƒก

#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.แƒ›แƒ”แƒœแƒ˜แƒฃ

แƒฉแƒ•แƒ”แƒœ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒ•แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ— แƒ›แƒ”แƒœแƒ˜แƒฃแƒก, แƒœแƒฃแƒ›แƒ”แƒ แƒแƒชแƒ˜แƒแƒก แƒ•แƒแƒซแƒšแƒ”แƒ•แƒ— แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒก แƒ“แƒ แƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— getkey()-แƒก แƒ›แƒแƒ—แƒแƒ›แƒแƒจแƒ˜แƒก แƒแƒ แƒฉแƒ”แƒ•แƒแƒœแƒ˜แƒก แƒ“แƒแƒกแƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒšแƒแƒ“. แƒฉแƒ•แƒ”แƒœ แƒ•แƒฌแƒ”แƒ แƒ— แƒžแƒ”แƒ แƒกแƒแƒœแƒแƒŸแƒ˜แƒก แƒกแƒขแƒแƒขแƒฃแƒกแƒ˜แƒก แƒ–แƒแƒšแƒก, แƒ’แƒแƒœแƒ•แƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒ— แƒœแƒ˜แƒ•แƒ”แƒšแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ”แƒœแƒ˜แƒฃแƒก, แƒ•แƒฌแƒ”แƒ แƒ— แƒ˜แƒกแƒขแƒแƒ แƒ˜แƒแƒก แƒ“แƒ แƒ•แƒ˜แƒฆแƒ”แƒ‘แƒ— แƒ˜แƒ›แƒแƒก, แƒ แƒแƒกแƒแƒช แƒ›แƒ” แƒ•แƒฃแƒฌแƒแƒ“แƒ” "แƒฅแƒ•แƒ”แƒกแƒแƒฎแƒ”".

แƒ“แƒแƒกแƒ™แƒ•แƒœแƒ

แƒ”แƒก แƒแƒ แƒ˜แƒก แƒ แƒแƒฆแƒแƒช แƒ›แƒกแƒ’แƒแƒ•แƒกแƒ˜. แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ˜แƒ—แƒแƒ›แƒแƒจแƒแƒ— แƒ’แƒแƒ“แƒ›แƒแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜แƒจแƒ”แƒคแƒฃแƒ—แƒ•แƒ แƒ“แƒ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ แƒแƒกแƒ”:

$ sudo chmod +x Subsoil-1.0/Subsoil

$ Subsoil-1.0/Subsoil

, แƒแƒœ, แƒกแƒแƒ‘แƒแƒšแƒแƒแƒ“, แƒจแƒ—แƒแƒ’แƒแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜, แƒ“แƒแƒฌแƒ”แƒ แƒ”แƒ— แƒกแƒแƒ™แƒฃแƒ—แƒแƒ  แƒ—แƒแƒ•แƒก แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒกแƒฃแƒ แƒ•แƒ˜แƒšแƒ˜แƒก แƒ›แƒฅแƒแƒœแƒ” แƒ—แƒแƒ•แƒ’แƒแƒ“แƒแƒกแƒแƒ•แƒแƒšแƒ˜. แƒฌแƒ˜แƒœแƒแƒกแƒฌแƒแƒ  แƒ’แƒแƒคแƒ แƒ—แƒฎแƒ˜แƒšแƒ”แƒ‘: แƒฉแƒ”แƒ›แƒ˜ แƒ—แƒแƒ›แƒแƒจแƒ˜ แƒแƒ“แƒ•แƒ˜แƒšแƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก!

แƒ‘แƒ›แƒฃแƒšแƒ”แƒ‘แƒ˜

แƒžแƒ แƒแƒชแƒ”แƒ“แƒฃแƒ แƒฃแƒšแƒ˜ แƒ’แƒ”แƒœแƒ”แƒ แƒแƒชแƒ˜แƒ, แƒฌแƒแƒ›แƒแƒฎแƒแƒšแƒ˜แƒกแƒ”แƒ‘แƒ”แƒšแƒ˜.

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ