Поэтому я в основном пытаюсь реализовать онлайн-карточную игру на php и (возможно, минимальном) javascript, и до сих пор у меня есть графический интерфейс, настроенный на php, база данных с необходимыми таблицами (до сих пор) для хранения колод, полей и других различных данных. Я дошел до того, что у меня есть функция, которая инициализирует поля для обоих игроков и заполняет их поля и руки картами из их колоды. Я также получил его до точки, где игрок на другом компьютере или устройстве может взять номер комнаты игры и присоединиться к игре, чтобы увидеть точное инициализированное поле.
моя следующая цель состояла в том, чтобы иметь возможность настроить логику хода и позволить экрану обновляться для одного игрока, в то время как другой играет во время своего хода. Моя проблема в том, что я не уверен, какое минимальное жизнеспособное решение будет для этого, потому что у меня есть длинные сложные функции, которые отображают текущее поле на основе значений, которые приходят из таблицы полей. Так что моя идеальная логика настроена следующим образом:
//find game form
//host game form
//if host is set (post){
//call insert field function (a long function that creates a table for the current game being played and initializes the field and hand with random cards from the deck table)
//link game to host for future field printing
// populate host function (a function that prints a table of every card on the field with the most up to date variables to represent each spot)
}
//if find is set (post){
//call insert field function
//link game to host for future field printing
//a button form to start the game which begins by calling heads or tails
// populate find function (same as host but for find player side)
}
//if start game is set (post){
// do game logic such as coin flip which will be notified to opponent in a message field in the game table upon the refresh
}
Я упаковывал функцию populate host в обновленный div, как это:
print "<div><meta http-equiv='refresh' content='5' />"; //host populate just disapears
populatehost($roomnumber); //populates self and opponents in hosts perspsective
print "</div>";
так что функция будет вызываться каждые 5 секунд или около того, но это просто заставляет поле исчезать через 5 секунд. Так…
Почему она исчезает?
Как заставить его обновить страницу и просто отобразить один экземпляр поля с помощью функции заполнить поле?
Жизнеспособен ли такой подход? если нет, то какой самый простой подход я мог бы принять и как?
Я также попробовал решение, где функция вызывалась каждые 5 секунд и избавлялась, но я не уверен, что я делал это правильно, руководство PHP не объясняло это очень ясно, и после множества проб и ошибок я думаю, что я разбил свой сервер. Это было что-то вроде этого:
//петля
ob_start(); populatehost($_SESSION['gamenumber']); sleep(5); ob_end_clean();
Я продолжал играть с этой логикой, но он либо печатал бесконечно, не печатал вообще, или разбил мой сервер. Я боюсь играть вокруг еще больше из-за страха сбоя сервера снова. Может быть, кто-то может объяснить правильный способ сделать это или почему это не жизнеспособно, если это не так?
Я сожалею, если это глупые вопросы, я провел дни и дни, исследуя подходы к этой проблеме, я не был уверен, если я мог бы реализовать его с помощью javascript или ajax вместе с моей функцией печати поля, я попробовал некоторые, и они не работали, и я не уверен, если это потому, что мой подход жизнеспособен или нет.
Вы можете взять javascript или Ajax справка для div вы можете назначить идентификатор div и идентификатор вызова в javascript:
проверить эту скрипку:
http://jsfiddle.net/arunpjohny/asTBL/
Спасибо