Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.11.2012, 21:35   #11
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

Пожалуйста.
У меня все плавно (Delphi 2010 и включенная двойная буферизация).
Нужно как-то задействовать двойную буферизацию, если компилируете не в Delphi 2010.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 26.11.2012, 22:05   #12
вася радугов
Форумчанин
 
Регистрация: 09.04.2011
Сообщений: 134
По умолчанию

Извините, наверное, это легко сделать, но у меня не получилось. как сделать, чтобы шашки стояли как на шахматной доске: только на черных клетках?
вася радугов вне форума Ответить с цитированием
Старый 26.11.2012, 22:23   #13
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

Да, действительно легко, нужно добавить всего лишь 2 условных оператора:
Код:
procedure start;
var
  i, j: Integer;
begin
  for i := 0 to 1 do
    for j := 0 to N - 1 do
      if odd(i + j) then
        Pieces[i, j] := 1;
  for i := 2 to N - 3 do
    for j := 0 to N - 1 do
      Pieces[i, j] := 0;
  for i := N - 2 to N - 1 do
    for j := 0 to N - 1 do
      if odd(i + j) then
        Pieces[i, j] := 2;
  Form1.Repaint;
end;
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 26.11.2012, 22:45   #14
вася радугов
Форумчанин
 
Регистрация: 09.04.2011
Сообщений: 134
По умолчанию

Как добавить еще один ряд зеленых шашаек? Красные я добавил, а вот зеленые почему-то не получается.
вася радугов вне форума Ответить с цитированием
Старый 26.11.2012, 23:21   #15
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

Код:
const
  Lines = 3;
...
procedure start;
var
  i, j: Integer;
begin
  for i := 0 to N - 1 do
    for j := 0 to N - 1 do
      Pieces[i, j] := 0;
  for i := 0 to Lines - 1 do
    for j := 0 to N - 1 do
      if odd(i + j) then
        Pieces[i, j] := 1;
  for i := N - Lines to N - 1 do
    for j := 0 to N - 1 do
      if odd(i + j) then
        Pieces[i, j] := 2;
  Form1.Repaint;
end;
Зеленые "затираются" нулями (изменил порядок заполнения).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 26.11.2012, 23:29   #16
вася радугов
Форумчанин
 
Регистрация: 09.04.2011
Сообщений: 134
По умолчанию

Хорошо, что есть люди, которые могут помочь. Спасибо большое!
вася радугов вне форума Ответить с цитированием
Старый 27.11.2012, 18:42   #17
вася радугов
Форумчанин
 
Регистрация: 09.04.2011
Сообщений: 134
По умолчанию

Извините, но у меня появился еще один вопрос. Можно сделать так, чтобы шашки можно было "выносить" за пределы поля?
вася радугов вне форума Ответить с цитированием
Старый 27.11.2012, 19:47   #18
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

Выносить-то чтобы можно было, сделать можно, но шашки нельзя "закрепить" за пределами поля в данной реализации (сами шашки хранятся в массиве, а на экране всего лишь рисуется перемещение шашки). Я специально ограничил передвижение шашки, чтобы избежать ошибок при выборе нового места для шашки.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 27.11.2012, 21:59   #19
вася радугов
Форумчанин
 
Регистрация: 09.04.2011
Сообщений: 134
По умолчанию

А как тогда сделать, чтобы шашка, которую срубили исчезла?
вася радугов вне форума Ответить с цитированием
Старый 27.11.2012, 22:08   #20
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

В массиве Pieces хранятся:
1 - отображаются как зеленые
0 - пустая клетка
2 - отображаются как красные

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

Кстати, при отрисовке шашки происходит:
Запоминание клетки, из которой взята шашка
Замена соответствующего элемента на 0
Отрисовка шашки там, где курсор
При отпускании высчитывание новой позиции в массиве и установка шашки

На самом деле, программа уже выглядит не так просто, хотя еще нужно очень много доделывать.
Например:
Реализовать движение шашки только по диагонали
Сделать проверку на возможность установки шашки
Реализовать "битье" шашки (еще более сложный вариант - битье нескольких шашек за один ход)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 27.11.2012 в 22:12.
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Возможно ли сделать мнемосхемы? fakel-v Компоненты Delphi 5 08.04.2014 11:35
Возможно ли сделать такое?... troyan32 Общие вопросы Delphi 9 08.04.2011 16:31
Возможно ли сделать? alex0097 Общие вопросы Delphi 3 14.07.2010 20:36
Найти расстановку восьми слонов на шахматной доске WhiteKuz Общие вопросы Delphi 1 30.04.2010 12:25