Результаты поиска
| |
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 + 0) + 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? А то реально очень медленно карта передается с сервера, а пока ждешь поиграть нельзя.
|
|
| |
|