Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
 Аватар для dimakozyr
383 / 30 / 3
Регистрация: 17.08.2013
Сообщений: 560

Не исчезают сердца при потере жизни в игре

23.10.2013, 13:08. Показов 3992. Ответов 46
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В игре есть три жизни, соответственно, отображаются три сердца.
Если жизнь пропадает, то сердце должно пропадать.
Когда жизни заканчиваются, игра заканчивается, все нормально, но вот сердец все время отображается три

Структура со счетчиком жизни и методами для работы с ним
// file1.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
struct DrawScene {    
      DrawScene() : livesOfPlayer(MAXIMUM_LIVES) {}
 
        int getLivesOfPlayer()
        { return livesOfPlayer; }
 
    void livesOfPlayerMinuse()
        { livesOfPlayer--; }
 
    void setLivesOfPlayerToMax()
        { livesOfPlayer = MAXIMUM_LIVES; }
  private:
      int livesOfPlayer;
          enum { MAXIMUM_LIVES = 3 };
}
Проверка количесова жизней и отрисовка сердец
// file1.cpp
C++
1
2
3
4
5
6
7
8
9
10
someFunc1() {
        if (livesOfPlayer == 3)  // Выполняется только это условие
        // Отображение трех сердец
 
    else if (livesOfPlayer == 2)  // До сюда компилятор не доходит
        // Отображение двух сердец
 
    else if (livesOfPlayer == 1)
        // Отображение одного сердца
}
// file2.cpp
C++
1
2
3
4
5
6
7
void someFunc2() {
        if (isButtonPressed == false)  // Если на кнопку не нажали, одна жизнь пропадает
        o_DrawScene.livesOfPlayerMinuse();
 
    if (o_DrawScene.getLivesOfPlayer() <= 0)    // Если жизни закончились
        o_DrawScene.setLivesOfPlayerToMax();
}
Если в констукторе вручную задать 1,2,3 то столько сердец и отображается, тут все нормально
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.10.2013, 13:08
Ответы с готовыми решениями:

Жизни в 2d игре
Всем привет, я новичок в Unity, и столкнулся с такой проблемой. При столкновении с вражеским объектом отнимается не одна жизнь, а 2. ...

Жизни в 2d игре
Здравствуйте я новичок в unity. вообщем написал я свою 2d игру (точнее пишу). Столкнулся с проблемой когда персонаж касается пилы у него...

Зависание формы при потере фокуса при выполнении в ней фоновых операций
Здравствуйте, коллеги. Возник следующий вопрос, который не получается решить самостоятельно. Информации по нему найти не удалось,...

46
 Аватар для dimakozyr
383 / 30 / 3
Регистрация: 17.08.2013
Сообщений: 560
25.10.2013, 08:24  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Cra3y Посмотреть сообщение
но я нуб в программировании...
Как и все мы
0
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
25.10.2013, 11:15
ты походу сцену не перерисовываешь вообще, залей перед рисованием все каким то цветом сначала (SDL_FillRect)
0
 Аватар для dimakozyr
383 / 30 / 3
Регистрация: 17.08.2013
Сообщений: 560
25.10.2013, 11:17  [ТС]
Цитата Сообщение от Raali Посмотреть сообщение
ты походу сцену не перерисовываешь вообще, залей перед рисованием все каким то цветом сначала
Да все, уже разобрались, надо было указатели использовать
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
25.10.2013, 13:40
Цитата Сообщение от dimakozyr Посмотреть сообщение
Да все, уже разобрались, надо было указатели использовать
Дело там не в указателях, а в невнимательности и непродуманности кода.
Цитата Сообщение от dimakozyr Посмотреть сообщение
А что не так с кодом? Не считая двух вышеописанный замечаний.
Правда интересно, просто как по мне - это хороший код, но
может, я не замечаю чего-либо?
По-моему мнению, отвратительный код. Только и остаётся, что периодически костыли подставлять. Я когда-то уже предлагал его заново переписать.

Не по теме:

И таймер жалко... Такой хороший был, и столько времени на его запуск было потрачено...:cry:

0
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
25.10.2013, 13:45
Цитата Сообщение от alsav22 Посмотреть сообщение
непродуманности кода.
в DrawScene уж точно не нужно держать жизни игрока
и вообще нужно разграничивать Update и Render
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
25.10.2013, 14:04
dimakozyr, зачем вам в SceneElements объект o_DrawScene, если в коде используется o_DrawScene из класса GameCicle (из-за этого, + невнимательность, и не работало)?
0
 Аватар для dimakozyr
383 / 30 / 3
Регистрация: 17.08.2013
Сообщений: 560
25.10.2013, 17:27  [ТС]
Цитата Сообщение от alsav22 Посмотреть сообщение
Я когда-то уже предлагал его заново переписать.
Не по теме:
И таймер жалко... Такой хороший был, и столько времени на его запуск было потрачено...
Да я-же не против, только знать-бы как и чем код плох.
А к таймеру я еще вернусь, я его ненадолго отложил

Цитата Сообщение от alsav22 Посмотреть сообщение
зачем вам в SceneElements объект o_DrawScene, если в коде используется o_DrawScene из класса GameCicle (из-за этого, + невнимательность, и не работало)?
Да, тут уже невнимательность

Приложил UML, можете посоветовать, что тут можно сделать лучше и проще?
И вообще интересно узнать все, что может сделать код лучше: синтаксис, структуру классов, в общем, все
Миниатюры
Не исчезают сердца при потере жизни в игре  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.10.2013, 17:27

Почему не работает? запуск при наведении курсора и остановка при потере фокуса курсором
Почему не работает? &lt;script type=&quot;text/javascript&quot;&gt; window.onload = function(){ function soundSTAR() { ...

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

Ошибка 0x000000101 , при игре 10 минутной игре в Dota 2, CS:GO
Имя события проблемы: BlueScreen Версия ОС: 6.1.7600.2.0.0.256.48 Код языка: 1049 Дополнительные сведения об этой проблеме: ...

Обработка ошибки при потере COM порта
Добрый день! Пока не приходилось сталкиваться с обработкой ошибок, поэтому обращаюсь к вам. Есть программа, которая работает с COM...

Переход на страницу при потере фокуса
Привет всем. Подскажите пожалуйста следующее. Вот код: &lt;form class=&quot;forma&quot; method=&quot;post&quot; action=&quot;xxx&quot;&gt; ...


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

Или воспользуйтесь поиском по форуму:
47
Ответ Создать тему
Новые блоги и статьи
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml, в чате форсили функторы модулей как суперфичу. Пытаясь отдуплить концепт, наткнулся на тутор с простым примером. А главный принцип обучения от. . .
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru