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

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

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

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

BDK писал(а): Андрей полностью прав. Нужно улучшать свои методы. Однажды нужно уходить от дилетантского стиля программирования.
Это да, но Шахматный бой, моя первая и единственная игровая и вообще сколько-нибудь серьёзная программа. До этого, на Паскале я писал лишь программы для обработки текста. Потом это стало не нужно - появился Ворд c его макросами и поддержкой VBA.
Игру Шахматный бой начал программировать только потому, что мне очень понравилась идея игры и мне хотелось иметь постоянного партнера, и вообще распространить игру в массы.
Михаил Киселев
Сообщения: 719
Зарегистрирован: 22 дек 2017, 13:55
Благодарил (а): 162 раза
Поблагодарили: 69 раз

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

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

Андрей писал(а): Поправить "глюк ФСФ"* двойное засчитывание фигуры при открытии и далее открытии её ряда.
Я уже понял, почему такой глюк, и почему я его не исправил раньше. Я просто никогда не вскрывал тот ряд, на котором у меня уже была открыта фигура.
Михаил Киселев
Сообщения: 719
Зарегистрирован: 22 дек 2017, 13:55
Благодарил (а): 162 раза
Поблагодарили: 69 раз

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

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

Андрей писал(а): Сделать сетевую игру людей
Это уж точно не ко мне....
Аватара пользователя
Андрей Карпишин
Архитектор
Сообщения: 9326
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов, МО
Благодарил (а): 1283 раза
Поблагодарили: 565 раз

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

Сообщение Андрей Карпишин »

Михаил Киселев писал(а):
Андрей писал(а):Нашёл некоторые излишества в твоей программе.
Например ты обрабатываешь 64 процедуры на 64 кнопки (пометки мышью полей).
Надо было всем кнопкам подвязать одну и ту же обработку,
а в ней отлавливать Sender, и таким образом выходить на нужную кнопку.

Экономия - 1 прцедура вместо 64-х.
Не все так просто. Button(xx).caption нельзя сделать переменными. Можно обойти и эту проблему ( опять же с серьезной переделкой большей части кода), но исторически в ходе программирования у меня получилось 64 процедуры. :pust:
Ты, похоже, не понял мою подсказку. Это делается элементарно. Вот я привожу кусок своей программы, где реализована работа с Sender:

Код: Выделить всё

procedure TForm1.N4Click(Sender: TObject);
var Menu1, Menu2: TComponent;
    DBGrid: TDBGrid;
    i: integer;
begin
Menu1:=(Sender as TMenuItem).GetParentComponent;
Menu2:=(Menu1 as TPopUpMenu).PopUpComponent;
DBGrid:=Menu2 as TDBGrid;
i:=DBGrid.SelectedIndex;
DBGridTitleClick(DBGrid.Columns[i]);
end;
Ты можешь увидеть, что я обращаюсь к некоему DBGrid, который вычисляется из Sender, и делаю с ним однотипные действия. В данном случае сортировка эмуляцией щелчка по заголовку столбца.
Если бы я писал как ты - мне бы пришлось на каждый DBGrid писать по одной такой процедуре. А если 100 таблиц?

upd:
вот такую (одну и ту же) процедуру прописываешь в обработчик событий каждой из 64 кнопок,
а параметр (Sender as TButton) позвОлит тебе делать что-то именно с той кнопкой, которая послала это событие (в твоём случае щелчок ПКМ на ней).

Код: Выделить всё

(Sender as TButton).Caption:=" * "
Аватара пользователя
Андрей Карпишин
Архитектор
Сообщения: 9326
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов, МО
Благодарил (а): 1283 раза
Поблагодарили: 565 раз

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

Сообщение Андрей Карпишин »

Михаил Киселев писал(а):
Андрей писал(а): Иногда при вскрытии ряда Компьютером на некоторых кнопках проступает # (не всегда)
# проступает всегда на тех кнопках в ряде, которые были ранее открыты компьютером. Не думаю, что эта информация совершенно лишняя. При анализе партии она может быть полезной. Как думаешь?
А, то есть она показывает, что он открыл ряд методом "вскрытия целиком"? Вот в чём идея... Ну надо подумать, ещё потестить.
Михаил Киселев писал(а):
Андрей писал(а): Сделать сетевую игру людей
Это уж точно не ко мне....
Да я понимаю. Это как строительство Коммунизма, в планах есть, а кто делать будет :D Но я имел в виду себя, у меня есть одна прога, работающая на уровне Сокетов, может оттуда что-то взять, может ещё поспрашиваю у Кодера.
Аватара пользователя
Андрей Карпишин
Архитектор
Сообщения: 9326
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов, МО
Благодарил (а): 1283 раза
Поблагодарили: 565 раз

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

Сообщение Андрей Карпишин »

Ещё нашёл кое-что... Я сам потом вставлю обработчик Application.ProcessMessages в момент с морганием клетки.
Пару раз у меня не успевали обрабатываться события Виндовс при массивном (8 клеток) открытии ряда.
Аватара пользователя
Андрей Карпишин
Архитектор
Сообщения: 9326
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов, МО
Благодарил (а): 1283 раза
Поблагодарили: 565 раз

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

Сообщение Андрей Карпишин »

Андрей писал(а):
Михаил Киселев писал(а):
Андрей писал(а): Иногда при вскрытии ряда Компьютером на некоторых кнопках проступает # (не всегда)
# проступает всегда на тех кнопках в ряде, которые были ранее открыты компьютером. Не думаю, что эта информация совершенно лишняя. При анализе партии она может быть полезной. Как думаешь?
А, то есть она показывает, что он открыл ряд методом "вскрытия целиком"? Вот в чём идея... Ну надо подумать, ещё потестить.
Что-то мне не нравится этот знак. Он появляется как-то непонятно в каких случаях. Лучше его совсем убери. Только что играл, тестил.
Аватара пользователя
BDK
Сообщения: 7320
Зарегистрирован: 17 май 2015, 23:27
Откуда: Беларусь
Благодарил (а): 200 раз
Поблагодарили: 1083 раза

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

Сообщение BDK »

Это да, но Шахматный бой, моя первая и единственная игровая и вообще сколько-нибудь серьёзная программа. До этого, на Паскале я писал лишь программы для обработки текста. Потом это стало не нужно - появился Ворд c его макросами и поддержкой VBA.
Игру Шахматный бой начал программировать только потому, что мне очень понравилась идея игры и мне хотелось иметь постоянного партнера, и вообще распространить игру в массы.
Кстати хорошая идея сделать под Android - вот там распространить в массы получится 100%. И даже возможно заработать на этом.
► Показать
Аватара пользователя
Андрей Карпишин
Архитектор
Сообщения: 9326
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов, МО
Благодарил (а): 1283 раза
Поблагодарили: 565 раз

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

Сообщение Андрей Карпишин »

Андрей писал(а):
Андрей писал(а):
Михаил Киселев писал(а): # проступает всегда на тех кнопках в ряде, которые были ранее открыты компьютером. Не думаю, что эта информация совершенно лишняя. При анализе партии она может быть полезной. Как думаешь?
А, то есть она показывает, что он открыл ряд методом "вскрытия целиком"? Вот в чём идея... Ну надо подумать, ещё потестить.
Что-то мне не нравится этот знак. Он появляется как-то непонятно в каких случаях. Лучше его совсем убери. Только что играл, тестил.
Вместо этого символа # в клетках на доске, лучше сделать ещё один ряд кнопок 1-8 и как-то помечать кнопки напротив вскрытых халявно рядов и у Человека и у Компа. Например "->" или "<-". Можно ещё +цветом.
Михаил Киселев
Сообщения: 719
Зарегистрирован: 22 дек 2017, 13:55
Благодарил (а): 162 раза
Поблагодарили: 69 раз

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

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

Андрей писал(а): Михаил Киселев писал(а):
Андрей писал(а):
Источник цитаты Иногда при вскрытии ряда Компьютером на некоторых кнопках проступает # (не всегда)

# проступает всегда на тех кнопках в ряде, которые были ранее открыты компьютером. Не думаю, что эта информация совершенно лишняя. При анализе партии она может быть полезной. Как думаешь?

А, то есть она показывает, что он открыл ряд методом "вскрытия целиком"? Вот в чём идея... Ну надо подумать, ещё потестить.
Если компьютер открывает ряд методом "вскрытия целиком", а до этого на этом ряду уже делал открытие клетки. То на такой, ранее открытой клетке и появляется #.