Прежде всего создать пространство имен для вашей игры , например Game
:
var Game = {};
С этого момента, все переменные, которые имеют отношение к вашей игре идти. Это должно свести к минимуму использование глобального масштаба (что является злом).
Тогда скажите, что вы хотите иметь состояние с score
и level
. Вы делаете это так:
Game.state = {
score: 0,
level: 1
}
Во время игры он может быть модифицирован, например:
Game.state.score = 42;
Game.state.level++;
Чтобы сохранить его, отправить запрос Ajax:
$.ajax({
url: "save.php",
data: {
state: JSON.stringify(Game.state) // sending Game.state as JSON string
},
dataType: 'json',
type: 'POST',
success: function (json_object) {
console.log(json_object);
$("#data").text("Data has been saved.");
},
error: function (json_object) {
console.log(json_object);
$("#data").text("Failed to save data !");
}
}
JSON.stringify(Game.state)
будет строка что выглядит следующим образом: '{"level":0,"score":42}'
.
Хорошо, поэтому после сохранения вы храните отправленный объект JSON как String на своем сервере или что-то в этом роде, и в какой-то момент в будущем вы хотите его восстановить. Вы можете достичь этого:
$.ajax({
url: "load.php",
data: "", // no data, we are just loading
dataType: 'json',
type: 'POST',
success: function (state) {
Game.state = state; // okay, state loaded and assigned to our Game.state!
}
}
Вы можете это сделать, но это не будет JSON. Это также очень похоже на [проблема XY] (http://meta.stackexchange.com/a/66378/169187) --- что вы хотите сделать с этим? – JJJ
Я создаю мини-игру в javascript, и мне показалось, что мне нужно использовать json для сохранения данных, как я могу сохранить эти данные вместо этого? – Skugga
Не используйте глобальные переменные. Поместите все игровые данные в объект, и вы можете просто передать этот объект вокруг как есть. – JJJ