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


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

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

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

Оффлайн peregrine

  • FSM
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 7215
  • Gentoo x64 Ubuntu 16.04.1 x64
    • Просмотр профиля
Re: Лабиринт на с++
« Ответ #45 : 14 Января 2015, 14:03:00 »
Гриб_под_зонтом, код нерабочий.
Цитировать
while (win()==0)
У тебя всегда будет 1 возвращаться, так что никогда не выполнится.

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

  • Автор темы
  • Активист
  • *
  • Сообщений: 301
    • Просмотр профиля
Re: Лабиринт на с++
« Ответ #46 : 14 Января 2015, 14:51:47 »
peregrine,
у меня работает
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: Лабиринт на с++
« Ответ #47 : 14 Января 2015, 15:36:07 »
Гриб_под_зонтом,
Код: (cpp) [Выделить]
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--; 
                          }
Во первых что делает этот код. Во вторых - форматируй код аккуратнее - совсем не читаемо.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

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

  • Автор темы
  • Активист
  • *
  • Сообщений: 301
    • Просмотр профиля
Re: Лабиринт на с++
« Ответ #48 : 14 Января 2015, 15:54:09 »
alsoijw,
в buff считываем переменныек из файла и потом инициализируем их
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: Лабиринт на с++
« Ответ #49 : 14 Января 2015, 15:58:45 »
Гриб_под_зонтом, я же дал код который отвечает за сборку вишен. Куда он делся? Откуда взялись int vishnia_x[nado_sobrat]; int vishnia_y[nado_sobrat]; ?
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

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

  • Автор темы
  • Активист
  • *
  • Сообщений: 301
    • Просмотр профиля
Re: Лабиринт на с++
« Ответ #50 : 14 Января 2015, 16:15:05 »
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]==4) nado_sobrat--;
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++;
      } 
       }
   
   fin >> x;
   fin >> y;
   
   while (win()==0)
   {   
      print_a();      
      motion();
      clear_scr();
       }
       cout<<"Молодца";
       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: Лабиринт на с++
« Ответ #51 : 14 Января 2015, 16:17:48 »
Гриб_под_зонтом, вот так больше похоже на то, что нужно. Теперь надо переменным дать понятные имена.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

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

  • Автор темы
  • Активист
  • *
  • Сообщений: 301
    • Просмотр профиля
Re: Лабиринт на с++
« Ответ #52 : 14 Января 2015, 18:00:13 »
alsoijw,
Без этого миссия не выполнима?) Объясни пожалуйста что ты имеешь ввиду под "понятные имена". Просто мне и эти кажутся понятными...
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: Лабиринт на с++
« Ответ #53 : 14 Января 2015, 18:05:32 »
Гриб_под_зонтом, что хранится в переменной a? Про переменные x y молчу, их уже сколько лет используют для обозначения координат. Ты написал этот проект для как сейчас говорят прокачки навыка. Я даю тебе советы помогающие создавать не только код способный работать, но который не стыдно показать, который легко может быть переделан для выполнения другой задачи.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

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

  • Автор темы
  • Активист
  • *
  • Сообщений: 301
    • Просмотр профиля
Re: Лабиринт на с++
« Ответ #54 : 14 Января 2015, 18:24:27 »
Понятно. Переделал a в pole
Hp 250 G3: 8Gb RAM, Intel Celeron 2.16-2.58GHz with 2 core, Intel HD Graphics.
Ubuntu 18.04 LTS with GNOME 3.

Оффлайн qwerty12344321

  • Участник
  • *
  • Сообщений: 166
  • DIY or DIE
    • Просмотр профиля
    • мой GitHub
Re: Лабиринт на с++
« Ответ #55 : 14 Января 2015, 19:12:57 »
Как компилировать(знаю - вопрос нубовский)

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

  • Автор темы
  • Активист
  • *
  • Сообщений: 301
    • Просмотр профиля
Re: Лабиринт на с++
« Ответ #56 : 14 Января 2015, 19:16:00 »
qwerty12344321,
sudo apt-get install g++
g++ -o labirint lab.cpp
./labirint
Hp 250 G3: 8Gb RAM, Intel Celeron 2.16-2.58GHz with 2 core, Intel HD Graphics.
Ubuntu 18.04 LTS with GNOME 3.

Оффлайн qwerty12344321

  • Участник
  • *
  • Сообщений: 166
  • DIY or DIE
    • Просмотр профиля
    • мой GitHub
Re: Лабиринт на с++
« Ответ #57 : 14 Января 2015, 19:50:14 »
а где взять файл main.h а то

main.cpp:2:53: fatal error: main.h: Нет такого файла или каталога
 #include "main.h" //getch(), nonblock(), clear_scr()
                                                     ^
compilation terminated.

Оффлайн alsoijw

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

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

  • Автор темы
  • Активист
  • *
  • Сообщений: 301
    • Просмотр профиля
Re: Лабиринт на с++
« Ответ #59 : 14 Января 2015, 20:08:25 »
alsoijw,
Будут ещё задания?
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.