Жук с печеньем - PullRequest
       15

Жук с печеньем

1 голос
/ 06 апреля 2019

В настоящее время я делаю игру Flappybird на Javacript и сейчас я использую cookie для хранения рекордов. Но здесь проблема в том, что cookie всегда неопределен и не изменится.

Чтобы никого не смущать, я должен сказать, что я использую Framework p5.js, который помогает мне рисовать вещи. Код находится в моем репозитории gitHub (https://github.com/HaasStefan/challengeRepo/tree/master/FlappyBird). Основной код находится в файле с именем sketch.js, но вот некоторые фрагменты:

Во-первых, здесь я инициализирую все, а также файл cookie:

function setup() {
createCanvas(400, 600);
bird = new Bird();
menu = new Menu();
pipes.push(new Pipe());

alert(navigator.cookieEnabled);

if (typeof (document.cookie == "undefined"))
  document.cookie = "highscore=0; expires=Sun, 1 Dec 2030 12:00:00 UTC; path=/";
}

Далее у нас есть часть, где cookie читается и изменяется:

let str = document.cookie.split(';');
highscore = str[0].split('=')[1];
if (score > highscore) {
  highscore = score;
  document.cookie = "highscore=" + highscore + "; expires=Sun, 1 Dec 2030 12:00:00 UTC; path=/";
}

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

1 Ответ

1 голос
/ 06 апреля 2019

Как уже упоминалось в комментариях, первая проблема связана с условием if

if (typeof (document.cookie == "undefined"))

, который должен быть записан как

if (typeof document.cookie != "undefined")

Следующая проблема связана со считыванием значения из файла cookie «Рекорд». Предполагая, что есть несколько других куки, способ прочитать его значение должно быть:

var highscore = ('; '+document.cookie).split('; highscore=').pop().split(";").shift();

Результат строки выше имеет тип string, поэтому вам нужно преобразовать его в int перед выполнением каких-либо сравнений.

highscore = parseInt(highscore)

Подводя итог:

if (typeof document.cookie != "undefined") {
  document.cookie = "highscore=0; expires=Sun, 1 Dec 2030 12:00:00 UTC; path=/";
}

, а затем

let str = ('; '+document.cookie).split('; highscore=').pop().split(";").shift();
highscore = str ? parseInt(str) : 0;
if (score > highscore) {
  highscore = score;
  document.cookie = "highscore=" + highscore + "; expires=Sun, 1 Dec 2030 12:00:00 UTC; path=/";
}
...