![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 17.12.2009
Сообщений: 101
|
![]()
В текстовом квесте игрок должен иметь возможность передвигаться по игровому миру, как я уже говорил в более ранних темах.
Для начала введение. 1) Есть класс игрока Код:
Код:
2) Есть функции, тесно связанные с классами. Во-первых, это анализ введённых команд: Команда состоит из двух частей - part1(действие), part2(объект) Код:
int* y в параметре функции - это указатель на переменную crd в классе player. Далее есть функция для изменения координат игрока: Код:
И последний - это функция GameLopp, как бы тело игры: Код:
Теперь у Analysis и GoTo есть и объект класса player, и указатель на его переменную crd. Программа грамотно реагирует на команды, но почему-то GoTo не изменяет координаты, хотя сравнивает их и всё понимает. Но координаты остаются неизменными, таков факт. Что же это за напасть? Я же использую указатель, в чём беда? Последний раз редактировалось MaTBeu; 07.02.2010 в 15:16. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
![]()
Постфиксный инкремент имеет более высокий приоритет, чем оператор разыменовывания. Вместо
Код:
Код:
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 17.12.2009
Сообщений: 101
|
![]()
Странно, но твоё исправление внесло какую-то путаницу в программу. Если координата равняется нулю, она и вовсе не меняется, а если -1 или 1, то на команду идти на юг (тое есть уменьшить координату) не откликается, как и раньше, а на север (увеличение координаты) реагирует неординарным образом, превращая 1 в 0 и переставая далее откликаться на команды "иди туда-то".
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
![]()
Надо полагать, идти на юг оно не хочет, потому что
Код:
Код:
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 17.12.2009
Сообщений: 101
|
![]()
При всём моём уважении, что вы со мной, как с дауном? Конечно же, я обе операции исправил. А почему с нуля никуда не ходит - ну я сам не понимаю. Потому и спрашиваю. Попробую, конечно, код в божеский вид привести, не знаю только, чем это поможет.
Итак, вопрос остаётся нерешённым. Последний раз редактировалось Кипящий чайник; 08.02.2010 в 09:31. |
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,087
|
![]()
Зачем вообще нужен y, если он является тем же самым, что и smone.crd? Почему нельзя менять напрямую этот самый smone.crd и не заморачиваться с указателями?
|
![]() |
![]() |
![]() |
#7 | |
Eclipse Foundation
Старожил
Регистрация: 19.09.2007
Сообщений: 2,604
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 17.12.2009
Сообщений: 101
|
![]()
MaTBeu То, что я сказал - это упомянуто вскользь, я никого ни в чём не обвиняю, и внимания на этом я не акцентирую. Да и вы бы не подливали масла в огонь своими выпадами - эта тема о не о манерах общения и советах психически нездоровому человеку. И если вы думаете, что я не благодарен вам, вашему форуму и, в частности, товарищу Грому, за многочисленные и полезные советы, то вы глубоко заблуждаетесь.
pu4koff Я раньше пробовал напрямую, но опять-таки ничего не менялось. Теперь попробовал передать функции указатель, вспомнил учебник. Но, как видите, снова мистика. Я думаю, может, стоит винить компилятор g++? Конечно, это ошибочно со стороны хелловордщика рассуждать о том, что беспорядок не в голове, а в компьютере, но фишка в том, что этот компилятор уже откалывал со мной злые шутки, багуя самые простые вещи. Последний раз редактировалось Кипящий чайник; 08.02.2010 в 09:26. |
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 17.12.2009
Сообщений: 101
|
![]()
Я сверялся с учебником, и, казалось, нашёл суть проблемы - неправильно передавал указатель функции. Вот пример:
Код:
Последний раз редактировалось Кипящий чайник; 09.02.2010 в 18:42. |
![]() |
![]() |
![]() |
#10 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
![]()
1. Сразу вывалили кучу кода и текста. Зачем оно нам ?
2. Опишите кусок кода (не большой, отсейте не нужное) где у вас проблемы (возможные) 3. По посту #9 - вот такие вот мелочи, опять таки, мы не видим и не известно где вызываются f(&i) и где расположена int i; |
![]() |
![]() |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Функция в VB | asd48 | Помощь студентам | 1 | 25.12.2008 23:29 |
Функция | asd48 | Помощь студентам | 2 | 21.12.2008 17:17 |
функция | sergei64_89 | Общие вопросы C/C++ | 2 | 25.05.2008 16:48 |
Функция в c++ | JOFRIF | Помощь студентам | 1 | 08.05.2008 18:30 |
одна функция потока, а другая функция - член класса запускающего этот поток | Дмитрий_Ч | Общие вопросы C/C++ | 2 | 27.09.2007 08:50 |