Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Потестите игру плиз (https://javascript.ru/forum/misc/38193-potestite-igru-pliz.html)

enigmat 23.05.2013 08:16

Потестите игру плиз
 
Я недавно увлёкся javascript'ом и написал игру. Беда в том что по непонятной причине скрипт иногда зависает, при этом немного грузится проц, но страница не подаёт признаков жизни. Гуру яваскрипта, может вы заметите где там косяк?
Правила игры - нужно накопить власть 100 или уничтожить противника. каждая карта стоит ресурс который написан в нижнем углу. Ресурсы добавляются каждый ход. Дизайн ещё не доделал но думаю разберётесь.
https://c9.io/iwinalone/lernphp/workspace/Acromage.html

dmitriymar 23.05.2013 08:30

Цитата:

Сообщение от enigmat
Гуру яваскрипта, может вы заметите где там косяк?

Это шутка? Кто ту простыню будет просматривать? Да это и не форум тестеров .
Инструментов отладки( инструменты разработчика) не существует? В любом браузере есть профилировщик, запустив который можно узнать что выполняется дольше, сколько выполняется каждая функция. В тех же инструментах и ошибки можно посмотреть

enigmat 23.05.2013 08:50

Спасибо за плофилировщик, с ним ещё не работал, поищу инфу на эту тему... Но всё же мне бы хотелось чтобы профи посмотрели на код и сказали чего не хватает и что можно оптимизировать. Явных ошибок там вроде нет.

enigmat 23.05.2013 09:31

Я не могу понять в чём проблема. Просто по прошествии нескольких минут скрипт останавливается и весь браузер виснет. При обновлении страницы игра начинается заново. Может кто подскажет как от этого избавиться, ведь не всегда получается довести игру до конца

skrudjmakdak 23.05.2013 09:38

фигасе нет.. просто тупо потыкал, по кликал.. ерроры сыпятся..

Uncaught TypeError: Object #<player> has no method 'Drop'. вываливается на 373 строчке
Uncaught TypeError: Cannot call method 'reload' of null. вывалилось на 379 строчке

используйте фаербаг. в хроме вызывается f12. вкладка console

enigmat 23.05.2013 09:58

Большое спасибо, нашёл в фаербаге и исправил ошибку. AI не мог сбрасывать карты. Просто метод дроп должен писаться с маленькой буквы, а вторая вылезла из за первой. Может ещё что найдёте?:)

skrudjmakdak 23.05.2013 10:15

ммм, давайте исправленный код
или на том сайте исправили? на 379-й по прежнему валится ошибка...

enigmat 23.05.2013 10:16

Всё там же по ссылке, правлю в онлайн ide cloud9
https://c9.io/iwinalone/lernphp/workspace/Acromage.html

skrudjmakdak 23.05.2013 10:35

такое возможно из за циклов. идет бесконечный цикл(т.е. без выхода) грузится проц и притормаживает страница.. сразу нужно искать циклы..
там у вас они есть несколько, но они все с определенным интервалом? например: for (i=7;i<13;i++). разумеется здесь ни будет бесконечного цикла.. а вот есть два цикла странных..
// это первый
while( i ){
          j = Math.floor( ( i-- ) * Math.random() );
          t = b && typeof this[i].shuffle!=='undefined' ? this[i].shuffle() : this[i];
          this[i] = this[j];
          this[j] = t;
        }

//вот это второй
while(rCard===undefined){takeCard();lvl=lvl-1;}

разместите туда console.log(1) и console.log(2)
вот так:

while( i ){
          j = Math.floor( ( i-- ) * Math.random() );
          t = b && typeof this[i].shuffle!=='undefined' ? this[i].shuffle() : this[i];
          this[i] = this[j];
          this[j] = t;
         console.log(1);
        }

while(rCard===undefined){takeCard();lvl=lvl-1; console.log(2);}


откройте фаербаг, вкладка консоль и смотрите.. если туда бесконечно будут сыпаться 1 или двойки - значит у вас бесконечный цикл!

skrudjmakdak 23.05.2013 10:37

я заметил, когда это происходит в конце вашей игры..


Часовой пояс GMT +3, время: 11:11.