Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
EduardSakhnovic
0 / 0 / 1
Регистрация: 10.04.2015
Сообщений: 69
#1

Поставить игру на паузу и продолжить с этого же места - Программирование Android

03.08.2015, 15:19. Просмотров 872. Ответов 19
Метки нет (Все метки)

В игре,которую я строю,хочу создать кнопку продолжить.
Как мне сохранить данные,чтобы нажав на эту кнопку,продолжить с того места,где я остановился?Желательно показать код.В инете искал,особо информации нету
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.08.2015, 15:19
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Поставить игру на паузу и продолжить с этого же места (Программирование Android):

Как поставить поставить AsyncTask на паузу?
У меня есть некоторая проблемка в приложении, нужно поставить AsyncTask на...

Как продолжить выполнение кода с другого места
Как сделать так чтобы при определённом условие выполнение кода продолжалось не...

Как поставить программу на паузу?
Можно как то остановить выполнение программы C++ на пол секунды? И затем...

Озвучка.Как поставить паузу?
Мне нужно создать калькулятор и озвучить его. Калькулятор у меня есть и озвучка...

Приостановить действие цикла а при условии продолжить с места остановки
Цикл while. Подскажите как сделать, чтобы при одном условии останавливался, а...

Как поставить приложение на короткую паузу
Приложение производит работу с файлами, разбивка и объединение. Если файлы...

19
RodionGork
35 / 35 / 9
Регистрация: 01.08.2015
Сообщений: 111
Записей в блоге: 1
03.08.2015, 15:23 #2
Ну тут смотря как вы свои данные организовали. Если весь стейт игры в одном объекте - сериализуйте его и ура. Когда игру продолжите / перезапустите - достанете из хранилища (ну у вас разные вариантые сть куда сохранить) - и обратно десериализуете.

Не знаю как вы искали что ничего не нашли... Популярно делать это через Bundle - вот поглядите
http://stackoverflow.com/questions/2...instance-state
1
EduardSakhnovic
0 / 0 / 1
Регистрация: 10.04.2015
Сообщений: 69
03.08.2015, 15:57  [ТС] #3
Вся логика игры у меня в классе
Java
1
Game
И также имеется куча других классов
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,072
04.08.2015, 08:50 #4
Цитата Сообщение от RodionGork Посмотреть сообщение
Ну тут смотря как вы свои данные организовали.
Вот так, чего не понятного то
Цитата Сообщение от EduardSakhnovic Посмотреть сообщение
Game
0
EduardSakhnovic
0 / 0 / 1
Регистрация: 10.04.2015
Сообщений: 69
04.08.2015, 17:52  [ТС] #5
не работает оно с сериализацией
и в логе пишет системные ошибки
а когда я нажимаю на кнопку продолжить,в менюшке,игра начинается с нуля,а не с того места,где игрок остановился
0
Pablito
2655 / 2137 / 726
Регистрация: 12.05.2014
Сообщений: 7,450
Завершенные тесты: 1
04.08.2015, 18:47 #6
код где и логи ошибок?
0
EduardSakhnovic
0 / 0 / 1
Регистрация: 10.04.2015
Сообщений: 69
04.08.2015, 20:29  [ТС] #7
Кликните здесь для просмотра всего текста
08-04 20:25:03.979 14130-14130/es.eduards.pacman V/Serialization Save Error:﹕ es.eduards.pacman.pcmangame.PacmanCanvas
08-04 20:25:03.979 14130-14130/es.eduards.pacman W/System.err﹕ java.io.NotSerializableException: es.eduards.pacman.pcmangame.PacmanCanvas
08-04 20:25:03.979 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1535)
08-04 20:25:03.979 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1847)
08-04 20:25:03.979 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1689)
08-04 20:25:03.979 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1653)
08-04 20:25:03.979 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:1143)
08-04 20:25:03.979 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:413)
08-04 20:25:03.979 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1241)
08-04 20:25:03.979 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1575)
08-04 20:25:03.979 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1847)
08-04 20:25:03.979 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1689)
08-04 20:25:03.979 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1653)
08-04 20:25:03.979 14130-14130/es.eduards.pacman W/System.err﹕ at es.eduards.pacman.GameActivity.saveObject(GameActivity.java:80)
08-04 20:25:03.979 14130-14130/es.eduards.pacman W/System.err﹕ at es.eduards.pacman.GameActivity.onClick(GameActivity.java:126)
08-04 20:25:03.979 14130-14130/es.eduards.pacman W/System.err﹕ at android.view.View.performClick(View.java:2506)
08-04 20:25:03.979 14130-14130/es.eduards.pacman W/System.err﹕ at android.view.View$PerformClick.run(View.java:9112)
08-04 20:25:03.979 14130-14130/es.eduards.pacman W/System.err﹕ at android.os.Handler.handleCallback(Handler.java:587)
08-04 20:25:03.979 14130-14130/es.eduards.pacman W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:92)
08-04 20:25:03.979 14130-14130/es.eduards.pacman W/System.err﹕ at android.os.Looper.loop(Looper.java:130)
08-04 20:25:03.979 14130-14130/es.eduards.pacman W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:3835)
08-04 20:25:03.979 14130-14130/es.eduards.pacman W/System.err﹕ at java.lang.reflect.Method.invokeNative(Native Method)
08-04 20:25:03.979 14130-14130/es.eduards.pacman W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:507)
08-04 20:25:03.979 14130-14130/es.eduards.pacman W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:864)
08-04 20:25:03.979 14130-14130/es.eduards.pacman W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622)
08-04 20:25:03.979 14130-14130/es.eduards.pacman W/System.err﹕ at dalvik.system.NativeStart.main(Native Method)
08-04 20:25:04.029 14130-14130/es.eduards.pacman V/Serialization Read Error:﹕ Read an exception; java.io.NotSerializableException: es.eduards.pacman.pcmangame.PacmanCanvas
08-04 20:25:04.029 14130-14130/es.eduards.pacman W/System.err﹕ java.io.WriteAbortedException: Read an exception; java.io.NotSerializableException: es.eduards.pacman.pcmangame.PacmanCanvas
08-04 20:25:04.029 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:933)
08-04 20:25:04.029 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2262)
08-04 20:25:04.029 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2217)
08-04 20:25:04.029 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1291)
08-04 20:25:04.029 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:518)
08-04 20:25:04.029 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1535)
08-04 20:25:04.029 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1443)
08-04 20:25:04.029 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:2112)
08-04 20:25:04.029 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:916)
08-04 20:25:04.029 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2262)
08-04 20:25:04.029 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2217)
08-04 20:25:04.029 14130-14130/es.eduards.pacman W/System.err﹕ at es.eduards.pacman.GameActivity.loadSerializedObject(GameActivity.java:92)
08-04 20:25:04.029 14130-14130/es.eduards.pacman W/System.err﹕ at es.eduards.pacman.GameActivity.onClick(GameActivity.java:127)
08-04 20:25:04.029 14130-14130/es.eduards.pacman W/System.err﹕ at android.view.View.performClick(View.java:2506)
08-04 20:25:04.029 14130-14130/es.eduards.pacman W/System.err﹕ at android.view.View$PerformClick.run(View.java:9112)
08-04 20:25:04.029 14130-14130/es.eduards.pacman W/System.err﹕ at android.os.Handler.handleCallback(Handler.java:587)
08-04 20:25:04.029 14130-14130/es.eduards.pacman W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:92)
08-04 20:25:04.029 14130-14130/es.eduards.pacman W/System.err﹕ at android.os.Looper.loop(Looper.java:130)
08-04 20:25:04.029 14130-14130/es.eduards.pacman W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:3835)
08-04 20:25:04.029 14130-14130/es.eduards.pacman W/System.err﹕ at java.lang.reflect.Method.invokeNative(Native Method)
08-04 20:25:04.029 14130-14130/es.eduards.pacman W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:507)
08-04 20:25:04.039 14130-14130/es.eduards.pacman W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:864)
08-04 20:25:04.039 14130-14130/es.eduards.pacman W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622)
08-04 20:25:04.039 14130-14130/es.eduards.pacman W/System.err﹕ at dalvik.system.NativeStart.main(Native Method)
08-04 20:25:04.039 14130-14130/es.eduards.pacman W/System.err﹕ Caused by: java.io.NotSerializableException: es.eduards.pacman.pcmangame.PacmanCanvas
08-04 20:25:04.039 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1535)
08-04 20:25:04.039 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1847)
08-04 20:25:04.039 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1689)
08-04 20:25:04.039 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1653)
08-04 20:25:04.039 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:1143)
08-04 20:25:04.039 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:413)
08-04 20:25:04.039 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1241)
08-04 20:25:04.039 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1575)
08-04 20:25:04.039 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1847)
08-04 20:25:04.039 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1689)
08-04 20:25:04.039 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1653)
08-04 20:25:04.039 14130-14130/es.eduards.pacman W/System.err﹕ at es.eduards.pacman.GameActivity.saveObject(GameActivity.java:80)
08-04 20:25:04.039 14130-14130/es.eduards.pacman W/System.err﹕ at es.eduards.pacman.GameActivity.onClick(GameActivity.java:126)
08-04 20:25:04.039 14130-14130/es.eduards.pacman W/System.err﹕ ... 11 more
это при нажатии на кнопку новая игра
08-04 20:27:20.189 14130-14130/es.eduards.pacman V/Serialization Retrieve Error >>﹕ Read an exception; java.io.NotSerializableException: es.eduards.pacman.pcmangame.PacmanCanvas
08-04 20:27:20.189 14130-14130/es.eduards.pacman W/System.err﹕ java.io.WriteAbortedException: Read an exception; java.io.NotSerializableException: es.eduards.pacman.pcmangame.PacmanCanvas
08-04 20:27:20.189 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:933)
08-04 20:27:20.189 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2262)
08-04 20:27:20.189 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2217)
08-04 20:27:20.189 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1291)
08-04 20:27:20.189 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:518)
08-04 20:27:20.189 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1535)
08-04 20:27:20.189 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1443)
08-04 20:27:20.189 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:2112)
08-04 20:27:20.189 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:916)
08-04 20:27:20.189 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2262)
08-04 20:27:20.189 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2217)
08-04 20:27:20.189 14130-14130/es.eduards.pacman W/System.err﹕ at es.eduards.pacman.GameActivity.retrieveSource(GameActivity.java:104)
08-04 20:27:20.189 14130-14130/es.eduards.pacman W/System.err﹕ at es.eduards.pacman.GameActivity.onClick(GameActivity.java:135)
08-04 20:27:20.189 14130-14130/es.eduards.pacman W/System.err﹕ at android.view.View.performClick(View.java:2506)
08-04 20:27:20.189 14130-14130/es.eduards.pacman W/System.err﹕ at android.view.View$PerformClick.run(View.java:9112)
08-04 20:27:20.189 14130-14130/es.eduards.pacman W/System.err﹕ at android.os.Handler.handleCallback(Handler.java:587)
08-04 20:27:20.189 14130-14130/es.eduards.pacman W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:92)
08-04 20:27:20.189 14130-14130/es.eduards.pacman W/System.err﹕ at android.os.Looper.loop(Looper.java:130)
08-04 20:27:20.189 14130-14130/es.eduards.pacman W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:3835)
08-04 20:27:20.189 14130-14130/es.eduards.pacman W/System.err﹕ at java.lang.reflect.Method.invokeNative(Native Method)
08-04 20:27:20.189 14130-14130/es.eduards.pacman W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:507)
08-04 20:27:20.189 14130-14130/es.eduards.pacman W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:864)
08-04 20:27:20.189 14130-14130/es.eduards.pacman W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622)
08-04 20:27:20.189 14130-14130/es.eduards.pacman W/System.err﹕ at dalvik.system.NativeStart.main(Native Method)
08-04 20:27:20.189 14130-14130/es.eduards.pacman W/System.err﹕ Caused by: java.io.NotSerializableException: es.eduards.pacman.pcmangame.PacmanCanvas
08-04 20:27:20.189 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1535)
08-04 20:27:20.189 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1847)
08-04 20:27:20.189 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1689)
08-04 20:27:20.189 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1653)
08-04 20:27:20.189 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:1143)
08-04 20:27:20.189 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:413)
08-04 20:27:20.189 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1241)
08-04 20:27:20.189 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1575)
08-04 20:27:20.189 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1847)
08-04 20:27:20.199 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1689)
08-04 20:27:20.199 14130-14130/es.eduards.pacman W/System.err﹕ at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1653)
08-04 20:27:20.199 14130-14130/es.eduards.pacman W/System.err﹕ at es.eduards.pacman.GameActivity.saveObject(GameActivity.java:80)
08-04 20:27:20.199 14130-14130/es.eduards.pacman W/System.err﹕ at es.eduards.pacman.GameActivity.onClick(GameActivity.java:126)
08-04 20:27:20.199 14130-14130/es.eduards.pacman W/System.err﹕ ... 11 more

Это при нажатии на кнопку продолжить старую игру
Вызовы методов файлов в он-клике в гейм-активити
0
Вложения
Тип файла: rar Desktop.rar (11.1 Кб, 4 просмотров)
Pablito
2655 / 2137 / 726
Регистрация: 12.05.2014
Сообщений: 7,450
Завершенные тесты: 1
04.08.2015, 20:43 #8
все очень печально
для начала сделай простой объект с полями и записывай в них то, что должно сохраниться
а потом сериализируй тот объект...и это не должен быть объект активити или еще что-то в таком роде
0
EduardSakhnovic
0 / 0 / 1
Регистрация: 10.04.2015
Сообщений: 69
04.08.2015, 21:05  [ТС] #9
А активити я не сериализирую
сериализирую обычный класс
0
Bend3r
149 / 136 / 35
Регистрация: 29.07.2012
Сообщений: 709
04.08.2015, 22:10 #10
Не буду вникать в подробности вашей игры, но допустим:
Есть квадрат который перемещается по 2d плоскости, задача игрока не попадать в ямы которые встречаются ему на пути. И вот на определенном моменте необходимо сохранить игру, вашей задачей является занести в базу данных(к примеру) всю информацию о текущем состоянии объекта (в моем случае это координаты в 2d плоскости и кол-во пройденного пути). Ну а когда вы хотите обратно продолжить игру, вам необходимо создать объекты игры и проинициализировать его теми данными которые вы сохранили. Вариант простой, но рабочей. Выше в комментариях вам говорили о возможности сериализации объекта, и десериализации при продолжении игры.
0
EduardSakhnovic
0 / 0 / 1
Регистрация: 10.04.2015
Сообщений: 69
05.08.2015, 10:53  [ТС] #11
С эксэпшенами я разобрался,сейчас исключения не выдает.
Только осталась одна проблема,что,когда я нажимаю кнопку продолжить,игра начинается полностью с нуля,как и при нажатии на кнопку начать новую игру
0
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
05.08.2015, 12:13 #12
EduardSakhnovic, Вам нужно самому описывать логику save/restore.
Canvas конечно не сериализуется. Надо сохранять игровые объекты, например, в базу данных. А потом восстанавливать их из БД.
0
EduardSakhnovic
0 / 0 / 1
Регистрация: 10.04.2015
Сообщений: 69
05.08.2015, 13:41  [ТС] #13
Сохраняю я в бинарный файл.Т.е. кроме функций записи и чтения из файла еще что то надо?
0
EduardSakhnovic
0 / 0 / 1
Регистрация: 10.04.2015
Сообщений: 69
07.08.2015, 08:40  [ТС] #14
где я могу поизучать исходники игр с использованием сериализации,хотя бы на обычной яве пока,не на андроид?
0
PaDyra
32 / 32 / 25
Регистрация: 06.01.2012
Сообщений: 142
07.08.2015, 09:44 #15
Цитата Сообщение от EduardSakhnovic Посмотреть сообщение
Сохраняю я в бинарный файл.Т.е. кроме функций записи и чтения из файла еще что то надо?
как все печально....
Вот вам дельный совет дали где хранить данные - SQLite, или если несколько полей, то используйте SharedPreferences
Цитата Сообщение от YuraAAA Посмотреть сообщение
EduardSakhnovic, Вам нужно самому описывать логику save/restore.
Canvas конечно не сериализуется. Надо сохранять игровые объекты, например, в базу данных. А потом восстанавливать их из БД.
0
EduardSakhnovic
0 / 0 / 1
Регистрация: 10.04.2015
Сообщений: 69
08.08.2015, 18:29  [ТС] #16
I think I can use for it also onSaveInstanceState and onRestore.
It sounds be useful for my game

Добавлено через 1 час 49 минут
Цитата Сообщение от PaDyra Посмотреть сообщение
SharedPreferences
не знаю подойдет ли.У меня игра составлена из кучи классов,лежащих в разных пакетах.
Вся логика игры в классе ПакменГейм,и все кнопки в ГеймАктивити.
Как сохранить класс ПакменГейм состоящий из 2000 строчек я тут особо не знаю.

Добавлено через 5 часов 27 минут
Цитата Сообщение от EduardSakhnovic Посмотреть сообщение
SharedPreferences
я сейчас использовал SharedPreferences ,только одно не понятно
когда я нажимаю на Continue,я хочу,чтобы на игровом поле появлялось то кол-во точек,которое осталось после того как я вышел из активити.
может мне в классе в котором игра описана,еще какую нибудь вспомогательную функцию написать.
вот код

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
public  class GameActivity extends Activity implements OnClickListener{
 
    private PacmanGame game;
    private GameView gameView;
    private SharedPreferences sPref;
    final String SAVED_GAME="saved_game";
    private Pacman pacman;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 
        PacmanGame game = initGame();
        initGameView(game);
        initMainView();
        setVolumeControlStream(AudioManager.STREAM_MUSIC);
    }
 
    @Override
    public void onResume() {
        super.onResume();
        game.resume();
    }
 
    @Override
    public void onPause() {
        game.pause();
        super.onPause();
    }
    @Override
    public void onDestroy(){
        saveGame();
        super.onDestroy();
 
 
    }
 
    private void initMainView() {
        setContentView(R.layout.activity_game);
 
        View newGameButton = findViewById(R.id.new_game_button);
        newGameButton.setOnClickListener(this);
        View continueButton = findViewById(R.id.continue_button);
        continueButton.setOnClickListener(this);
        View aboutButton=findViewById(R.id.about_button);
        aboutButton.setOnClickListener(this);
        View exitButton = findViewById(R.id.exit_button);
        exitButton.setOnClickListener(this);
 
    }
 
    private void initGameView(PacmanGame game) {
        gameView = new GameView(this);
        game.view = gameView;
        gameView.game = game;
    }
 
    private PacmanGame initGame() {
        game = new PacmanGame(this);
 
 
        game.init();
 
        return game;
    }
    private void transitionToGameView() {
        setContentView(gameView);
        gameView.setFocusable(true);
    }
    void saveGame(){
        sPref=getPreferences(MODE_PRIVATE);
        Editor ed=sPref.edit();
        System.out.println("Dots remaining >> "+game.getDotsRemaining());
        ed.putInt(SAVED_GAME,game.getDotsRemaining());
        ed.commit();
        Toast.makeText(this,"Game saved",Toast.LENGTH_SHORT).show();
    }
   void loadGame(){
      sPref=getPreferences(MODE_PRIVATE);
      int savedGame=sPref.getInt(SAVED_GAME,8);
      game.setDotsRemaining(savedGame);
      game.startNewGame();
    }
    @Override
    public void onClick(View v) {
        Intent intent;
        switch (v.getId()) {
            case R.id.new_game_button:
                transitionToGameView();
               game.startNewGame();
                break;
            case R.id.continue_button:
                transitionToGameView();
                loadGame();
                break;
            case R.id.about_button:
                intent=new Intent(this,AboutActivity.class);
                startActivityForResult(intent, RequestCode.REQUEST_CODE_ABOUT);
                break;
            case R.id.exit_button:
                finish();
                break;
        }
 
    }
 
 
}
Да.И если в меню нажимаю на кнопку финиш,выскакивает ошибка,так как сохранить игру я прописал в он дестрой,и эти кейсы хотят чтобы там тоже сoхранение игры было.Как убрать эту ошибку

Добавлено через 1 час 50 минут
Я сохранил текущее состояние игры при помощи SharedPreferences.Только,когда я ее начинаю заново,кол-во набранных очков онулируется.Что еще надо доделатть,чтобы при нажатии на продолжить,показывалось то кол-во очков,что было перед выходом из активити?
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
package es.eduards.pacman;
 
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.media.AudioManager;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.widget.Toast;
 
import java.io.File;
import java.io.InputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
 
import es.eduards.pacman.pcmangame.Pacman;
import es.eduards.pacman.pcmangame.Score;
import es.eduards.pacman.util.RequestCode;
 
 
public  class GameActivity extends Activity implements OnClickListener{
 
    private PacmanGame game;
    private Score score;
    private GameView gameView;
    private SharedPreferences sPref;
    final String SAVED_GAME="saved_game";
    private Pacman pacman;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 
        PacmanGame game = initGame();
        initGameView(game);
        initMainView();
        setVolumeControlStream(AudioManager.STREAM_MUSIC);
    }
 
    @Override
    public void onResume() {
        super.onResume();
        game.resume();
    }
 
    @Override
    public void onPause() {
        game.pause();
        super.onPause();
    }
    @Override
    public void onDestroy(){
       saveGame();
        super.onDestroy();
 
 
    }
 
    private void initMainView() {
        setContentView(R.layout.activity_game);
 
        View newGameButton = findViewById(R.id.new_game_button);
        newGameButton.setOnClickListener(this);
        View continueButton = findViewById(R.id.continue_button);
        continueButton.setOnClickListener(this);
        View aboutButton=findViewById(R.id.about_button);
        aboutButton.setOnClickListener(this);
        View exitButton = findViewById(R.id.exit_button);
        exitButton.setOnClickListener(this);
 
    }
 
    private void initGameView(PacmanGame game) {
        gameView = new GameView(this);
        game.view = gameView;
        gameView.game = game;
    }
 
    private PacmanGame initGame() {
        game = new PacmanGame(this);
 
 
        game.init();
 
        return game;
    }
    private void transitionToGameView() {
        setContentView(gameView);
        gameView.setFocusable(true);
    }
    void saveGame(){
        sPref=getPreferences(MODE_PRIVATE);
        Editor ed=sPref.edit();
        System.out.println("Score >> "+game.getScore());//for debug only
        ed.putLong(SAVED_GAME, game.getScore());
        ed.commit();
        Toast.makeText(this,"Game saved",Toast.LENGTH_SHORT).show();//for debug only
    }
   void loadGame(){
      sPref=getPreferences(MODE_PRIVATE);
      long savedScore=sPref.getLong(SAVED_GAME, 8);
      game.setScore(savedScore);
 
       System.out.println("Score saved >> "+game.getScore());//for debug only
       Toast.makeText(this,"Game loaded",Toast.LENGTH_SHORT).show();//for debug only
        game.startNewGame();
    }
    @Override
    public void onClick(View v) {
        Intent intent;
        switch (v.getId()) {
            case R.id.new_game_button:
                transitionToGameView();
                 game.startNewGame();
                break;
 
            case R.id.continue_button:
                transitionToGameView();
                loadGame();
                break;
            case R.id.about_button:
               intent=new Intent(this,AboutActivity.class);
                startActivityForResult(intent, RequestCode.REQUEST_CODE_ABOUT);
                break;
            case R.id.exit_button:
 
                finish();
                break;
        }
 
    }
 
 
}
0
PaDyra
32 / 32 / 25
Регистрация: 06.01.2012
Сообщений: 142
09.08.2015, 14:46 #17
Цитата Сообщение от EduardSakhnovic Посмотреть сообщение
кол-во очков,что было перед выходом из активити
у вас же есть переменная в который они хранятся, сохраняете из нее значение, потом восстанавливаете точно так же как и все остальные данные
0
EduardSakhnovic
0 / 0 / 1
Регистрация: 10.04.2015
Сообщений: 69
10.08.2015, 10:24  [ТС] #18
08-10 10:14:43.129 22383-22383/es.eduards.pacman E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.ClassCastException: java.lang.Integer
at android.app.ContextImpl$SharedPreferencesImpl.getLong(ContextImpl.java:2939)
at es.eduards.pacman.GameActivity.loadGame(GameActivity.java:110)
at es.eduards.pacman.GameActivity.onClick(GameActivity.java:133)
at android.view.View.performClick(View.java:2506)
at android.view.View$PerformClick.run(View.java:9112)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3835)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:864)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622)
at dalvik.system.NativeStart.main(Native Method)
что это может быть?
0
Pablito
2655 / 2137 / 726
Регистрация: 12.05.2014
Сообщений: 7,450
Завершенные тесты: 1
10.08.2015, 10:54 #19
Цитата Сообщение от EduardSakhnovic Посмотреть сообщение
что это может быть?
это сообщение об ошибке
0
EduardSakhnovic
0 / 0 / 1
Регистрация: 10.04.2015
Сообщений: 69
10.08.2015, 19:18  [ТС] #20
С сохранением текущего состояния игры я разобрался,теперь,когда я нажимаю на копку эбаут,и потом хочу продолжить игру,появляется черный экран без всяких изображений.В чем ошибка?Вот код.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
package es.eduards.pacman;
 
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.media.AudioManager;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.widget.Toast;
 
 
 
import es.eduards.pacman.pcmangame.Pacman;
import es.eduards.pacman.pcmangame.Score;
import es.eduards.pacman.util.RequestCode;
 
 
public  class GameActivity extends Activity implements OnClickListener{
    private static final String TAG="States";
    private PacmanGame game;
 
    private GameView gameView;
    private SharedPreferences sPref;
    final String SAVED_SCORE="saved_score";
    final String SAVED_LIVE="saved_live";
    final String SAVED_LEVEL="saved_level";
    final String SAVED_GAME="saved_game";
    private Pacman pacman;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 
        PacmanGame game = initGame();
        initGameView(game);
        initMainView();
        setVolumeControlStream(AudioManager.STREAM_MUSIC);
    }
 
    @Override
    public void onResume() {
        super.onResume();
        game.resume();
        Log.d(TAG, "MainActivity: onResume()");//for debug only
    }
 
    @Override
    public void onPause() {
        game.pause();
        super.onPause();
        saveGame();
        Log.d(TAG, "MainActivity: onPause()");//for debug only
    }
    @Override
    public void onDestroy(){
       saveGame();
        super.onDestroy();
        Log.d(TAG, "MainActivity: onDestroy()");//for debug only
 
    }
 
    private void initMainView() {
        setContentView(R.layout.activity_game);
 
        View newGameButton = findViewById(R.id.new_game_button);
        newGameButton.setOnClickListener(this);
        View continueButton = findViewById(R.id.continue_button);
        continueButton.setOnClickListener(this);
        View aboutButton=findViewById(R.id.about_button);
        aboutButton.setOnClickListener(this);
        View exitButton = findViewById(R.id.exit_button);
        exitButton.setOnClickListener(this);
 
    }
 
    private void initGameView(PacmanGame game) {
        gameView = new GameView(this);
        game.view = gameView;
        gameView.game = game;
    }
 
    private PacmanGame initGame() {
        game = new PacmanGame(this);
 
 
        game.init();
 
        return game;
    }
    private void transitionToGameView() {
        setContentView(gameView);
        gameView.setFocusable(true);
    }
 
    /**
     * Saves the existing mode of the game in order to reload it
     * in the near future
     */
    void saveGame(){
        sPref=getPreferences(MODE_PRIVATE);
        Editor ed=sPref.edit();
        ed.putInt(SAVED_SCORE, game.getScore());
       ed.putInt(SAVED_LEVEL,game.getLevel());
        ed.putInt(SAVED_LIVE,game.getLives());
        ed.commit();
        ed.commit();
        Toast.makeText(this,"Game saved",Toast.LENGTH_SHORT).show();//for debug only
    }
 
    /**
     * Reloads saved game
     */
   void loadGame(){
      sPref=getPreferences(MODE_PRIVATE);
      int savedScore=sPref.getInt(SAVED_SCORE, 8);
      int savedLevel=sPref.getInt(SAVED_LEVEL,9);
      int savedLive=sPref.getInt(SAVED_LIVE,10);
       game.setScore(savedScore);
       game.setLevel(savedLevel);
       game.setLives(savedLive);
       game.startNewGame();
       Toast.makeText(this,"Game loaded",Toast.LENGTH_SHORT).show();//for debug only
 
    }
    @Override
    public void onClick(View v) {
        Intent intent;
        switch (v.getId()) {
            case R.id.new_game_button:
                transitionToGameView();
                 game.startNewGame();//completely new game
                break;
            case R.id.continue_button:
                 try{
                     transitionToGameView();
                     loadGame();//reloaded game
                 }catch(NullPointerException npe) {
                     System.out.println("No any data");
                     /*in case if user pressed exit,when firstly entered to main menu,and then,at second time pressed continue and
                     nothing was saved in this activity
 
                      */
                     //System.exit(1);
                     game.startNewGame();
                 }
                break;
            case R.id.about_button:
               intent=new Intent(this,AboutActivity.class);
                startActivityForResult(intent, RequestCode.REQUEST_CODE_ABOUT);
                break;
            case R.id.exit_button:
                finish();
                break;
        }
 
    }
 
 
}
0
10.08.2015, 19:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.08.2015, 19:18
Привет! Вот еще темы с решениями:

Как запустить и поставить на паузу аудио?
Помогите пожалуйста, мне нужно сделать кнопку, которая запускает аудио, и...

Торрент-клиент: как поставить закачку на паузу?
Добрый день! Пробую сделать торрент-клиент. Клиент нормально загружает...

Как поставить цикл на паузу, до выполнения определённого события?
Здравствуйте, уважаемые форумчане. Сейчас пишу приложение на C# WPF и...

BagroundWorker: как поставить на паузу, а потом снять с паузы?
Всем привет. Опишу свою задачу: 1. В отдельном потоке крутится бесконечный...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru