Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
dimakozyr
 Аватар для dimakozyr
157 / 24 / 1
Регистрация: 17.08.2013
Сообщений: 461
23.10.2013, 13:08     Не исчезают сердца при потере жизни в игре #1
В игре есть три жизни, соответственно, отображаются три сердца.
Если жизнь пропадает, то сердце должно пропадать.
Когда жизни заканчиваются, игра заканчивается, все нормально, но вот сердец все время отображается три

Структура со счетчиком жизни и методами для работы с ним
// 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 то столько сердец и отображается, тут все нормально
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dimakozyr
 Аватар для dimakozyr
157 / 24 / 1
Регистрация: 17.08.2013
Сообщений: 461
25.10.2013, 08:24  [ТС]     Не исчезают сердца при потере жизни в игре #41
Цитата Сообщение от Cra3y Посмотреть сообщение
но я нуб в программировании...
Как и все мы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Raali
572 / 276 / 12
Регистрация: 06.07.2013
Сообщений: 917
Завершенные тесты: 1
25.10.2013, 11:15     Не исчезают сердца при потере жизни в игре #42
ты походу сцену не перерисовываешь вообще, залей перед рисованием все каким то цветом сначала (SDL_FillRect)
dimakozyr
 Аватар для dimakozyr
157 / 24 / 1
Регистрация: 17.08.2013
Сообщений: 461
25.10.2013, 11:17  [ТС]     Не исчезают сердца при потере жизни в игре #43
Цитата Сообщение от Raali Посмотреть сообщение
ты походу сцену не перерисовываешь вообще, залей перед рисованием все каким то цветом сначала
Да все, уже разобрались, надо было указатели использовать
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.10.2013, 13:40     Не исчезают сердца при потере жизни в игре #44
Цитата Сообщение от dimakozyr Посмотреть сообщение
Да все, уже разобрались, надо было указатели использовать
Дело там не в указателях, а в невнимательности и непродуманности кода.
Цитата Сообщение от dimakozyr Посмотреть сообщение
А что не так с кодом? Не считая двух вышеописанный замечаний.
Правда интересно, просто как по мне - это хороший код, но
может, я не замечаю чего-либо?
По-моему мнению, отвратительный код. Только и остаётся, что периодически костыли подставлять. Я когда-то уже предлагал его заново переписать.

Не по теме:

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

Raali
572 / 276 / 12
Регистрация: 06.07.2013
Сообщений: 917
Завершенные тесты: 1
25.10.2013, 13:45     Не исчезают сердца при потере жизни в игре #45
Цитата Сообщение от alsav22 Посмотреть сообщение
непродуманности кода.
в DrawScene уж точно не нужно держать жизни игрока
и вообще нужно разграничивать Update и Render
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.10.2013, 14:04     Не исчезают сердца при потере жизни в игре #46
dimakozyr, зачем вам в SceneElements объект o_DrawScene, если в коде используется o_DrawScene из класса GameCicle (из-за этого, + невнимательность, и не работало)?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.10.2013, 17:27     Не исчезают сердца при потере жизни в игре
Еще ссылки по теме:

C++ Программа, суммирующая штрафное время команд при игре в хоккей
Учет очков, набранных каждой командой при игре в баскетбол C++
Падает FPS в игре на Ubuntu при зажатии клавиши C++

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

Или воспользуйтесь поиском по форуму:
dimakozyr
 Аватар для dimakozyr
157 / 24 / 1
Регистрация: 17.08.2013
Сообщений: 461
25.10.2013, 17:27  [ТС]     Не исчезают сердца при потере жизни в игре #47
Цитата Сообщение от alsav22 Посмотреть сообщение
Я когда-то уже предлагал его заново переписать.
Не по теме:
И таймер жалко... Такой хороший был, и столько времени на его запуск было потрачено...
Да я-же не против, только знать-бы как и чем код плох.
А к таймеру я еще вернусь, я его ненадолго отложил

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

Приложил UML, можете посоветовать, что тут можно сделать лучше и проще?
И вообще интересно узнать все, что может сделать код лучше: синтаксис, структуру классов, в общем, все
Миниатюры
Не исчезают сердца при потере жизни в игре  
Yandex
Объявления
25.10.2013, 17:27     Не исчезают сердца при потере жизни в игре
Ответ Создать тему
Опции темы

Текущее время: 21:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru