Russian Qt Forum

Qt => Общие вопросы => Тема начата: Noize_programmer от Май 30, 2023, 12:37



Название: [РЕШЕНО]помогите пожалуйста (game dev)
Отправлено: Noize_programmer от Май 30, 2023, 12:37
проект: https://github.com/SpeechKingV/guess_the_number__with_graphics (https://github.com/SpeechKingV/guess_the_number__with_graphics)

  • окно игры пропадает при запуске(не меню)(из кнопок работает только "Start a new game"(так должно быть(пока что)))

  • файл сохранения не создаётся(он .txt)

вывод приложения:
12:32:06: Запускается F:\projects\Qt_project\5.0.2\games\guess_the_number__with_graphics\build-guess_the_number__with_graphics-Desktop_Qt_5_12_12_MinGW_64_bit-Debug\debug\guess_the_number__with_graphics.exe ...
QIODevice::write (QFile, "Save"): device not open
12:32:38: F:\projects\Qt_project\5.0.2\games\guess_the_number__with_graphics\build-guess_the_number__with_graphics-Desktop_Qt_5_12_12_MinGW_64_bit-Debug\debug\guess_the_number__with_graphics.exe завершился с кодом 0

выывод сборки:
12:31:57: Выполняются этапы для проекта guess_the_number__with_graphics...
12:31:57: Настройки не изменились, этап qmake пропускается.
12:31:58: Запускается: «F:\Qt5.14\Tools\mingw730_64\bin\mingw32-make.exe» -j6
F:/Qt5.14/Tools/mingw730_64/bin/mingw32-make -f Makefile.Debug
mingw32-make[1]: Entering directory 'F:/projects/Qt_project/5.0.2/games/guess_the_number__with_graphics/build-guess_the_number__with_graphics-Desktop_Qt_5_12_12_MinGW_64_bit-Debug'
g++ -c -fno-keep-inline-dllexport -g -std=gnu++11 -Wall -W -Wextra -fexceptions -mthreads -DUNICODE -D_UNICODE -DWIN32 -DMINGW_HAS_SECURE_API=1 -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -I..\guess_the_number__with_graphics -I. -IF:\Qt5.14\5.12.12\mingw73_64\include -IF:\Qt5.14\5.12.12\mingw73_64\include\QtWidgets -IF:\Qt5.14\5.12.12\mingw73_64\include\QtGui -IF:\Qt5.14\5.12.12\mingw73_64\include\QtANGLE -IF:\Qt5.14\5.12.12\mingw73_64\include\QtCore -Idebug -I. -I/include -IF:\Qt5.14\5.12.12\mingw73_64\mkspecs\win32-g++  -o debug\Menu_games.o ..\guess_the_number__with_graphics\Menu_games.cpp
g++ -Wl,-subsystem,windows -mthreads -o debug\guess_the_number__with_graphics.exe debug/GuessTheNumber_WithGraphics.o debug/Menu_games.o debug/main.o debug/qrc_resource_file.o debug/moc_GuessTheNumber_WithGraphics.o debug/moc_Menu_games.o  F:\Qt5.14\5.12.12\mingw73_64\lib\libQt5Widgetsd.a F:\Qt5.14\5.12.12\mingw73_64\lib\libQt5Guid.a F:\Qt5.14\5.12.12\mingw73_64\lib\libQt5Cored.a  -lmingw32 F:\Qt5.14\5.12.12\mingw73_64\lib\libqtmaind.a -LC:\openssl\lib -LC:\Utils\my_sql\mysql-5.6.11-winx64\lib -LC:\Utils\postgresql\pgsql\lib -lshell32
mingw32-make[1]: Leaving directory 'F:/projects/Qt_project/5.0.2/games/guess_the_number__with_graphics/build-guess_the_number__with_graphics-Desktop_Qt_5_12_12_MinGW_64_bit-Debug'
12:32:06: Процесс «F:\Qt5.14\Tools\mingw730_64\bin\mingw32-make.exe» завершился успешно.
12:32:06: Прошло времени: 00:09.


Название: Re: помогите пожалуйста (game dev)
Отправлено: kambala от Май 30, 2023, 21:29
Цитировать
окно игры пропадает при запуске
потому что объект типа GuessTheNumber_WithGraphics удаляется сразу после выхода из функции. замени на указатель, тогда окно не будет закрываться.
Цитировать
файл сохранения не создаётся(он .txt)
ты забыл вызвать file.open()


Название: Re: помогите пожалуйста (game dev)
Отправлено: Noize_programmer от Май 31, 2023, 10:20
Цитировать
окно игры пропадает при запуске
потому что объект типа GuessTheNumber_WithGraphics удаляется сразу после выхода из функции. замени на указатель, тогда окно не будет закрываться.
Цитировать
файл сохранения не создаётся(он .txt)
ты забыл вызвать file.open()
спасибо окно игры перестало закрываться, но файл сохранения фсё ещё не появляется


Название: Re: помогите пожалуйста (game dev)
Отправлено: kambala от Июнь 01, 2023, 23:03
у file.open() надо проверять возвращаемое значение, может он не может создать файл в той папке


Название: Re: помогите пожалуйста (game dev)
Отправлено: Noize_programmer от Июнь 02, 2023, 12:18
проект:https://github.com/SpeechKingV/guess_the_number__with_graphics (https://github.com/SpeechKingV/guess_the_number__with_graphics)
(я перезалил(другая версия))

у file.open() надо проверять возвращаемое значение, может он не может создать файл в той папке
Код:
if(file.open(QIODevice::WriteOnly))
так?

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

вывод приложения:
12:14:21: Запускается F:\projects\Qt_project\5.0.2\games\guess_the_number__with_graphics\build-guess_the_number__with_graphics-Desktop_Qt_5_12_12_MinGW_64_bit-Debug\debug\guess_the_number__with_graphics.exe ...
QIODevice::read (QFile, "Save.txt"): WriteOnly device
QObject::moveToThread: Widgets cannot be moved to a new thread
12:14:33: Программа неожиданно завершилась.
12:14:33: Процесс был завершён принудительно.
12:14:33: F:\projects\Qt_project\5.0.2\games\guess_the_number__with_graphics\build-guess_the_number__with_graphics-Desktop_Qt_5_12_12_MinGW_64_bit-Debug\debug\guess_the_number__with_graphics.exe аварийно завершился.


вывод сборки:
12:14:17: Выполняются этапы для проекта guess_the_number__with_graphics...
12:14:17: Настройки не изменились, этап qmake пропускается.
12:14:17: Запускается: «F:\Qt5.14\Tools\mingw730_64\bin\mingw32-make.exe» -j6
F:/Qt5.14/Tools/mingw730_64/bin/mingw32-make -f Makefile.Debug
mingw32-make[1]: Entering directory 'F:/projects/Qt_project/5.0.2/games/guess_the_number__with_graphics/build-guess_the_number__with_graphics-Desktop_Qt_5_12_12_MinGW_64_bit-Debug'
g++ -c -fno-keep-inline-dllexport -g -std=gnu++11 -Wall -W -Wextra -fexceptions -mthreads -DUNICODE -D_UNICODE -DWIN32 -DMINGW_HAS_SECURE_API=1 -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -I..\guess_the_number__with_graphics -I. -IF:\Qt5.14\5.12.12\mingw73_64\include -IF:\Qt5.14\5.12.12\mingw73_64\include\QtWidgets -IF:\Qt5.14\5.12.12\mingw73_64\include\QtGui -IF:\Qt5.14\5.12.12\mingw73_64\include\QtANGLE -IF:\Qt5.14\5.12.12\mingw73_64\include\QtCore -Idebug -I. -I/include -IF:\Qt5.14\5.12.12\mingw73_64\mkspecs\win32-g++  -o debug\Menu_games.o ..\guess_the_number__with_graphics\Menu_games.cpp
g++ -Wl,-subsystem,windows -mthreads -o debug\guess_the_number__with_graphics.exe debug/GuessTheNumber_WithGraphics.o debug/Menu_games.o debug/main.o debug/qrc_resource_file.o debug/moc_GuessTheNumber_WithGraphics.o debug/moc_Menu_games.o  F:\Qt5.14\5.12.12\mingw73_64\lib\libQt5Widgetsd.a F:\Qt5.14\5.12.12\mingw73_64\lib\libQt5Guid.a F:\Qt5.14\5.12.12\mingw73_64\lib\libQt5Cored.a  -lmingw32 F:\Qt5.14\5.12.12\mingw73_64\lib\libqtmaind.a -LC:\openssl\lib -LC:\Utils\my_sql\mysql-5.6.11-winx64\lib -LC:\Utils\postgresql\pgsql\lib -lshell32
mingw32-make[1]: Leaving directory 'F:/projects/Qt_project/5.0.2/games/guess_the_number__with_graphics/build-guess_the_number__with_graphics-Desktop_Qt_5_12_12_MinGW_64_bit-Debug'
12:14:21: Процесс «F:\Qt5.14\Tools\mingw730_64\bin\mingw32-make.exe» завершился успешно.
12:14:21: Прошло времени: 00:04.


Название: Re: помогите пожалуйста (game dev)
Отправлено: tux от Июнь 02, 2023, 21:58
Я бы советовал сначала почитать литературу по программированию. Такое чувство, что вы надёргали куски кода, толком не понимая, что именно эти куски делают.
Допустим, вы сначала открываете файл с параметром QIODevice::WriteOnly, а чуть ниже пытаетесь из него читать с помощью readAll (видимо, не совсем понимая, как работает QTextStream)
С потоками та же беда.
Кстати, зачем они вам там? Почему бы вам просто не создать GuessTheNumber_WithGraphics и использовать?


Название: Re: помогите пожалуйста (game dev)
Отправлено: Noize_programmer от Июнь 21, 2023, 15:38
Я бы советовал сначала почитать литературу по программированию. Такое чувство, что вы надёргали куски кода, толком не понимая, что именно эти куски делают.
Допустим, вы сначала открываете файл с параметром QIODevice::WriteOnly, а чуть ниже пытаетесь из него читать с помощью readAll (видимо, не совсем понимая, как работает QTextStream)
С потоками та же беда.
Кстати, зачем они вам там? Почему бы вам просто не создать GuessTheNumber_WithGraphics и использовать?
потоки для того что бы следующий уровень открывался при прохождении предыдущего


Название: Re: помогите пожалуйста (game dev)
Отправлено: kambala от Июнь 21, 2023, 18:04
абсолютно неочевидно зачем для этого другой поток


Название: Re: помогите пожалуйста (game dev)
Отправлено: Noize_programmer от Июнь 21, 2023, 18:22
абсолютно неочевидно зачем для этого другой поток
что бы подождать конца прошлого уровня(поток)(уровень = поток)


Название: Re: помогите пожалуйста (game dev)
Отправлено: kambala от Июнь 21, 2023, 19:05
а что мешает выслать сигнал при окончании уровня и обработать его в этом же потоке?


Название: Re: помогите пожалуйста (game dev)
Отправлено: Noize_programmer от Июнь 22, 2023, 15:48
а что мешает выслать сигнал при окончании уровня и обработать его в этом же потоке?
пытался но так и не понял как это сделать ???
может подскажете?
(проблема не из-за потоков а из-за функции set у класса GuessTheNumber_WithGraphics(переменной w))


Название: Re: помогите пожалуйста (game dev)
Отправлено: kambala от Июнь 22, 2023, 21:51
https://github.com/SpeechKingV/guess_the_number__with_graphics/blob/main/GuessTheNumber_WithGraphics.h не вижу ту никакой функции set. так в каком именно месте проблема?

не надо злоупотреблять разноцветным текстом


Название: Re: помогите пожалуйста (game dev)
Отправлено: Noize_programmer от Июнь 23, 2023, 12:48
https://github.com/SpeechKingV/guess_the_number__with_graphics/blob/main/GuessTheNumber_WithGraphics.h не вижу ту никакой функции set. так в каком именно месте проблема?

не надо злоупотреблять разноцветным текстом
GuessTheNumber_WithGraphics.h:22(закоментирована)

Menu_games.cpp:80(for() закоментираван)


Название: Re: помогите пожалуйста (game dev)
Отправлено: kambala от Июнь 23, 2023, 15:38
не сильно понятно что там где происходит. в месте, где у тебя заканчивается уровень, надо сигнал выслать, чтоб обрабатывающий сигнал вызывал твою функцию set.


Название: Re: помогите пожалуйста (game dev)
Отправлено: Noize_programmer от Июнь 23, 2023, 17:04
не сильно понятно что там где происходит. в месте, где у тебя заканчивается уровень, надо сигнал выслать, чтоб обрабатывающий сигнал вызывал твою функцию set.
спасибо игра не закрывается :D :D :D :D :D :D :D :D :) :) :) :) :) :) :) :) ;D ;D ;D ;D ;D ;D ;D ;D ;) ;) ;) ;) ;) ;) ;) ;)