Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
 Аватар для NikoX_93
10 / 10 / 0
Регистрация: 22.11.2011
Сообщений: 85
Записей в блоге: 1

Шашки

20.11.2012, 15:44. Показов 2869. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
На пространстве формы изображена шахматная доска. Шашка красного цвета движется по периметру доски по часовой стрелке с дискретом 0.8 сек. Запуск движения – команда главного меню, остановка – кнопка «Пуск», что приводит к установке шашки на левую верхнюю клетку. Что писать в таймере?
P.S: Через if, если можно
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.11.2012, 15:44
Ответы с готовыми решениями:

Шашки
Нужно разработать программу "Шашечные этюды", т.е есть шашечное поле(image) и на нем нужно разместить шашки(я сделал тоже Image'ами)....

Шашки
Кто может поделится исходником шашек? Заранее спасибо.

Перемещение шашки
Не получается прописать функцию перемещения шашки,пишу в FormMouseMove, но может надо создавать отдельную функцию? и еще нужна функция для...

9
return (true);
 Аватар для mimicria
1977 / 1112 / 221
Регистрация: 19.04.2011
Сообщений: 2,346
20.11.2012, 16:06
C++
1
2
3
4
5
6
7
8
9
OnTimer(...)
{
 // движение шашки
}
ButtonPuskClick(...)
{
 Timer->Enabled=false;
 // установка шашки на клетку
}
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
20.11.2012, 16:12
1. в таймере писать движение шашки
2. if при этом не нужен
0
 Аватар для NikoX_93
10 / 10 / 0
Регистрация: 22.11.2011
Сообщений: 85
Записей в блоге: 1
20.11.2012, 16:20  [ТС]
Меня никто не понял.
Предположим у меня шашка - это некоторая фигура Shape, двигающаяся по координатам. Шашка начинает двигаться с левого верхнего угла. Двигается вправо. Доходя до края доски (тут и нужен if), шашка спускается вниз. И т.д
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
20.11.2012, 16:23
NikoX_93, все вас поняли, просто писать вам код - типа, движение картинки, - примеров которого на форуме немеряно, никто не хочет.
0
 Аватар для NikoX_93
10 / 10 / 0
Регистрация: 22.11.2011
Сообщений: 85
Записей в блоге: 1
20.11.2012, 20:36  [ТС]
Внешний вид:

Shape от 1 до 64 - клетки. 65 - сама шашка.
Сделал в OnTimer:
C++
1
2
3
4
5
6
7
8
if(Shape65->Left != 464 && Shape65->Top == 16)
Shape65->Left = Shape65->Left + 64;
if(Shape65->Left == 464 && Shape65->Top != 464)
Shape65->Top = Shape65->Top + 64;
if(Shape65->Left != 16 && Shape65->Top == 464)
Shape65->Left = Shape65->Left - 64;
if(Shape65->Left == 16 && Shape65->Top != 16)
Shape65->Top = Shape65->Top - 64;
Всё работает, НО!:
угловые квадраты перескакивает, кроме одного - левого верхнего. В чём ошибка
0
 Аватар для NikoX_93
10 / 10 / 0
Регистрация: 22.11.2011
Сообщений: 85
Записей в блоге: 1
21.11.2012, 21:39  [ТС]
Всё. Сделал через счётчик. Куда лучше, чем с координатами в условиях мучаться
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
22.11.2012, 01:01
NikoX_93, сделал - покажите, как делал, может бытполезно другим участникам.
0
 Аватар для NikoX_93
10 / 10 / 0
Регистрация: 22.11.2011
Сообщений: 85
Записей в блоге: 1
22.11.2012, 07:19  [ТС]
1)Задал глоб. переменную:
C++
1
static int k=0;
где k - сам счётчик
2)В кнопке "Пуск". В событии "OnClick"
C++
1
2
3
k=0;
Shape65->Top = 16;
Shape65->Left = 16;
Т.е возвращает шашку в левый верхний угол и движение начинается заново
3)В таймере прописываю движение:
C++
1
2
3
4
5
6
7
8
9
10
11
m1:k++;
Label1->Caption = IntToStr(k);
if(k<8) Shape65->Left = Shape65->Left + 64;
if(k>=8 && k<15) Shape65->Top = Shape65->Top + 64;
if(k>=15 && k<22) Shape65->Left = Shape65->Left - 64;
if(k>=22 && k<29) Shape65->Top = Shape65->Top - 64;
if(k>=29)
        {
        k=0;
        goto m1;
        }
В Label1 отражается сам счётчик
P.S: Может что-то и лишнее в условиях написал, но всё работает
2
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
22.11.2012, 12:12
в таких случаях лучше начинать анализ с бОльших величин (и чтобы от goto уйти ).
Для таймера можно так__
C++
1
2
3
4
5
6
 if(++k>28) k=0;
 if(k>21 && k<29) Shape65->Top  -= 64;
 if(k>14 && k<22) Shape65->Left -= 64;
 if(k>7 && k<15)  Shape65->Top  += 64;
 if(k<8 && k>-1)  Shape65->Left += 64;
 Label1->Caption = IntToStr(k);
Добавлено через 45 минут
P.S. .. или даже так (для логики понятней; и у меня "пунктик" есть, - если можно избежать анализа, я это делаю; а в верхнем примере ошибка у меня: k=1 в первой строчке):__
C++
1
2
3
4
 static int k=0;
 TPoint P[4] = { Point(64,0),Point(0,64),Point(-64,0),Point(0,-64) };
 Shape65->Left += P[(k/7)%4].x; Shape65->Top += P[(k/7)%4].y;
 Label1->Caption = IntToStr(++k);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.11.2012, 12:12
Помогаю со студенческими работами здесь

Шашки в RAD Studio
Подготовка работы для курсовой на тему &quot;шашки&quot; (против бота ). Нужно реализовать меняемую сложность и возможность выбирать фон, варианты...

Проект "Шашки" - добавить функцию автосохранения
Привет всем,кто тут! Нужен Ваш Help. Есть готовая программа - шашки. Проблема в том,как в ней сделать автосохранение после каждого хода и...

Подсобите исходником игры "Шашки"
Здравствуйте...может у кого есть исходник игры шашки на c++ builder.

Создать программу "Шашки"
нужно создать&quot;Шашки&quot; на С++

Шашки
Вкратце опишу суть проблемы. Препод задал лабу делать что-то на подобии шашек. Только само задание состоит в том что, на доске появляется...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru