На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS

Дорогие друзья! Поздравляем вас с Новым 2018 годом!

Всем удачи, успеха и благополучия!
В новом году ожидаем новых рекордов при подсчёте количества ёлочек на экране ;)


msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
... (продолжение следует) ...

Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...
Модераторы: jack128, D[u]fa, Shaggy, Rouse_
  
> Шахматы, Помощь в написании игры
Всем привет.
Хочу шахматы, чтобы играть один на один по сети.
Как их написать?
Цитата Слышь @
Хочу шахматы, чтобы играть один на один по сети.

Чем готовые не устраивают? :-?

Цитата Слышь @
Как их написать?

Вот тем более играй в готовые! :yes:
нечто нейтральное, пока что.
Готовые не хочу, хочу сам написать
Цитата Слышь @
Готовые не хочу, хочу сам написать

Что же мешает? :-?
Каков прогресс? :huh:
нечто нейтральное, пока что.
Да прогресс пока нулевой, вот и хотел в этой теме выяснить стратегию написания. Для начала надо замутить доску, как и на чём её лучше нарисовать?
Цитата Слышь @
Для начала надо замутить доску, как и на чём её лучше нарисовать?

хз, я выводил на простой image1, когда делал свою настольную игруху, но было это очень давно. Наверняка есть варианты посовременней и попроще в реализации! :rolleyes:
Скрытый текст

что то типа такого:
PoleObject: array[1..43] of TImage; //невидимые кнопки...(верняк где то есть обьекты лучше для этих целей...)
PoleBitmap: array[1..43] of TBitmap; //Средство для отображения значений поля
нечто нейтральное, пока что.
Ну я щас посмотрел несколько исходников, да, в основном всё на TImage. В принципе, нормальный вариант картинки двигать по картинке, завтра набросаю доску. А как и где хранить местоположение фигур, в исходниках, там чот и массивы и двумерные массивы, чорт ногу сломит.
Цитата Слышь @
А как и где хранить местоположение фигур, в исходниках, там чот и массивы и двумерные массивы, чорт ногу сломит.

Нинаю кто как, я предпочитал хранить состояние в записях, т.к. их легко сохранять-читать. :)

Скрытый текст
ExpandedWrap disabled
    TPoleMap = record
        OwnerNum: integer; //Владелец(игрок)
        UpgrideNum: integer; //Номер апгрэйда
        Cost: integer; //Базовая стоимость
        Crc: integer; //контрольная сумма... :-)
    .........
    .........
      end;
     
    ...
    ...
     
    PoleMap: array[1..43] of TPoleMap; //здесь хранится вся информация о поле. (42 ячейки вобще то...)
     
    ...
    ...
      //****************
     // Сохранить карту
    //******************
    function TForm1.SaveMap(MapName: String):Boolean;
    var fs: TFileStream;
        lti: integer;
    begin
      if FileExists(ProgPath+'maps\'+MapName+'.map') then
      begin
      end;
      fs:=TFileStream.Create(ProgPath+'maps\'+MapName+'.map', fmCreate or fmOpenWrite);
      try
        fs.Write(PoleMap, SizeOf(PoleMap));
      finally
        fs.Free;
      end;
      result:=True;
    end;


Сообщение отредактировано: Руслан -
нечто нейтральное, пока что.
Выкинуть картинки, только Canvas. Ну, и массив клеток. По массиву рисовать доску и содержимое. Собственно, по нему же, извлекать кликнутую фигуру (если она есть в клетке).

У вас слишком тривиальные вопросы. Не спрашивайте, просто делайте. Когда будет код, приходите и показывайте, вот тогда вам 100% помогут и подскажут как лучше. Сейчас же, всё это - пустая болтовня, я даже не верю что вы кого нибудь послушаете здесь :D
CyberLock | BloodBath-LAN
Немного творчества - альбом ArtMetal [Metal, Instrumental, Orchestral]
Цитата VisualProg @
Выкинуть картинки, только Canvas

Ну, с таким же успехом я могу порекомендовать "выкинуть Delphi, только WPF" (или AngularJS, Tcl/Tk, далее по вкусу).

Автор явно неискушённый ещё игродел, для него TImage, накиданные на форму матрицей 8*8, будет как раз. Сделает первую альфа-версию, поймёт что где поджимает или не хватает, далее уже будет более предметно выбирать. Было бы желание.
Windows as usual - my "wau" Windows experience
Цитата Mr.Delphist @
Ну, с таким же успехом я могу порекомендовать "выкинуть Delphi, только WPF" (или AngularJS, Tcl/Tk, далее по вкусу).


Конечно нет. Сменить язык, не то же самое что сменить подход к решению задачи. Насколько я помню, Delphi умеет в ООП? ИМХО, постановка задачи в стиле "дана 8x8 матрица объектов ячеек, которые могут содержать объекты фигур" - позволит новичку решить целый ряд вопросов на вроде "как узнать кто куда может ходить?", "как узнать кто где расположен и как найти свободные клетки?", потому что сама задача буквально кричит что всё это в массиве)

Согласен, накидать TImage - простой путь для визуализации (хотя, не всё так однозначно), но, то что это усложнит остальную часть реализации вы умалчиваете)) Рано или поздно ТС придётся узнать что такое интерсекция, как выравнить фигуры при перемещении строго по квадратам, и прочие нюансы механики игры. А если он будет уверен в том что мир рисуется на канвасе им самим - осознание того что необходимо изучить - придёт сразу. Более того, оперировать вычислениями относительно компонентов на форме - разве это проще/понятнее/прозрачнее чем оперировать вычислениями относительно объекта фигуры/клетки? Вариант решения задачи картинками не просто избыточен, он принесёт автору кучу проблем, которые касаются конкретно этих компонентов, их свойств и особенностей WinAPI, которые вообще не имеют отношения к игре "шахматы".

Цитата Mr.Delphist @
Автор явно неискушённый ещё игродел, для него TImage, накиданные на форму матрицей 8*8, будет как раз.


Да, хотя, я бы начал с протокола. Но, меня не надо брать в расчёт.

Цитата Mr.Delphist @
Сделает первую альфа-версию, поймёт что где поджимает или не хватает, далее уже будет более предметно выбирать. Было бы желание.


Это ключевой момент. И с ним полностью согласен. Поэтому и говорю что сама по себе тема с просьбой подсказать - мне не понятна. Натыкать TImage - это первое что приходит большинству людей в голову, почему ТС не взялся за реализацию сразу, а начал задавать вопросы о популярных способах - мне так же не понятно. (замечу, мой ответ как раз из области популярных решений)


Вот и получается, что такое Delphi автор знает, при открытии IDE вываливается форма с кучей кнопочек и UI компонентов, осмелюсь предположить, что он уже потыкал в них, и знает что к чему (не буду задумываться, знает ли он что такое код), есть у него идея - шахматы, есть вопрос - как их сделать, но, нет никакого наброска:
Цитата Слышь @
Да прогресс пока нулевой


Так как идея с картинками кажется первой что приходит в голову, я и предлагаю вариант который "хотел" услышать автор (За время которое он потратил на создание вопроса и чтение ответов, он бы уже смог набросать шахматы и начать работу над логикой их движения). Но, мой ответ ничего не изменит (Такой подход интересен только тем кто знает что он делает, и да, такие люди, как правило, не задают вопросы без начального наброска).

Подведя итоги, могу смело заявить, что всё это - вопрос в пустоту, а ответ любого человека в этой теме никак не повлияет на мнение автора :thanks:
CyberLock | BloodBath-LAN
Немного творчества - альбом ArtMetal [Metal, Instrumental, Orchestral]
Цитата Слышь @
Да прогресс пока нулевой, вот и хотел в этой теме выяснить стратегию написания. Для начала надо замутить доску, как и на чём её лучше нарисовать?


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

Ты берешься за простую: прорисовка доски, прорисовка фигур на фоне доски, перемещение фигур, обработка сообщений от мыши и т.д. Это некая адекватная нормальная задача.

Задача написания алгоритма - это уже непочатый край, это вперед в алгоритмы и заниматься, заниматься.
Цитата Слышь @
Готовые не хочу, хочу сам написать

для написания самостоятельно нужно как минимум следующее:
1. изучить существующие алгоритмы (например, http://www.resplendence.com/chessbrd)
2. разработать сетевой протокол работы программы
... mess with the best, die like the rest ...
1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
0 пользователей:


Рейтинг@Mail.ru
[ Script Execution time: 0,1390 ]   [ 20 queries used ]   [ Generated: 19.01.18, 17:53 GMT ]