Мое творчество. Игра Шахматный сапёр

Видео, книги, журналы, научные статьи, (по тематике форума), наше творчество
Михаил Киселев
Сообщения: 703
Зарегистрирован: 22 дек 2017, 13:55
Благодарил (а): 154 раза
Поблагодарили: 66 раз

Re: Мое творчество. Игра Шахматный бой

Сообщение Михаил Киселев »

Браузер ГуглХром, после небольших изменений и отправки файлов им на анализ уже не ругается! :) У кого ГуглХром или другие паранойдные браузеры, прошу проверить у себя. https://yadi.sk/d/8F6d9mD_3A954s
Проверял скачивал браузерами Opera, Mozila FireFox, UCBrowser - всё в порядке.
Аватара пользователя
Андрей
Архитектор
Сообщения: 7353
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов
Благодарил (а): 517 раз
Поблагодарили: 462 раза

Re: Мое творчество. Игра Шахматный бой

Сообщение Андрей »

Хром - в порядке!
Аватара пользователя
BDK
Сообщения: 3665
Зарегистрирован: 17 май 2015, 23:27
Откуда: Беларусь
Благодарил (а): 152 раза
Поблагодарили: 389 раз

Re: Мое творчество. Игра Шахматный бой

Сообщение BDK »

У меня Opera. Все скачалось без проблем.
Михаил Киселев
Сообщения: 703
Зарегистрирован: 22 дек 2017, 13:55
Благодарил (а): 154 раза
Поблагодарили: 66 раз

Re: Мое творчество. Игра Шахматный бой

Сообщение Михаил Киселев »

Выкладываю английскую версию Шахматного боя 1.82. Озвучка даже получилась поприкольнее чем в в русской 1.82. Просьба посмотреть нет ли косяков с переводом. Особенно в хелп файле.
Косяк с гугл хромом опять такой же: после перевода на английский (больше ничего не трогал) ругается что программа не безопасна, причем как на яндекс диске https://yadi.sk/d/XN9P9hv23YkPjS
так и на гугл диске https://drive.google.com/drive/u/0/fold ... nR04Gf2QTb_
Может через некоторое время ругаться перестанет, а то просто безобразие.
Попробую выложить здесь в архиве
Chess Battle_v1_82.zip
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Михаил Киселев 04 июл 2018, 12:03, всего редактировалось 1 раз.
Михаил Киселев
Сообщения: 703
Зарегистрирован: 22 дек 2017, 13:55
Благодарил (а): 154 раза
Поблагодарили: 66 раз

Re: Мое творчество. Игра Шахматный бой

Сообщение Михаил Киселев »

Ага, здесь скачал - не ругается, что файл не безопасен.
Аватара пользователя
Андрей
Архитектор
Сообщения: 7353
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов
Благодарил (а): 517 раз
Поблагодарили: 462 раза

Re: Мое творчество. Игра Шахматный бой

Сообщение Андрей »

Пока прикрутил к Шахматному бою сетевой чат с контролем доставки сообщений.

Сам обмен ходами между клиентом и сервером будет в Новом году реализован.
Аватара пользователя
Андрей
Архитектор
Сообщения: 7353
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов
Благодарил (а): 517 раз
Поблагодарили: 462 раза

Re: Мое творчество. Игра Шахматный бой

Сообщение Андрей »

Уже прикрутил к Шахматному бою процедуру начальной инициализации коннекта с соперником. Поменял интерфейс, добавлено окно чата и новые элементы формы для сети.

Замечены следующие недостатки игры:
  • когда компьютер открывает твой ряд, первая клетка ряда остается не прорисованной до самого конца открытия уже поправлено было
  • При открытии компьютером ряда проигрывается ряд одинаковых звуков выстрела по пустой клетке, даже если в ряду убиты фигура или фигуры (на этих клетках звук должен отличаться) а звук убитой фигуры звучит уже ПОСЛЕ открытия ряда
  • При попадании в фигуру звучит двойной звук, сначала выстрела по пустой клетке, а потом убитой фигуры, это должен быть 1 звук убитой фигуры
  • Пометка полей ПКМ происходит не по центру, а косовато (некрасиво)
Аватара пользователя
Андрей
Архитектор
Сообщения: 7353
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов
Благодарил (а): 517 раз
Поблагодарили: 462 раза

Re: Мое творчество. Игра Шахматный бой

Сообщение Андрей »

Долго думал, как определять очерёдность 1-го хода:
- клиенту сначала или серверу,
- рандомом,
- но пришла супер идея! - кто быстрее расставит. - уже реализовал.

Самое вкусное и интересное начинается - реализация передачи ходов )))
Аватара пользователя
Андрей
Архитектор
Сообщения: 7353
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов
Благодарил (а): 517 раз
Поблагодарили: 462 раза

Re: Мое творчество. Игра Шахматный бой

Сообщение Андрей »

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

Кодер - Андрею писал(а):Привет
Вопрос простой на самом деле. Решений несколько
Можно использовать функцию ожидания события (WaitForSingleObject)
Можно использовать Fiber (ConvertThreadToFiber, SwitchToFiber)
Можно также использовать событийное программирование, но тогда пауза и возобновление будут возможны не внутри процедуры, а на стыке процедур. В этом ограничение. Для его обхода, собственно, и нужны потоки (Threads) и волокна (Fibers). Каждый поток или волокно имеет свой стек и сохраняет полностью состояние во время ожидания
При этом всё, что можно сделать с помощью волокон, можно также сделать с помощью потоков без потери лаконичности и красоты кода. Минусы в том, что волокна дешевле по ресурсам и не требуют межпоточной синхронизации. Конкретное оптимальное решение выбирается исходя из множества факторов. Можем их обсудить отдельно
===
Кодер писал(а):Вообще биндит порт только сервак, клиенты не должны.
Если ты отправляешь, допустим, на UDP-порт 40000, то тебе не надо отправлять с этого же порта, можно (и нужно) с другого. Операционка сама выберет тебе случайный свободный порт, с которого будет отправляться. Сервер должен отвечать на тот же порт, откуда пришёл запрос. Отклонения от этого правила не будут работать через NAT.

сервер вызывает функции bind и listen, а клиент - connect.

точнее говоря, в случае TCP, сервер вызывает bind, listen и accept, клиент - connect

В случае UDP сервер вызывает bind, recvfrom, sendto, а клиент - connect, send, recv.
Аватара пользователя
Андрей
Архитектор
Сообщения: 7353
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов
Благодарил (а): 517 раз
Поблагодарили: 462 раза

Re: Мое творчество. Игра Шахматный бой

Сообщение Андрей »

Далее, скажу, что после продолжительного обсуждения с обеих сторон эта проблема была решена ещё более простым, но как сказал Кодер, всё же кривоватым кодингом - глобальной переменной и циклом с Application.ProcessMessages и постусловием в середине процедуры (он сказал, возможны зависания при многократных вызовах).