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

Покритикуйте мою игру - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 36, средняя оценка - 4.94
dimakozyr
 Аватар для dimakozyr
157 / 24 / 1
Регистрация: 17.08.2013
Сообщений: 461
25.10.2013, 20:47     Покритикуйте мою игру #1
Выкладываю код своей первой игры. Она готова процентов на 90, но уже работает.
Интересно узнать мнение людей, что в ней можно улучшить, упростить и т.п,
т.к. на данный момент в моих глазах это идеал и верх совершенства и мне трудно судить

Скриншот


Cсылки на архивы для скачивания

Цитата Сообщение от dimakozyr Посмотреть сообщение
Кидаю с dll, если у кого не запускается из-за того, что dll не найдены
Beaver.7z

Цитата Сообщение от dimakozyr Посмотреть сообщение
А так вроде упрощать уже некуда
Beaver.7z


Миниатюры
Покритикуйте мою игру  
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.10.2013, 14:42     Покритикуйте мою игру #81
А o_DrawScene, в class SceneElements, вы так и не убрали. В методы scene_*_events(), этого класса, у вас предаются o_DrawScene из class GameCicle. Зачем тогда в нём этот объект?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dimakozyr
 Аватар для dimakozyr
157 / 24 / 1
Регистрация: 17.08.2013
Сообщений: 461
26.10.2013, 18:14  [ТС]     Покритикуйте мою игру #82
Цитата Сообщение от alsav22 Посмотреть сообщение
А o_DrawScene, в class SceneElements, вы так и не убрали
Уже убрал. И убрал почти все магические числа
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.10.2013, 18:44     Покритикуйте мою игру #83
class InitSurfaces тоже вызывает большие сомнения в нужности своего существования. Класс хранит screen главного окна. Инициализация главного окна происходит один раз. В дальнейшем, из этого класса, используется только метод getScreen(). Всё это, раз относится к главному окну, логично было бы и хранить, и делать в главном классе: class GameCicle. А так, это всё, делается через объект InitSurfaces из class GameCicle. Что даёт это лишнее усложнение? По-моему, ничего.
dimakozyr
 Аватар для dimakozyr
157 / 24 / 1
Регистрация: 17.08.2013
Сообщений: 461
27.10.2013, 13:40  [ТС]     Покритикуйте мою игру #84
Упростил все, что только мог:
- Убрал все магические числа
- Удалил ненужные классы
- Переименовал переменные, чтобы они были более информативными

Еще можно убрать windows-зависимые элементы (exit(1)), чтобы сделать код кроссплатформенным, но тогда не знаю, как сделать, чтобы открывался фейсбук и твиттер, т.к. для этого использую Windows.h

А так вроде упрощать уже некуда
Вложения
Тип файла: 7z Beaver.7z (4.58 Мб, 9 просмотров)
Max Dark
В поиске работы
 Аватар для Max Dark
1546 / 1399 / 501
Регистрация: 09.10.2013
Сообщений: 3,185
Записей в блоге: 8
Завершенные тесты: 2
27.10.2013, 15:44     Покритикуйте мою игру #85
C++
1
2
3
4
5
6
7
void SceneElements::stopGame() {
    if(getEvent() -> type == SDL_QUIT)
        exit(1);
    if(getEvent() -> type = SDL_KEYDOWN && // присвоение вместо сравнения
       getEvent() -> key.keysym.sym == SDLK_ESCAPE)
        exit(1);
}
Добавлено через 1 час 25 минут
Изврат для открытия ссылки
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#if defined(_WIN32) || defined (_WIN64)
#include <windows.h>
#else
#include <unistd.h>
#endif
void openURL(const char* url) {
#if defined(_WIN32) || defined (_WIN64)
    ShellExecute(NULL, "open", url,
                           NULL, NULL, SW_SHOWNORMAL);
#else
    pid_t pid;
    if((pid=fork())==0) {
        execlp("xdg-open","",url,NULL);
        std::cerr<<"can't launch"<<std::endl;
    }
    if(pid<0)
        std::cerr<<"can't fork"<<std::endl;
#endif
}
Работает под убунту
dimakozyr
 Аватар для dimakozyr
157 / 24 / 1
Регистрация: 17.08.2013
Сообщений: 461
27.10.2013, 15:48  [ТС]     Покритикуйте мою игру #86
Цитата Сообщение от Cra3y Посмотреть сообщение
Изврат для открытия ссылки
И правда изврат Сейчас попробуем
Max Dark
В поиске работы
 Аватар для Max Dark
1546 / 1399 / 501
Регистрация: 09.10.2013
Сообщений: 3,185
Записей в блоге: 8
Завершенные тесты: 2
27.10.2013, 16:09     Покритикуйте мою игру #87
Подправил проект для сборки под линуксом в Eclipse
Собирается, но совершенно нет реакции на события
Ubuntu 13.10 amd64
gcc 4.8.1
Eclipse Kepler с оф сайта
game.7z
dimakozyr
 Аватар для dimakozyr
157 / 24 / 1
Регистрация: 17.08.2013
Сообщений: 461
27.10.2013, 16:18  [ТС]     Покритикуйте мою игру #88
Если нажать на фейсбук, то почему-то запускается и фейсбук и твиттер
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
case 2:
#if defined(_WIN32) || defined (_WIN64)
    ShellExecute(NULL, "open", "http://facebook.com", NULL, NULL, SW_SHOWNORMAL);
#else
    pid_t pid;
    if ((pid = fork()) == 0)
    execlp("xdg-open", "open", "http://facebook.com", NULL);
#endif
 case 3:
    #if defined(_WIN32) || defined (_WIN64)
    ShellExecute(NULL, "open", "http://twitter.com", NULL, NULL, SW_SHOWNORMAL);
#else
    pid_t pid;
    if ((pid = fork()) == 0)
        execlp("xdg-open", "open", "http://twitter.com", NULL);
#endif
А еще код, который после #else тускло серый, что это означает?
castaway
Эксперт С++
4842 / 2981 / 367
Регистрация: 10.11.2010
Сообщений: 11,013
Записей в блоге: 10
Завершенные тесты: 1
27.10.2013, 16:21     Покритикуйте мою игру #89
У меня есть огромные сомнения в том, что этот код написал ты..
Ведь ты даже не можешь понять что тут не хватает банального break; между case-ами.
dimakozyr
 Аватар для dimakozyr
157 / 24 / 1
Регистрация: 17.08.2013
Сообщений: 461
27.10.2013, 16:24  [ТС]     Покритикуйте мою игру #90
Цитата Сообщение от castaway Посмотреть сообщение
У меня есть огромные сомнения в том, что этот код написал ты..
Ведь ты даже не можешь понять что тут не хватает банального break; между case-ами.
Конечно, это доказательство того, что я его украл
castaway
Эксперт С++
4842 / 2981 / 367
Регистрация: 10.11.2010
Сообщений: 11,013
Записей в блоге: 10
Завершенные тесты: 1
27.10.2013, 16:25     Покритикуйте мою игру #91
А что же тогда говоришь что твоей?
Цитата Сообщение от dimakozyr Посмотреть сообщение
Выкладываю код своей первой игры.
dimakozyr
 Аватар для dimakozyr
157 / 24 / 1
Регистрация: 17.08.2013
Сообщений: 461
27.10.2013, 16:26  [ТС]     Покритикуйте мою игру #92
Цитата Сообщение от castaway Посмотреть сообщение
А что же тогда говоришь что твоей?
В предыдущем посте был сарказм....
Max Dark
В поиске работы
 Аватар для Max Dark
1546 / 1399 / 501
Регистрация: 09.10.2013
Сообщений: 3,185
Записей в блоге: 8
Завершенные тесты: 2
27.10.2013, 16:26     Покритикуйте мою игру #93
dimakozyr, скопируйте код из моего сообщения в начало файла и используйте функцию
C++
1
openURL("http://some.site");
castaway
Эксперт С++
4842 / 2981 / 367
Регистрация: 10.11.2010
Сообщений: 11,013
Записей в блоге: 10
Завершенные тесты: 1
27.10.2013, 16:27     Покритикуйте мою игру #94
Цитата Сообщение от dimakozyr Посмотреть сообщение
В предыдущем посте был сарказм....
Скорее и сарказм и правда одновременно..
dimakozyr
 Аватар для dimakozyr
157 / 24 / 1
Регистрация: 17.08.2013
Сообщений: 461
27.10.2013, 16:42  [ТС]     Покритикуйте мою игру #95
Цитата Сообщение от Cra3y Посмотреть сообщение
dimakozyr, скопируйте код из моего сообщения в начало файла и используйте функцию
Код C++
openURL("http://some.site");
Заработало

Цитата Сообщение от Cra3y Посмотреть сообщение
Собирается, но совершенно нет реакции на события
Странно, в обработке событий нет ничего такого, что зависит от платформы
Max Dark
В поиске работы
 Аватар для Max Dark
1546 / 1399 / 501
Регистрация: 09.10.2013
Сообщений: 3,185
Записей в блоге: 8
Завершенные тесты: 2
27.10.2013, 16:43     Покритикуйте мою игру #96
Рабочая сборка под Убунту 64 битаgame.7z
Я пофиксил все предупреждения, в предыдущей версии немного напутал
dimakozyr
 Аватар для dimakozyr
157 / 24 / 1
Регистрация: 17.08.2013
Сообщений: 461
27.10.2013, 16:56  [ТС]     Покритикуйте мою игру #97
Цитата Сообщение от Cra3y Посмотреть сообщение
Рабочая сборка под Убунту 64 битаgame.7z
Я пофиксил все предупреждения, в предыдущей версии немного напутал
Так уже работало под убунту?
Нашел только данные изменения:

//DrawScene.h
В конструкторе добавлено screen(0)

//Events.cpp
В конце метода добавлено return 1;
dimakozyr
 Аватар для dimakozyr
157 / 24 / 1
Регистрация: 17.08.2013
Сообщений: 461
27.10.2013, 17:06  [ТС]     Покритикуйте мою игру #98
Цитата Сообщение от castaway Посмотреть сообщение
А что же тогда говоришь что твоей?
История коммитов в гитхабе вам о чем-нибудь говорит?
Миниатюры
Покритикуйте мою игру  
Max Dark
В поиске работы
 Аватар для Max Dark
1546 / 1399 / 501
Регистрация: 09.10.2013
Сообщений: 3,185
Записей в блоге: 8
Завершенные тесты: 2
27.10.2013, 17:08     Покритикуйте мою игру #99
Изменения по сравнению с вашей версией:
исправлены пути в #include на "SDL/SDL..."
исправлены предупреждения про неинициализированые поля классов
Добавлена функция открытия ссылок
добавлены return-ы в конец некоторых фунций(тут я намудрил в Events::buttonEvents, сначала поставил 0, а над было 1)
исправлено условие в функции stopGame();

вроде все

Сейчас работает полностью
Покритикуйте мою игру
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.10.2013, 17:10     Покритикуйте мою игру
Еще ссылки по теме:

C++ Покритикуйте пожалуйста программу
C++ Покритикуйте код
C++ Графы. Покритикуйте код

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

Или воспользуйтесь поиском по форуму:
dimakozyr
 Аватар для dimakozyr
157 / 24 / 1
Регистрация: 17.08.2013
Сообщений: 461
27.10.2013, 17:10  [ТС]     Покритикуйте мою игру #100
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Cra3y Посмотреть сообщение
добавлены return-ы в конец некоторых фунций(тут я намудрил в Events::buttonEvents, сначала поставил 0, а над было 1)
А, ну тогда понятно. Ну круто, кроссплатформенность - это супер
Yandex
Объявления
27.10.2013, 17:10     Покритикуйте мою игру
Ответ Создать тему
Опции темы

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