На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
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
                      Цитата VisualProg @
                      Выкинуть картинки, только Canvas

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

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


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

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

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


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

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


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


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


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

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


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

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

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

                            для написания самостоятельно нужно как минимум следующее:
                            1. изучить существующие алгоритмы (например, http://www.resplendence.com/chessbrd)
                            2. разработать сетевой протокол работы программы
                              Нет пока времени заниматься логикой игры, но как появится, думаю, доделаю. Пока только доска)
                              Прикреплённый файлПрикреплённый файл____________________.jpg (70,24 Кбайт, скачиваний: 586)
                                Браво! :good:
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0495 ]   [ 19 queries used ]   [ Generated: 28.03.24, 11:44 GMT ]