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


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Крестики нолики на с++  (Прочитано 12889 раз)

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

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

  • Автор темы
  • Активист
  • *
  • Сообщений: 301
    • Просмотр профиля
Re: Крестики нолики на с++
« Ответ #45 : 14 Января 2015, 21:12:00 »
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: Крестики нолики на с++
« Ответ #46 : 14 Января 2015, 21:14:41 »
Гриб_под_зонтом, в следующий раз приводи весь код целиком. Внимательно сравни как я поставил пробелы и где стояли они до этого.
Код: (cpp) [Выделить]
    char mas[10][10];
    // Тут должна быть инициализация массива
    for (int i=0; i<10; i++)
    {
        for (int m=0; m<10; m++)
        {
            cout << mas[i][m];
        }
        cout<<endl;
    }
Теперь следующая ступень - поле доступно везде(почему назвал его mas?), массив инициализируется символом пробел, вывод на экран - отдельная функция.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

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

  • Автор темы
  • Активист
  • *
  • Сообщений: 301
    • Просмотр профиля
Re: Крестики нолики на с++
« Ответ #47 : 14 Января 2015, 21:20:57 »
Код: (cpp) [Выделить]
#include <iostream>
using namespace std;

     char pole[10][10];
     
     void inizilization()
     {
      for (int i=0; i<10; i++)
      {
  for (int m=0; m<10; m++)
  {
  pole[i][m] = ' '; 
  }
  }
}
void print_pole()
{
      for (int i=0; i<10; i++)
      {
  for (int m=0; m<10; m++)
  {
  cout << pole[i][m]; 
  }
  cout<<endl;
  }  
}
int main()
{
     inizilization();
     print_pole();
     return 0;
}
P.S. обычно я делаю отступы, но когда пишешь в окне форума это не очень удобно)

Пользователь решил продолжить мысль 14 Января 2015, 22:06:33:
так что скажите на счёт кода?
« Последнее редактирование: 14 Января 2015, 22:06:33 от Гриб_под_зонтом »
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: Крестики нолики на с++
« Ответ #48 : 14 Января 2015, 23:06:00 »
Гриб_под_зонтом, пиши в текстовом редакторе. Код нормальный. Теперь так - есть int x, y; они хранят координаты курсора. Сделай так, чтобы при нажатии клавиш курсор можно было двигать по полю. Обязательно сделай проверку, чтобы курсор не вышел за пределы поля. Выводить курсор как X. Выводи его красным или любым другим цветом. Реализацию скинешь сюда. И чтоб на этот раз скобочки стояли на местах.

Пользователь решил продолжить мысль [time]14 Январь 2015, 22:08:02[/time]:
Забыл сказать перед перемещением курсора поле стирается. Чтобы было одно поле на экране а не куча.

Пользователь решил продолжить мысль [time]14 Январь 2015, 22:15:19[/time]:
Ты пробелы руками набираешь? Погугли плагины для gedit найдёшь пакет, который надо поставить(без подключения репов) активируешь автодополнение слов, скобочек, в гедите активируй включить автоматический отступ. Если используешь пробелы для выделения блоков кода - включи замену табов на пробелы. Нажимаешь таб и 4 пробела уже стоят(количество можно перенастроить). Можешь табами пользоваться - я предпочитаю табы.
« Последнее редактирование: 14 Января 2015, 23:15:58 от alsoijw »
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

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

  • Автор темы
  • Активист
  • *
  • Сообщений: 301
    • Просмотр профиля
Re: Крестики нолики на с++
« Ответ #49 : 14 Января 2015, 23:22:30 »
alsoijw,
а как курсор двигать? я с этим никогда не сталкивался

Пользователь решил продолжить мысль 14 Января 2015, 23:22:53:
кодю в geany
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: Крестики нолики на с++
« Ответ #50 : 14 Января 2015, 23:34:57 »
Гриб_под_зонтом, как ты в лабиринте игрока двигал? Я тут подумал курсор надо выделять фоном - к примеру X на красном фоне. Имхо в процедурах можно заменить i и m на x и y. Если понадобится доступ к координатам курсора - пишешь this.x. Курсор нужен чтобы удобно было крестики ставить.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

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

  • Автор темы
  • Активист
  • *
  • Сообщений: 301
    • Просмотр профиля
Re: Крестики нолики на с++
« Ответ #51 : 14 Января 2015, 23:37:11 »
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: Крестики нолики на с++
« Ответ #52 : 14 Января 2015, 23:47:23 »
Гриб_под_зонтом, курсор - для красоты слога. Выводишь крестик и весь курсор. Цветовое оформление консольного вывода
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

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

  • Автор темы
  • Активист
  • *
  • Сообщений: 301
    • Просмотр профиля
Re: Крестики нолики на с++
« Ответ #53 : 15 Января 2015, 00:11:12 »
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: Крестики нолики на с++
« Ответ #54 : 15 Января 2015, 15:06:08 »
Гриб_под_зонтом, я рад, что ты понял. Механика такая же. Где код?
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

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

  • Автор темы
  • Активист
  • *
  • Сообщений: 301
    • Просмотр профиля
Re: Крестики нолики на с++
« Ответ #55 : 15 Января 2015, 15:46:13 »
Код: (cpp) [Выделить]
#include <iostream>
#include "universal.h" // тут храниться getch(), clear_scr()
using namespace std;
   
       int x = 5; int y = 5;
       int pole[30][30];
   
   void iniz()
   {
   for (int i=0; i<30; i++)
   {
   for (int m=0; m<30; m++)
   {
   pole[i][m] = 0;   
   }   
   }
   }
   void print_pole()
   {
   for (int i=0; i<30; i++)
   {
   for (int m=0; m<30; m++)
   {
   if (pole[i][m]==0) cout << "\x1b[47;34m \x1b[0m";
   if (pole[i][m]==1) cout << "\x1b[47;34mX\x1b[0m"; 
   }   
   cout << endl;
   }
   }
   void motion()
   {
   pole[x][y] = 0;
   
   char motion;
   
   motion = getch();
   
   switch (motion)
   {
    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 (x == 0 && y == 0) pole[x][y] = 1;
   else
   {
    switch (motion)
    {
case  65 :
    case 'w' : x++; break;
    case  66 :
    case 's' : x--; break;   
    case  68 :
    case 'a' : y++; break;
    case  67 :
    case 'd' : y--; break;
}
pole[x][y] = 1;    
  }
   }
   int main()
   {
   
    while(true)
    {
    print_pole();
   
    motion();
   
    clear_scr();
    }
   }
« Последнее редактирование: 15 Января 2015, 16:50:34 от Гриб_под_зонтом »
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: Крестики нолики на с++
« Ответ #56 : 15 Января 2015, 16:41:11 »
Гриб_под_зонтом, вставь код по нормальному.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

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

  • Автор темы
  • Активист
  • *
  • Сообщений: 301
    • Просмотр профиля
Re: Крестики нолики на с++
« Ответ #57 : 15 Января 2015, 16:50:10 »
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: Крестики нолики на с++
« Ответ #58 : 16 Января 2015, 16:17:43 »
Гриб_под_зонтом, итак, отступ у меня в четыре проела случаен, не знаю откуда взялся. Так вот - сделай так, чтобы при нажатии Enter появлялся/исчезал крестик. После этого напиши процедуру проверки выиграл ли кто-то. Поле 25*25. Код выложишь. Будут вопросы - говори.

Пользователь решил продолжить мысль [time]16 Январь 2015, 22:35:36[/time]:
Это сложная задача. Вопросы у тебя наверняка появятся.

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

Оффлайн Grayscale

  • Активист
  • *
  • Сообщений: 573
    • Просмотр профиля
Re: Крестики нолики на с++
« Ответ #59 : 17 Января 2015, 19:14:48 »
(Нажмите, чтобы показать/скрыть)
В мире столько разнообразной фигни.. И в каждой найдется специалист
ASUS K46CB(S46CB) i7-3537U @ 2.0GHz 8Gb RAM + SSD 64 Gb + Manjaro Linux

 

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