Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Frankenween
22 / 1 / 0
Регистрация: 25.10.2016
Сообщений: 36
#1

Не обновляются значения переменной - C++

14.06.2017, 21:33. Просмотров 114. Ответов 6
Метки нет (Все метки)

Добрый день. Пишу программу на c++, в которой есть структура
C++
1
2
3
struct Cords {
    int x1, y1;
};
и есть класс, в котором есть метод move
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void move(int offsetX, int offsetY) {
        location.x1 += offsetX * 50;
        if (last_rotation > 0 ? location.x1 >= 50 : location.x1 > 50 && 
            location.x1 + sizes[0] < 650)
            ship_sprite.move(offsetX * 50, 0);
        else{
            location.x1 -= offsetX * 50;
        }
 
        location.y1 += offsetY * 50;
        if (location.y1 >= 0 &&
            location.y1 + sizes[1] < 550){ 
            ship_sprite.move(0, offsetY * 50); 
            printf("ypos - %d \n", location.y1);
        }
        else {
            location.y1 -= offsetY * 50;
        }
    }
проблема заключается в том, что переменная location.y1 не обновляется, а перманентно хранит значение 250, что так же подтверждает вывод в консоль. Что я делаю не так? При вызове в функцию передаются вполне конкретные значения(1 или -1), в чём я уверен
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.06.2017, 21:33
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Не обновляются значения переменной (C++):

Сортировка строк двумерного массива выбором. Не обновляются значения - C++
Здравствуйте. Не получается сортировка массива выбором. Нужно отсортировать строки массива по возрастанию суммы их элементов. По какой-то...

Преобразование значения переменной (long) через функцию в значения структуры - C++
Я недавно начал заниматься С++ и программированием в целом. Вот у меня такая проблема. В этой программе не работает часть, когда...

Присваивание значения переменной - C++
Доброго времени суток. string name, message; cout &lt;&lt; &quot; Введите Ваше имя и письмо:\n&quot;; cin &gt;&gt; a &gt;&gt; b; cout &lt;&lt; message &lt;&lt; &quot;\n&quot;...

Присвоить значения переменной Х - C++
Присвоить значение переменной х и всем объектам, что с ней связаны. struct a { char ***s; char (*p) }; typedef struct a...

Ограничение значения переменной - C++
Я не знаю, как называется такая мат. операция, но суть такова: Имеется переменная, которая принимает значения от 0 до 24000, к примеру....

Увеличение значения переменной - C++
Доброго времени суток, форумчане) Утром начал учить C++, сейчас пишу простенькую игру типа &quot;угадай число&quot;. Всё работает и вроде бы даже...

6
Nishen
466 / 277 / 88
Регистрация: 26.02.2015
Сообщений: 1,300
Завершенные тесты: 2
14.06.2017, 21:37 #2
Дебаггером посмотрите, у вас хоть раз не выполняется условие ?
C++
1
2
if (location.y1 >= 0 &&
            location.y1 + sizes[1] < 550)
0
Frankenween
22 / 1 / 0
Регистрация: 25.10.2016
Сообщений: 36
14.06.2017, 21:40  [ТС] #3
Nishen, вообще дебаггером смотреть крайне неудобно из-за того, что юзаю sfml и функция вызывается нажатимем клавиши, но что интересно первое условие иногда не выполняется
0
DU3
281 / 233 / 80
Регистрация: 07.09.2016
Сообщений: 587
14.06.2017, 21:42 #4
какая разница как и когда она вызывается? брейкпоинты не умеете ставить чтоли?
0
Frankenween
22 / 1 / 0
Регистрация: 25.10.2016
Сообщений: 36
14.06.2017, 21:50  [ТС] #5
потому что если бы оно не выполнялось, тогда я бы вообще убился. я типа морского боя делаю и эти условия для того, чтобы корабли за поле не выходили. В левую сторону(<50) не уходит, а вправо на сколько угодно

Добавлено через 6 минут
все, с location.y1 я починил, но возникла другая проблема: в условии
C++
1
2
if (last_rotation > 0 ? location.x1 >= 50 : location.x1 > 50 && 
            location.x1 + sizes[0] < 650)
второе условие при x1 = 450 sizes[0] = 200 не должно выполнятся, однако код в условии выполняется
0
Nishen
466 / 277 / 88
Регистрация: 26.02.2015
Сообщений: 1,300
Завершенные тесты: 2
14.06.2017, 21:56 #6
жесть какая-то
0
Frankenween
22 / 1 / 0
Регистрация: 25.10.2016
Сообщений: 36
14.06.2017, 22:44  [ТС] #7
Nishen, так вообще бывает? может компилятор кривой?

Добавлено через 1 минуту
однако при sizes[0] = 50 уже работает
WTF?!?!?!

Добавлено через 44 минуты
всё, я разобрался
last_rotation > 0 ? location.x1 >= 50 : (location.x1 > 50 && location.x1 + sizes[0] < 650) оно так выполнялось, а надо так:
C++
1
2
if ((last_rotation > 0 ? location.x1 >= 50 : location.x1 > 50) && 
            location.x1 + sizes[0] <= 650)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.06.2017, 22:44
Привет! Вот еще темы с ответами:

Подстановка значения переменной - C++
Нужно функция которая созздаст ресурс с именем aX где X значение переданного аргумента function aaaaa(int x) { ofstreaam...

Запись значения переменной в файл - C++
Здравствуйте. Помогите, пожалуйста, в решении такой проблемы. Не могу найти код на С++, который бы позволял записывать значение вычисленной...

Присвоение значения переменной в классе - C++
возможно ли присвоение значения переменной в классе? class xxx { public : void rrr(); public : int x=5; // ??? };

Форматированный вывод значения переменной - C++
Подскажите пожалуйста как мне вывести значение переменной функцией std::cout чтоб ей отводилось определенное кол-во знаков. Мне...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru