Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Лабиринт на с++  (Прочитано 3919 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Лабиринт на с++
« Ответ #30 : 12 Января 2015, 22:12:36 »
Гриб_под_зонтом, оставь пока затею с файлами - сделай остальное.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн Гриб_под_зонтом

  • Автор темы
  • Активист
  • *
  • Сообщений: 301
    • Просмотр профиля
Re: Лабиринт на с++
« Ответ #31 : 12 Января 2015, 22:22:14 »
Если без файлов то так:
Код: (cpp) [Выделить]
#include <iostream>
#include <fstream> 
#include <cstdio> 
#include <unistd.h>
#include <termios.h>
#include <sys/select.h>
using namespace std;
     
     const int nado_sobrat=4; // всего вишней в лабиринте
     int lvl=1; // номер уровня на котором сейчас играем
     int sobrano_vishney=0; // количество собраных вишней
     int vishnia_x[nado_sobrat] = {4, 10, 14, 22};
     int vishnia_y[nado_sobrat] = {10, 1, 11, 18};
     int sobrano[nado_sobrat];   
     int x = 0, y = 1; // начальная позиция в лабиринте
     int z = 23, q = 1; // координаты выхода
     int d = 22, s = 1; // координаты двери   
     
     int a[24][20] = {{1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,},
                        {1,0,1,0,0,1,0,1,0,0,0,1,1,1,1,0,0,0,0,1,},
                        {1,0,1,1,0,1,0,1,0,1,0,0,0,0,1,0,1,1,0,1,},
                        {1,0,0,0,0,0,0,1,0,1,1,1,1,0,1,0,0,1,0,1,},
                        {1,1,1,1,1,1,0,1,0,1,4,0,1,0,1,1,0,1,0,1,},
                        {1,0,0,1,0,0,0,0,0,1,1,0,0,0,0,0,0,1,0,1,},
                        {1,0,1,1,0,1,1,1,1,1,0,0,1,0,1,1,1,1,0,1,},
                        {1,0,0,0,0,0,0,0,0,1,1,1,1,0,1,0,0,0,0,1,},
                        {1,1,1,1,1,1,0,1,1,1,0,0,0,0,1,0,1,1,1,1,},
                        {1,1,0,0,0,1,0,0,1,1,0,1,1,1,1,0,0,0,0,1,},
                        {1,4,0,1,0,0,0,0,0,1,0,0,0,0,1,1,1,1,0,1,},
                        {1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,0,1,},
                        {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,},
                        {1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,},
                        {1,0,1,0,0,0,0,0,0,0,1,4,0,0,0,0,1,1,0,1,},
                        {1,0,1,1,1,1,1,0,1,0,1,1,1,0,1,0,0,0,0,1,},
                        {1,0,1,0,0,0,1,0,1,0,0,0,1,1,1,1,1,1,1,1,},
                        {1,0,1,0,1,0,1,0,1,0,1,0,0,0,0,0,0,0,0,1,},
                        {1,0,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1,1,0,1,},
                        {1,1,1,0,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,1,},
                        {1,0,1,0,1,0,0,0,1,0,1,1,1,1,1,1,0,1,0,1,},
                        {1,0,0,0,1,1,1,1,1,0,0,0,1,0,1,0,0,1,0,1,},
                        {1,5,1,0,0,0,0,0,1,1,1,0,0,0,1,0,1,1,4,1,},
                        {1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,}}; //игровое поле
   
    void print_a() // выводим полезную информацию и лабиринт на экран
    {
cout<<"Уровень "<<lvl<<endl; // Номер уровня
for (int i=0; i<24; i++)
{
    for (int m=0; m<20; m++)
    {
    if (a[i][m]==1) cout<<"░░";
    if (a[i][m]==0 || a[i][m]==3) cout<<"  ";
    if (a[i][m]==2) cout<<"╠╣";
    if (a[i][m]==4) cout<<"••";
    if (a[i][m]==5) cout<<"––";
    }
    cout<<endl;
    }
    cout<<"Вишней: "<<sobrano_vishney<<"/"<<nado_sobrat<<endl;
    if (sobrano_vishney==nado_sobrat) cout<<"Дверь открыта"<<endl;
    // если собрали все вишни сообщаем, что дверь открыта
    }
    int win()
    {
    if (a[23][1]==2) return 1; // если нашёл выход и открыл дверь то выиграл
    else return 0;
}
void nonblock(int state)
     {
     struct termios ttystate;
     tcgetattr(STDIN_FILENO, &ttystate);
     if (state == 1)
      {
        ttystate.c_lflag &= ~ICANON;
        ttystate.c_cc[VMIN] = 1;
     }
     else if (state == 0)
      {
        ttystate.c_lflag |= ICANON;
      }
      tcsetattr(0, TCSANOW, &ttystate);
    }
    int getch()
   {
   nonblock(1);
       return fgetc(stdin);
       nonblock(0);
   }
   void clear_scr()
   {
     cout<<"\033[H\033[J\033[m";
   }
void motion()
{
    char m;
    m = getch(); // куда хочет пойти человек?

    switch (m)
    {
case  65 :
    case 'w' : x--; break;
    case  66 :
    case 's' : x++; break;    // обрабатываем ход
    case  68 :
    case 'a' : y--; break;
    case  67 :
    case 'd' : y++; break;
}
if (a[x][y]==0 || a[x][y]==3 || a[x][y]==4) a[x][y] = 2;
else   // а если стенка ?
{
switch (m)
    {
case  65 :
    case 'w' : x++; break;
    case  66 :
    case 's' : x--; break;   // возвращаем всё как было
    case  68 :
    case 'a' : y++; break;
    case  67 :
    case 'd' : y--; break;
}
a[x][y] = 2;
   }
}
    int main()
    {
     
do  // основной цикл игры
{
     if (sobrano_vishney==nado_sobrat) a[d][s] = 0;
     // собрали все вишни? откроем дверь
     
   for (int i=0; i<nado_sobrat; i++)
   {
   if (sobrano[i]!=1)   // что бы 1 вишню не брали 2 раза
   
   if (x==vishnia_x[i] && y==vishnia_y[i]) 
   {
   sobrano_vishney++; sobrano[i]=1; // подобрали вишню
  } 
  }           
   print_a();
   
   a[x][y] = 0;
   
   motion();
   
   clear_scr();
   
    }
   while (win()==0); // пока не выиграл
   
   print_a();
   
   if (lvl<5) cout<<"Уровень пройден";

   cout<<endl<<"Ты выиграл!"<<endl;
   
   return 0;
    }
Hp 250 G3: 8Gb RAM, Intel Celeron 2.16-2.58GHz with 2 core, Intel HD Graphics.
Ubuntu 18.04 LTS with GNOME 3.

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Лабиринт на с++
« Ответ #32 : 12 Января 2015, 22:25:32 »
Гриб_под_зонтом, тебе понадобятся следующие переменные: массив, координаты игрока, сколько ещё предстоит собрать(одна переменная), клавиша на какую нажал игрок. Из констант - пока - размеры массива, символы. Всё. Подумай, не придумаешь - пиши.
Гриб_под_зонтом, у тебя их намного больше - координаты двери, координаты каждой вишни... Создай новый файл и уложись в ограничение. Какой следующий вопрос?
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн Гриб_под_зонтом

  • Автор темы
  • Активист
  • *
  • Сообщений: 301
    • Просмотр профиля
Re: Лабиринт на с++
« Ответ #33 : 12 Января 2015, 22:44:45 »
Меня устраивает и такой набор переменных. Не вижу смысла переделывать
Hp 250 G3: 8Gb RAM, Intel Celeron 2.16-2.58GHz with 2 core, Intel HD Graphics.
Ubuntu 18.04 LTS with GNOME 3.

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Лабиринт на с++
« Ответ #34 : 12 Января 2015, 22:47:35 »
Гриб_под_зонтом, ты собираешься всю жизнь хелоуворлды писать?
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн Гриб_под_зонтом

  • Автор темы
  • Активист
  • *
  • Сообщений: 301
    • Просмотр профиля
Re: Лабиринт на с++
« Ответ #35 : 13 Января 2015, 12:52:55 »
При запуске просто мигает курсор и ничего не происходит. Почему?
Код: (cpp) [Выделить]
#include <iostream>
#include <fstream> 
#include <cstdio> 
#include <unistd.h>
#include <termios.h>
#include <sys/select.h>
using namespace std;
     
     const int nado_sobrat=4; // всего вишней в лабиринте
     int lvl=1; // номер уровня на котором сейчас играем
     int sobrano_vishney=0; // количество собраных вишней
     int vishnia_x[nado_sobrat]; // иксовые координаты вишень
     int vishnia_y[nado_sobrat]; // игриковые координаты вишень
     int sobrano[nado_sobrat]; // какие вишни собраны
     int x, y; // начальная позиция в лабиринте
     int z, q; // координаты выхода
     int d, s; // координаты двери   
     int buff[14]; // временное хранилище переменных
     
     int a[24][20]; //игровое поле
   
    void print_a() // выводим полезную информацию и лабиринт на экран
    {
cout<<"Уровень "<<lvl<<endl; // Номер уровня
for (int i=0; i<24; i++)
{
    for (int m=0; m<20; m++)
    {
    if (a[i][m]==1) cout<<"░░";
    if (a[i][m]==0 || a[i][m]==3) cout<<"  ";
    if (a[i][m]==2) cout<<"╠╣";
    if (a[i][m]==4) cout<<"••";
    if (a[i][m]==5) cout<<"––";
    }
    cout<<endl;
    }
    cout<<"Вишней: "<<sobrano_vishney<<"/"<<nado_sobrat<<endl;
    if (sobrano_vishney==nado_sobrat) cout<<"Дверь открыта"<<endl;
    // если собрали все вишни сообщаем, что дверь открыта
    }
    int win()
    {
    if (a[23][1]==2) return 1; // если нашёл выход и открыл дверь то выиграл
    else return 0;
}
void nonblock(int state)
     {
     struct termios ttystate;
     tcgetattr(STDIN_FILENO, &ttystate);
     if (state == 1)
      {
        ttystate.c_lflag &= ~ICANON;
        ttystate.c_cc[VMIN] = 1;
     }
     else if (state == 0)
      {
        ttystate.c_lflag |= ICANON;
      }
      tcsetattr(0, TCSANOW, &ttystate);
    }
    int getch()
   {
   nonblock(1);
       return fgetc(stdin);
       nonblock(0);
   }
   void clear_scr()
   {
     cout<<"\033[H\033[J\033[m";
   }
void motion()
{
    char m;
    m = getch(); // куда хочет пойти человек?

    switch (m)
    {
case  65 :
    case 'w' : x--; break;
    case  66 :
    case 's' : x++; break;    // обрабатываем ход
    case  68 :
    case 'a' : y--; break;
    case  67 :
    case 'd' : y++; break;
}
if (a[x][y]==0 || a[x][y]==3 || a[x][y]==4) a[x][y] = 2;
else   // а если стенка ?
{
switch (m)
    {
case  65 :
    case 'w' : x++; break;
    case  66 :
    case 's' : x--; break;   // возвращаем всё как было
    case  68 :
    case 'a' : y++; break;
    case  67 :
    case 'd' : y--; break;
}
a[x][y] = 2;
   }
}
    int main()
    {
   for (lvl=1; lvl<=5; lvl++)   
   { 
   
  ifstream pin1("lvl1.txt"); ifstream fmap1("map1.txt"); 
      ifstream pin2("lvl2.txt"); ifstream fmap2("map2.txt"); 
          ifstream pin3("lvl3.txt"); ifstream fmap3("map3.txt"); 
          ifstream pin4("lvl4.txt"); ifstream fmap4("map4.txt");
  ifstream pin5("lvl5.txt"); ifstream fmap5("map5.txt"); 
   
   for (int m=0; m<24; m++)
       {
        for (int n=0; n<20; n++)
        {
  if (lvl==1) fmap1 >> a[m][n];
              if (lvl==2) fmap1 >> a[m][n]; 
                  if (lvl==3) fmap1 >> a[m][n];
                  if (lvl==4) fmap1 >> a[m][n];
          if (lvl==5) fmap1 >> a[m][n];
       // читаем уровень из файла
      } 
       }
       
       for (int i=0; i<14; i++)
       {
      if (lvl==1) pin1 >> buff[i];
              if (lvl==2) pin2 >> buff[i]; 
                  if (lvl==3) pin3 >> buff[i];
                  if (lvl==4) pin4 >> buff[i];
          if (lvl==5) pin5 >> buff[i]; 
           // читаем переменные для уровня из файла
   
  while (i<5)
  {
     vishnia_x[i] = buff[i];
     vishnia_y[i] = buff[i+4]; // инициализируем координаты вишень
      }
   }
   
   x = buff[9]; y = buff[10];
   z = buff[11]; q = buff[12]; // инициализируем остальные переменные
   d = buff[13]; s = buff[14];
   
  pin1.close(); fmap1.close(); 
      pin2.close(); fmap2.close(); 
          pin3.close(); fmap3.close();
          pin4.close(); fmap4.close();
  pin5.close(); fmap5.close();
   
   
while (win()==0);   // основной цикл игры
{
     if (sobrano_vishney==nado_sobrat) a[d][s] = 0;
     // собрали все вишни? откроем дверь
     
   for (int i=0; i<nado_sobrat; i++)
   {
   if (sobrano[i]!=1)   // что бы 1 вишню не брали 2 раза
   
   if (x==vishnia_x[i] && y==vishnia_y[i]) 
   {
   sobrano_vishney++; sobrano[i]=1; // подобрали вишню
  } 
  }           
   print_a();
   
   a[x][y] = 0;
   
   motion();
   
   clear_scr();
   
    }
       
   print_a();
   
   if (lvl<5) cout<<"Уровень пройден";
    }
   cout<<endl<<"Ты выиграл!"<<endl;
   
   return 0;
    }
Hp 250 G3: 8Gb RAM, Intel Celeron 2.16-2.58GHz with 2 core, Intel HD Graphics.
Ubuntu 18.04 LTS with GNOME 3.

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Лабиринт на с++
« Ответ #36 : 13 Января 2015, 14:01:34 »
Гриб_под_зонтом, во первых - я не хочу собирать и запускать и дебажить твой код. Во вторых - я уже написал требования к коду. В третьих - часто приходится переписывать код, так как он не идеален.
Если ты будешь реализовывать функциональность с помощью костылей то столкнёшься с одной из проблем: 1) код работает, но малейшее изменение его роняет 1.5) ты меняешь код, но изменения приводят к непредсказуемым результатам 2) излишнее потребление ресурсов
Так писать код могут либо те, у кого почти не осталось времени/дилетанты.
Задание. Дано: у тебя есть поле на котором будут только (вишни|проходимые блоки). Задача: узнать сколько всего вишен нужно собрать. Пока так.
ЗЫ если ты не хочешь прислушиваться к советам - я не буду тебе что-либо говорить.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн peregrine

  • FSM
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 7215
  • Gentoo x64 Ubuntu 16.04.1 x64
    • Просмотр профиля
Re: Лабиринт на с++
« Ответ #37 : 13 Января 2015, 18:00:27 »
Цитировать
peregrine, разве (это перенаправление, да?) cout<<endl<<"Ты выиграл!"<<endl; соберётся в си?
<< - операция бинарного сдвига, но тут она перегружена и называется операцией записи данных в поток. В СИ не соберётся, т.к. cin и потоки istream, ostream - это классы. Но в программе ТС-а классов, которые создал он сам нет.

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Лабиринт на с++
« Ответ #38 : 13 Января 2015, 18:06:15 »
peregrine, насчёт сдвига я это знаю. Забыл в случае с записью в поток как это называется. Да, отсутствие классов разве принципиально? hello world тоже классов не содержит.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн peregrine

  • FSM
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 7215
  • Gentoo x64 Ubuntu 16.04.1 x64
    • Просмотр профиля
Re: Лабиринт на с++
« Ответ #39 : 13 Января 2015, 19:57:47 »
alsoijw, в случае c++ крайне рекомендовано использовать классы (хотя меру тоже знать надо), обычно и код внятнее получается. Будет свободное время - посмотрю подробнее, что тут в этой теме с кодом. Сейчас занят, числа до 20.

Оффлайн Гриб_под_зонтом

  • Автор темы
  • Активист
  • *
  • Сообщений: 301
    • Просмотр профиля
Re: Лабиринт на с++
« Ответ #40 : 13 Января 2015, 20:54:05 »
alsoijw,
Как то так:
Код: (cpp) [Выделить]
int vishi;
int a[24][20];

ifstream fmap("map1.txt");

for (int i=0; i<24; i++)
   {
      for (int k=0; k<20; k++)
      {
           fmap >> a[i][k];
           if (a[i][k]==4) vishni ++;
      }
   }
Hp 250 G3: 8Gb RAM, Intel Celeron 2.16-2.58GHz with 2 core, Intel HD Graphics.
Ubuntu 18.04 LTS with GNOME 3.

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Лабиринт на с++
« Ответ #41 : 13 Января 2015, 20:58:48 »
Гриб_под_зонтом, согласен. Только в следующий раз выкладывай код целиком. Что будет если файл отсутствует? Имхо можно переименовать вишни в сколько надо собрать. Теперь вопрос - как проверять собрал ли игрок все вишни или нет и что должно происходить когда он подбирает вишню?

Пользователь решил продолжить мысль 13 Января 2015, 21:06:52:
Как сделать проверку взял ли игрок вишню я скажу позже.
« Последнее редактирование: 13 Января 2015, 21:06:52 от alsoijw »
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн Гриб_под_зонтом

  • Автор темы
  • Активист
  • *
  • Сообщений: 301
    • Просмотр профиля
Re: Лабиринт на с++
« Ответ #42 : 13 Января 2015, 21:16:16 »
alsoijw,
проверка на открываемость файла:
Код: (cpp) [Выделить]
ifstream fmap("map1.txt");
cout<<(fmap?"":"Уровень не найден");

Пользователь решил продолжить мысль 13 Января 2015, 21:18:41:
Когда игрок подбирает вишню в счётчик добавляется +1, если переменная, которая равна общему количеству вишен равняется собранным вишням, открнывается дверь
« Последнее редактирование: 13 Января 2015, 21:18:41 от Гриб_под_зонтом »
Hp 250 G3: 8Gb RAM, Intel Celeron 2.16-2.58GHz with 2 core, Intel HD Graphics.
Ubuntu 18.04 LTS with GNOME 3.

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Лабиринт на с++
« Ответ #43 : 13 Января 2015, 22:53:50 »
Гриб_под_зонтом, когда игрок берёт вишню то переменная подсчитывающая количество вишен декрементируется.(уменььшается на единицу) Стала равна нулю - собрал все вишни. Берёшь код, который проверяет какую кнопку нажал и за ним пишешь
Код: (cpp) [Выделить]
if(pole[x][y] == 4)
{
    //Взял вишню
    pole[x][y] == 0;
    //Вишня превратилась в пустоту
    nado_sobrat--;
}
Всё. В принципе можно превращать вишню не в пустоту а помечать вишня взята. Но это не обязательно. Вставь это в полный код и пособирай вишни. Напоминаю сейчас есть только пустота игрок и вишни.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн Гриб_под_зонтом

  • Автор темы
  • Активист
  • *
  • Сообщений: 301
    • Просмотр профиля
Re: Лабиринт на с++
« Ответ #44 : 14 Января 2015, 00:20:17 »
alsoijw,
Насобирал вишен по самые уши: на всё лето хватит.
Код: (cpp) [Выделить]
#include <iostream>
#include <fstream>
#include <unistd.h>
#include <termios.h>
#include <sys/select.h>
using namespace std;
   
   int a[24][19];
   int nado_sobrat=0;
   int x; int y;
   
   void print_a()
    {
for (int i=0; i<24; i++)
{
    for (int m=0; m<19; m++)
    {
    if (a[i][m]==0 || a[i][m]==3) cout<<"  ";
    if (a[i][m]==2) cout<<"╠╣";
    if (a[i][m]==4) cout<<"••";
    }
    cout<<endl;
    }
    }
    void nonblock(int state)
     {
     struct termios ttystate;
     tcgetattr(STDIN_FILENO, &ttystate);
     if (state == 1)
      {
        ttystate.c_lflag &= ~ICANON;
        ttystate.c_cc[VMIN] = 1;
     }
     else if (state == 0)
      {
        ttystate.c_lflag |= ICANON;
      }
      tcsetattr(0, TCSANOW, &ttystate);
    }
    int getch()
   {
   nonblock(1);
       return fgetc(stdin);
       nonblock(0);
   }
   int win()
   {
   if (nado_sobrat==0) return 1;
   else return 0;   
   }
    void motion()
{

a[x][y] = 0;


    char m;
    m = getch();

    switch (m)
    {
case  65 :
    case 'w' : x--; break;
    case  66 :
    case 's' : x++; break;
    case  68 :
    case 'a' : y--; break;
    case  67 :
    case 'd' : y++; break;
}
if (a[x][y]==0 || a[x][y]==3 || a[x][y]==4) a[x][y] = 2;
else
{
switch (m)
    {
case  65 :
    case 'w' : x++; break;
    case  66 :
    case 's' : x--; break; 
    case  68 :
    case 'a' : y++; break;
    case  67 :
    case 'd' : y--; break;
}
a[x][y] = 2;
   }
}
   void clear_scr()
   {
     cout<<"\033[H\033[J\033[m";
   }
     int main()
     {
ifstream fin("test.txt");   
 
   for (int m=0; m<24; m++)
       {
        for (int n=0; n<19; n++)
        {
   fin >> a[m][n]; 
   if (a[m][n]==4) nado_sobrat++;
      } 
       }
       int buff[2*(nado_sobrat)+2];
       
       for (int i=0; i<50; i++)
       {
     fin >> buff[i];
   }
   
int vishnia_x[nado_sobrat]; int vishnia_y[nado_sobrat];
   
   for (int i=1; i<=nado_sobrat; i++)
   {
      vishnia_x[i] = buff[i];
      vishnia_y[i] = buff[nado_sobrat+i];
   }
   
   x = buff[1+2*(nado_sobrat)]; y = buff[2+2*(nado_sobrat)];
   
   while (win()==0)
   {
  for (int i=0; i<nado_sobrat; i++)
  {
  if (x==vishnia_x[i] && y==vishnia_y[i])
  nado_sobrat--; 
  }
   
      print_a();      
      motion();
      clear_scr();
       }
              cout<<"Не многовато ли вишен для одного человека?";
               return 0;
}
« Последнее редактирование: 14 Января 2015, 00:28:59 от Гриб_под_зонтом »
Hp 250 G3: 8Gb RAM, Intel Celeron 2.16-2.58GHz with 2 core, Intel HD Graphics.
Ubuntu 18.04 LTS with GNOME 3.

 

Страница сгенерирована за 0.049 секунд. Запросов: 25.