Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   программирование на javascript (https://javascript.ru/forum/misc/60820-programmirovanie-na-javascript.html)

diga 21.01.2016 20:31

программирование на javascript
 
Доброго времени суток!
Я только начинаю разбирать JS и возникли не большие (с точки зрения программирования глупые) вопросы.
1) Какова основная идея программирования на JS? Каким образом выполняются функции на JS? Понимаю что функция выполняется у каждого пользователя при загрузки скрипта и при определенных событиях. Вот например,

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

если подключился игрок 1 для него выполнилось это

usr1 = true; /*первый пользователь в сервер*/
usr2 = false; /*первый еще не вошел в сервер*/

if (usr1 && usr2) {
	/*выполняется какая та функция*/
}


т.е. не выполнилась функция
гарантирует ли выполнение этого скрипта если подключиться второй игрок?
и если не выполнилась функция для первого игрока (из-за условия), а когда зашел второй, выполнится ли условие для первого игрока, т.к. usr2 = true, и что происходит в тот момент со скриптом для первого игрока когда второй игрок не подключен, он не выполняется? приостанавливается? или он закрывается и автоматически запускается когда запускается скрипт для второго игрока?

p.s. извините за такие глупые вопросы. Как язык я его начал понимать, но смысл и идею работы скриптов пока уловить не могу.
Заранее благодарю ответы

Siend 22.01.2016 11:37

Q1. основная идея программирования на JS?
A1. такая же как и в любом другом языке.
Q2. Каким образом выполняются функции на JS?
A2. Последовательно, как и была написана. В начале ты определяешь функцию, затем ты ее вызываешь в нужном тебе месте.
Q3. Как определить каким образом подключается второй?
A3. В момент подключения к серверу второго игрока, сервер отлавливает это событие посылает другому своему клиенту уведомление о том, что второй игрок подключился, после чего на стороне первого клиента отрабатывает обработчик этого события.
Q4. гарантирует ли выполнение этого скрипта если подключиться второй игрок?
A4. Нет. Вообще в твоем случае нужно использовать WebSockets и передавать состояние готовности обоим клиентам сразу + отслеживать живы ли соединения с ними, и при каждом изменении состояния клиентов проводить уведомления всех остальных.

От себя:
JavaScript это клиентский язык. Для мультиплеерной игры тебе в любом случае нужна серверная часть, на которой и происходит взаимодействие всех клиентов друг с другом. Сервер будет опрашивать клиентов, проверять их состояния, клиенты будут отправлять на сервер сообщения, все это на сервере передается другим клиентам, и в зависимости от передаваемых данных, будут отрабатывать те или иные обработчики уже на клиентской части.

tourniquet 22.01.2016 21:12

"JavaScript это клиентский язык." - а как же NodeJS? Как же ExpressJS, Koa, SailsJS, MeteorJS итд итп?

Siend 25.01.2016 11:18

tourniquet,
Node.js – платформа, основанная на JavaScript движке.
Express - фреймворк
Koa - фреймворк
SailsJS- фреймворк
Meteor JS - фреймворк

Если для тебя нет никакой разницы, то ок.

diga 26.01.2016 12:00

А что если, выполняется скрипт у первого игрока (второй игрок не подключен) а когда подключается второй игрок, каким образом нужно запускать выполнение того же скрипта? т.е. каким образом мы узнаем что второй игрок подключился, с каким событием это связано?
Хотя могу предположить, что идет отклик от сервера о том что подключен второй игрок, а как этот отклик можно отрабатывать? можно ли сделать таким образом, что пока второй игрок не подключен, приостановить выполнение скрипта, как только второй игрок подключается, с сервера отправляется отклик, на клиенте проверяем подключен ли второй игрок и продолжаем выполнение скрипта, или как лучше?

tourniquet 26.01.2016 13:07

Siend, а разве это не бэкенд? Разве на бэкенде не используется JavaScript?

Siend 27.01.2016 10:23

tourniquet, учитывая конкретный вопрос в топе и суть того что хочет понять автор, мне кажется ему до фени на js в бекэнде) Так то да, NodeJS использует синтаксис js, так что спору нет, утверждать что js исключительно клиентский не стану.

diga,
Цитата:

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

kosuha606 27.01.2016 23:26

На самом деле нет никакой "основной" идеи программирования на js. Как и любой язык программирования js просто инструмент. А что уже у тебя получится сделать зависит от идей в твоей голове, и тут ни js ни какой либо другой язык ни думать, ни писать программу за тебя не будет.

Мне кажется тебе стоит вообще понять что из себя представляет процесс программирования, что такое циклы, условия, функции, объекты, переменные, массивы, структуры. Потом собрать свои знания придумать идею и начать реализацию возможно и на javascript

diga 29.01.2016 00:59

Цитата:

Сообщение от kosuha606 (Сообщение 405244)
Мне кажется тебе стоит вообще понять что из себя представляет процесс программирования, что такое циклы, условия, функции, объекты, переменные, массивы, структуры. Потом собрать свои знания придумать идею и начать реализацию возможно и на javascript

это то я все знаю, правда на C++ и python на js посмотрел принципиальных различий не заметил.


Цитата:

Сообщение от Siend (Сообщение 405166)
В целом, чтобы лучше понять что происходит - тебе стоит разобрать любой проект простенького чата, он реализует все нужные тебе моменты и куда проще игры.

хорошая идея, спасибо


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