Пятница, 26 Апреля 2024, 00:16

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Форум игроделов » Записи участника » Lightsoft [36]
Результаты поиска
LightsoftДата: Четверг, 28 Июля 2016, 16:12 | Сообщение # 1 | Тема: Проверка целостности конструкции
частый гость
Сейчас нет на сайте
SmallNibbler, Каждому блоку завести номер локальной волны, если новый номер выпущенной волны > чем номер предыдущей волны, то блок уже попадал под волну. Изначально все блоки не имеют номера волны. По этому номеру уже узнавать кто участвовал, а кто нет, а так же узнавать какие блоки можно игнорировать в проверке. Номер волны каждый раз инкрементируется. Ну и соотвественно прерывать волну, как только любой из блоков попал под нужное условие.

Сообщение отредактировал Lightsoft - Четверг, 28 Июля 2016, 16:13
LightsoftДата: Четверг, 28 Июля 2016, 15:58 | Сообщение # 2 | Тема: Вычисление кординат точки.
частый гость
Сейчас нет на сайте
Интернет, Если у вас есть желтая точка, то вы должны знать её координаты уже. Возможно вы не совсем правильно сформулировали вопрос, и хотите узнать как обойти препятствия, когда идете до конкретной точки?
LightsoftДата: Четверг, 28 Июля 2016, 15:51 | Сообщение # 3 | Тема: oldtheme1
частый гость
Сейчас нет на сайте
Volk16, человек объясняет, что когда вы открываете меню, то таймер отвечающий за обновления всех процессов игрового мира останавливается и обрабатывает меню.
У любой игры есть таймер, который выполняет рендер, обновляет физику и т.д.
Чтобы сделать паузу, вы должны остановить эти обновляемые процессы.
P.S. За вас бесплатно никто не будет править ваш исходный код. Вам дали только алгоритм действий.
LightsoftДата: Понедельник, 22 Сентября 2014, 17:09 | Сообщение # 4 | Тема: Указатель на массив
частый гость
Сейчас нет на сайте
Когда значение передается по ссылке, его можно менять в функции и оно изменится в переменной, которая передана в функцию.

Код
void ff( char &ch ) { ch++; }

char _ch = 'X';
ff( _ch ); // после в _ch будет 'Y'


Когда передаете как указатель, то значение можно тоже менять, но только через разыменование.

Код
void ff( char *ch ) { (*ch)++; }

char _ch = 'X';
ff( &_ch ); // после в _ch будет 'Y'


Вы можете передавать массив потому что массив - это указатель на кусок памяти в которой через каждые N байт находится значение.

Еще можно передавать массив и так:

Код
void ff( int arr[], size_t arraySize )


простой пример:

Код
int sumArray( int arr[], size_t size )
{
      int sum = 0;

      for ( size_t i = 0; i < size; i++ )
      {
        sum += arr[ i ];
      }
      return sum;
}

void _Main2()
{
    int x[ ] = { 1, 2, 3, 4, 5, 6, 7 };
    size_t size = sizeof( x ) / sizeof( x[ 0 ] );

    std::cout << "sum: " << sumArray( x, size ) << std::endl;
}


Сообщение отредактировал Lightsoft - Понедельник, 22 Сентября 2014, 17:20
LightsoftДата: Понедельник, 22 Сентября 2014, 16:06 | Сообщение # 5 | Тема: Указатель на массив
частый гость
Сейчас нет на сайте
JSent, когда вы нажимате ENTER, все данные отдаются вам кроме переноса строки, символ '\n' в буфере ввода остается. Он как раз остается после того, как вы использовали scanf

Сообщение отредактировал Lightsoft - Понедельник, 22 Сентября 2014, 16:09
LightsoftДата: Понедельник, 22 Сентября 2014, 00:41 | Сообщение # 6 | Тема: Указатель на массив
частый гость
Сейчас нет на сайте
OpenGOO, можно и так создавать массив, но я думаю, что без полного понимания того, как необходимо работать с указателями, не повредит и через цикл создавать первое время JSent'у.

Ну да, если после as нажать enter , то следующий символ в массиве будет '\n' а после них уже s, а f не попадет в массив вообще.


Сообщение отредактировал Lightsoft - Понедельник, 22 Сентября 2014, 00:50
LightsoftДата: Понедельник, 22 Сентября 2014, 00:28 | Сообщение # 7 | Тема: Указатель на массив
частый гость
Сейчас нет на сайте
Не знаю, как у вас, но у меня все нормально работает и выводит.

Код
void _Main2()
{
   const size_t M = 2, N = 2;

   char** _array = new char*[ M ];

   for ( size_t i = 0; i < M; i++ )
   {
     *( _array + i ) = new char[ N ];
   }

   for ( size_t i = 0; i < M; i++ )
   {
     for ( size_t j = 0; j < N; j++ )
     {
       *( *( _array + i ) + j ) = std::getchar();
     }
   }

   for ( size_t i = 0; i < M; i++ )
   {
     for ( size_t j = 0; j < N; j++ )
     {
       std::cout << ( *( *( _array + i ) + j ) ) << " ";
     }
     std::cout << std::endl;
   }

   for ( size_t i = 0; i < M; i++ )
   {
     delete[] *( _array + i );
   }

   delete[] _array;
}
LightsoftДата: Понедельник, 22 Сентября 2014, 00:17 | Сообщение # 8 | Тема: Указатель на массив
частый гость
Сейчас нет на сайте
можно было упростить цикл по той причине, что вы не используете в его теле k:

Код

for( int k = 0; k < length; k++ )
   *(*(mas+i)) = getchar();


Код

for( int k = length; k--; )
{
   *(*(mas+i)) = getchar();
}


Сообщение отредактировал Lightsoft - Понедельник, 22 Сентября 2014, 00:18
LightsoftДата: Воскресенье, 21 Сентября 2014, 23:55 | Сообщение # 9 | Тема: Указатель на массив
частый гость
Сейчас нет на сайте
Еще могу посоветовать обратиться к таблице приоритетов операторов. Хакер правильно сказал, что сначала по приоритету идет разыменование, а потом сложение, по этому необходимы скобки для указания смещения, а после уже разыменование.
LightsoftДата: Воскресенье, 21 Сентября 2014, 22:05 | Сообщение # 10 | Тема: Указатель на массив
частый гость
Сейчас нет на сайте
LetsOffBrains, это разыменованием указателя называется.

Сообщение отредактировал Lightsoft - Воскресенье, 21 Сентября 2014, 22:06
LightsoftДата: Воскресенье, 21 Сентября 2014, 20:36 | Сообщение # 11 | Тема: Указатель на массив
частый гость
Сейчас нет на сайте
Цитата JSent ()
Почему мы можем написать **mas=1;, но не можем *mas=1;

Потому что у первой конструкции **mas тип int, а у второй int * ( указатель на переменную типа int ) т.е. вы пытаетесь записать в указатель свое значение. Ваше значение становится адресом вместо того, который был выделен через new в цикле for под каждый одномерный массив.

Код
**mas=1;
это аналог
Код
* ( * ( mas + 0) + 0 ) = 1;
или
Код
mas[0][0] = 1;


Код
*mas=1;
это
Код
*( mas + 0 ) = 1;
или
Код
mas[0] = 1;


Сообщение отредактировал Lightsoft - Воскресенье, 21 Сентября 2014, 20:57
LightsoftДата: Воскресенье, 21 Сентября 2014, 18:04 | Сообщение # 12 | Тема: Указатель на массив
частый гость
Сейчас нет на сайте
В си / c++ двумерный массив - это массив массивов.
Выделяем память под M указателей, каждый из которых будет указывать на одномерный массив из N элементов.
Код

int _tmain(int argc, _TCHAR* argv[])
{
       const size_t M = 5;
       const size_t N = 4;

       int** _array = new int*[ M ];

       for ( size_t i = 0; i < M; i++ )
       {
         *( _array + i ) = new int[ N ];
       }

       int count = 0;

       for ( size_t i = 0; i < M; i++ )
       {
         for ( size_t j = 0; j < N; j++ )
         {
           *( *( _array + i ) + j ) = ++count;

           std::cout << ( *( *( _array + i ) + j ) ) << " ";
         }
         std::cout << std::endl;
       }

       for ( size_t i = 0; i < M; i++ )
       {
         delete[] *( _array + i );
       }

       delete[] _array;

       return 0;
}


Сообщение отредактировал Lightsoft - Воскресенье, 21 Сентября 2014, 21:04
LightsoftДата: Понедельник, 02 Июня 2014, 19:45 | Сообщение # 13 | Тема: Создание блока по сетке
частый гость
Сейчас нет на сайте
Можно получить координаты блока целочисленным делением без остатка координат курсора на сторону квадрата в пикселях.
Например, MouseXY = { 123, 456 }, тогда блок размером 32 x 32 будет располагаться по координатам в двумерном массиве { 123 div 32 , 456 div 32 } == { 3, 14 }
Дальше мы можем снова умножить каждое число на 32 и получим координаты на экране, где необходимо рисовать данный блок. { 3 * 32, 14 * 32 } == { 96, 448 }


Сообщение отредактировал Lightsoft - Понедельник, 02 Июня 2014, 19:50
LightsoftДата: Воскресенье, 27 Апреля 2014, 11:40 | Сообщение # 14 | Тема: Создание простейших программ и игр на pascal.
частый гость
Сейчас нет на сайте
При каждом новом запуске программы, она будет одно и то же число загадывать. Random возвращает значение от 0 до 9, а не от 1 до 9.
Так будет более правильно:


Сообщение отредактировал Lightsoft - Воскресенье, 27 Апреля 2014, 12:02
LightsoftДата: Вторник, 22 Апреля 2014, 21:15 | Сообщение # 15 | Тема: Unity C# переменные
частый гость
Сейчас нет на сайте
В ошибке же указано, что Find возвращает тип GameObject, objPlayer должен быть GameObject, а не Transform

Сообщение отредактировал Lightsoft - Вторник, 22 Апреля 2014, 21:19
LightsoftДата: Вторник, 22 Апреля 2014, 17:09 | Сообщение # 16 | Тема: Защита от читеров - почему это так сложно?
частый гость
Сейчас нет на сайте
Цитата robertono ()
Так как защищать переменные то?

Обрабатывать все переменные клиента на сервере. Т.е. при отправке их клиентом на сервер, проверять на корректность. Больше никак, иначе их можно будет подделать.
LightsoftДата: Суббота, 15 Февраля 2014, 22:49 | Сообщение # 17 | Тема: Таинственные 8 байт
частый гость
Сейчас нет на сайте
Компилятор делает выравнивание, чтобы можно было быстрее обращаться к адресам в памяти процессору.

Сообщение отредактировал Lightsoft - Суббота, 15 Февраля 2014, 22:52
LightsoftДата: Среда, 12 Февраля 2014, 21:08 | Сообщение # 18 | Тема: ServivCraft 2D Online [2.0.0]
частый гость
Сейчас нет на сайте
Но если сервер не пришлет пакет с куском карты, то клиент может еще раз попросить прислать.
LightsoftДата: Среда, 12 Февраля 2014, 21:00 | Сообщение # 19 | Тема: Можно ли как то через wait приостановить цикл?
частый гость
Сейчас нет на сайте
Почему бы не вынести тело цикла в отдельную функцию, а потом вызывать, когда нужно, изменяя при этом счетчик?
LightsoftДата: Среда, 12 Февраля 2014, 20:32 | Сообщение # 20 | Тема: ServivCraft 2D Online [2.0.0]
частый гость
Сейчас нет на сайте
Почему бы не передавать блоки кусками, по n*m, сжимая перед отправкой, например, с помощью LZMA? А то реально очень медленно карта передается с сервера, а пока ждешь поиграть нельзя.
Форум игроделов » Записи участника » Lightsoft [36]
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг