l
leha525Мамыр 6, 2017, 12:29 Т.Ж.

Игра змейка в Qt

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

untitled.rar
Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!

14
Evgenii Legotckoi
  • Мамыр 6, 2017, 7:07 Т.Ж.

Приложите рабочий проект, который скомпилируется сразу, без поиска ошибок и недостающих слотов. Ну и если на каком-то этапе уже есть рабочий вариант, когда змейка будет запускаться, то лучше именно этот вариант. Тогда можно будет о чём-то говорить, а так я скачал, запустил на компиляцию, а проект даже не собирается. Какой смысл тогда в код заглядывать? Если уж говорить о внедрении фукционала.

    l
    • Мамыр 6, 2017, 11:06 Т.Ж.

    Не знаю, у меня работает. А что за ошибки?

      Evgenii Legotckoi
      • Мамыр 6, 2017, 12:31 Т.Қ.

      Слот void on_listView_activated(const QModelIndex &index); объявлен, но отсутствует его реализация. А также в ui файле нет этого самого ListView . При сборке проекта начистую выдаёт ошибки слотов. У вас видимо мусор остался с последних сборок, вот якобы и работает. Если удалить build, то тот проект, что приложили не будет собираться.

        l
        • Мамыр 6, 2017, 2:17 Т.Қ.

        Блин, а так можете сказать что нужно написать, что бы сделать паузу, я создал отдельное окно и в нем создал кнопку

          Evgenii Legotckoi
          • Мамыр 6, 2017, 4 Т.Қ.

          Навешать слот на QShortcut (если активировать меню по нажатию кнопки) какой-нибудь кнопки и в этом слоте стопорить все игровые таймеры и показать окно, в котором меню для паузы.

          По закрытию диалога уже выбирать, что делать дальше или перезапуск игры или снятие с паузы. Снимать с паузы запуском всех игровых таймеров.

            l
            • Мамыр 7, 2017, 1:13 Т.Ж.

            А вот как это сделать? Я просто не совсем шарю.

              Evgenii Legotckoi
              • Мамыр 7, 2017, 1:42 Т.Ж.

              В самом просто варианте это может выглядеть так.

              widget.h
              #ifndef WIDGET_H
              #define WIDGET_H
              
              #include <QWidget>
              #include <QTimer>
              
              namespace Ui {
              class Widget;
              }
              
              class Widget : public QWidget
              {
                  Q_OBJECT
              
              public:
                  explicit Widget(QWidget *parent = 0);
                  ~Widget();
              
              private slots:
                  // Слот для паузы
                  void pauseSlot();
              
              private:
                  Ui::Widget *ui;
                  QTimer m_gameTimer;  // Игровой таймер
              };
              
              #endif // WIDGET_H
              
              widget.cpp
              #include "widget.h"
              #include "ui_widget.h"
              
              #include <QShortcut>
              #include <QDialog>
              
              Widget::Widget(QWidget *parent) :
                  QWidget(parent),
                  ui(new Ui::Widget)
              {
                  ui->setupUi(this);
                  // Создаём hotkey
                  QShortcut* keyEsc = new QShortcut(this);
                  keyEsc->setKey(Qt::Key_Escape);
                  // Подключаем к этому хоткею слот
                  connect(keyEsc, &QShortcut::activated, this, &Widget::pauseSlot);
                  // Допустим имеется игровой таймер, который отвечает за тайминги в игре
                  m_gameTimer.start(1000);
              }
              
              Widget::~Widget()
              {
                  delete ui;
              }
              
              void Widget::pauseSlot()
              {
                  // Если таймер активен, то стопорим его
                  if (m_gameTimer.isActive())
                  {
                      m_gameTimer.stop();
                  }
                  // Создаём и диалог
                  QDialog menuDialog;
                  // Запускаем выполнение диалога
                  menuDialog.exec();
                  // пока диалог не закрыт выполнение кода не дойдёт до запуска таймера
                  m_gameTimer.start(1000);
              }
              

              Сигналы из диалога можно также организовать, как сделано подключение к хоткею. Почитайте о сигналах и слотах , чтобы разобраться с ними получше. В Qt - Это базис этого фреймворка.

                l
                • Мамыр 7, 2017, 2:50 Т.Ж.

                А в моем коде можно просто дописать вот это? Или что то еще надо?

                  Evgenii Legotckoi
                  • Мамыр 7, 2017, 3:08 Т.Ж.

                  Естественно, что нужно будет что-то дописать. Это уже зависит от архитектуры самой программы. Я вам подал идею. Развейте её и внедрите в свой код.

                    l
                    • Мамыр 7, 2017, 3:13 Т.Ж.

                    Так в том то и дело, у меня мозгов не хватает)

                      Evgenii Legotckoi
                      • Мамыр 7, 2017, 3:18 Т.Ж.

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

                        l
                        • Мамыр 7, 2017, 3:47 Т.Ж.

                        Частично не сам писал

                          l
                          • Мамыр 7, 2017, 3:52 Т.Ж.

                          Посмотрите этот код, мб он у вас откроется

                            l
                            • Мамыр 7, 2017, 4:05 Т.Ж.

                            Вот этот код я проверил на другом компе, в нем просто не загружается картинка, а так работает

                              Пікірлер

                              Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
                              Кіріңіз немесе Тіркеліңіз
                              OI
                              • Ora Iro
                              • Жел. 24, 2024, 6:38 Т.Ж.

                              C++ - Тест 001. Первая программа и типы данных

                              • Нәтиже:40ұпай,
                              • Бағалау ұпайлары-8
                              AD

                              C++ - Тест 004. Указатели, Массивы и Циклы

                              • Нәтиже:50ұпай,
                              • Бағалау ұпайлары-4
                              m
                              • molni99
                              • Қаз. 26, 2024, 1:37 Т.Ж.

                              C++ - Тест 004. Указатели, Массивы и Циклы

                              • Нәтиже:80ұпай,
                              • Бағалау ұпайлары4
                              Соңғы пікірлер
                              ИМ
                              Игорь МаксимовҚар. 22, 2024, 11:51 Т.Ж.
                              Django - Оқулық 017. Теңшелген Django кіру беті Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
                              Evgenii Legotckoi
                              Evgenii LegotckoiҚаз. 31, 2024, 2:37 Т.Қ.
                              Django - Сабақ 064. Python Markdown кеңейтімін қалай жазуға болады Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
                              A
                              ALO1ZEҚаз. 19, 2024, 8:19 Т.Ж.
                              Qt Creator көмегімен fb3 файл оқу құралы Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
                              ИМ
                              Игорь МаксимовҚаз. 5, 2024, 7:51 Т.Ж.
                              Django - Сабақ 064. Python Markdown кеңейтімін қалай жазуға болады Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
                              d
                              dblas5Шілде 5, 2024, 11:02 Т.Ж.
                              QML - Сабақ 016. SQLite деректер қоры және онымен QML Qt-та жұмыс істеу Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
                              Енді форумда талқылаңыз
                              Evgenii Legotckoi
                              Evgenii LegotckoiМаусым 24, 2024, 3:11 Т.Қ.
                              добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
                              t
                              tonypeachey1Қар. 15, 2024, 6:04 Т.Ж.
                              google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
                              NSProject
                              NSProjectМаусым 4, 2022, 3:49 Т.Ж.
                              Всё ещё разбираюсь с кешем. В следствии прочтения данной статьи. Я принял для себя решение сделать кеширование свойств менеджера модели LikeDislike. И так как установка evileg_core для меня не была возможна, ибо он писался…
                              9
                              9AnonimҚаз. 25, 2024, 9:10 Т.Ж.
                              Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…

                              Бізді әлеуметтік желілерде бақылаңыз