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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.02.2008, 17:31   #11
kolduev
Пользователь
 
Регистрация: 12.01.2008
Сообщений: 30
По умолчанию

to Dmitry
обясни плиз каким условием у тя проверяется, что можно двигать тока верхний блок и на какую позицию он должен встать !!
kolduev вне форума Ответить с цитированием
Старый 18.02.2008, 17:51   #12
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Работа пpогpаммиста и шамана имеет много общего - оба боpмочyт непонятные слова, совершают непонятные действия и не могут объяснить, как все это работает.
И чаще всего это не шутка, а сложная логика в программе.

Двигаем только верхний блок.
Они все пронумерованы, верхние на всех колышках имеют номер 1. Если номер блока не 1, то процедура не выполняется.
Код:
if M[k].ne = 1 then (Sender as TPanel).perform(WM_SysCommand,$F012,0)
  else exit;
Определяем на какой колышек насадить.
Если центр блока находится вблизи центра колышка А ±d, то насаживаем его на колышек А и т.д.
Код:
if abs(Left+round(Width/2)-xA) <= d then ...
_Dmitry вне форума Ответить с цитированием
Старый 18.02.2008, 18:04   #13
kolduev
Пользователь
 
Регистрация: 12.01.2008
Сообщений: 30
По умолчанию

непонял, всмысле пронумерованы единицей! если я расположу блоки например так: внизу 1, сверху 2, а потом 3, то по твоей проге смогу передвинуть тока 3-й! вот это хотел узнать как! и как определяется на какой уровень ставить блок, у тя какой то подсчёт ведйтся блоков на колышке?
kolduev вне форума Ответить с цитированием
Старый 18.02.2008, 18:10   #14
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

В программе введен массив M:
M[i].ns
M[i].ne
здесь i - номер блока (который написан на нем), ns - номер колышка на который насажен блок, ne - номер этого блока на колышке, считая с верху.
_Dmitry вне форума Ответить с цитированием
Старый 24.02.2008, 02:33   #15
kolduev
Пользователь
 
Регистрация: 12.01.2008
Сообщений: 30
По умолчанию

вот такая прога у мня получилась, прошу посматреть, попробовать разобраться, мож как упростить можно..... и мне надо ещё сделать демонстрацию, я хз как !!
Вложения
Тип файла: rar hanoi.rar (5.0 Кб, 29 просмотров)
kolduev вне форума Ответить с цитированием
Старый 24.02.2008, 08:38   #16
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

А где kyrs22? Без него не компилируется.
_Dmitry вне форума Ответить с цитированием
Старый 24.02.2008, 09:10   #17
KORT
Вот я и
Форумчанин
 
Аватар для KORT
 
Регистрация: 07.04.2007
Сообщений: 501
По умолчанию

Вот я изменил, теперь компилиься, там просто небыло формы о программе...
Вложения
Тип файла: rar hanoi.rar (15.6 Кб, 47 просмотров)
Исходники программ - http:\\www.kort.3dn.ru
KORT вне форума Ответить с цитированием
Старый 24.02.2008, 17:47   #18
kolduev
Пользователь
 
Регистрация: 12.01.2008
Сообщений: 30
По умолчанию

так! не забываем про эту тему!!
kolduev вне форума Ответить с цитированием
Старый 25.02.2008, 02:14   #19
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

и что, игра работает?
Просто у меня под Delphi5 выдаёт ошибку при попытке начать новую игру.
Конкретно на строчке:
p[i].Left:=(Panel2.Left+5)-StrToInt(FloatToStr(p[i].Width/2));
при попытке перевести в целое число 50.5 ...
а зачем такие фокусы с Float->Str, а потом Str->Integer?
разве не проще:
p[i].Left:= (Panel2.Left+5)- trunc(p[i].Width/2);

во время игры, при попытке перенести диск, ошибка с дробью уже возникает на операции:
IntToStr(StrToInt(
это для чего такой код? я, по своей недалёкости, так и не понял... ;-(

2) Крайне не понравилась сама реализация (TEditXX, обработка click'а отдельно для каждой панели).
Почему Вы не воспользовались решением, которое Вам предложил _Дмитрий (через массив записей М: M[i].ns M[i].ne) ???!!

хотя, похоже это только у меня такие косяки?...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.02.2008, 05:27   #20
kolduev
Пользователь
 
Регистрация: 12.01.2008
Сообщений: 30
По умолчанию

ну насчёт ошибок, то это тока у тебя похоже, такое решение, потому что я мало что понял из предложенного варианта Дмитрия, я в коммандах Делфи не особо селён, так что сделал так вы и видете кстати те три процедуры с панелями(колышками) надо будет действительно в одну переделать! но это всё фигня, главное прога работает, меня вот интересует как сделать демонстрацию?

Последний раз редактировалось kolduev; 25.02.2008 в 05:32.
kolduev вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
У кого практика? Пример отчета [Smarik] Свободное общение 10 21.06.2009 19:59
FRAPS - У кого есть??? PAVEL315 Софт 1 28.11.2007 05:32
QIP Dll's Описание у кого есть? LEKA Win Api 10 18.05.2007 08:55
Ошибки компиляции. У кого есть =*=|/|MM0PT@/\=*= Паскаль, Turbo Pascal, PascalABC.NET 4 02.04.2007 06:10
Есть ли у кого пример корпоративного стандарта программирования на C/C++? lexluther Общие вопросы C/C++ 6 01.02.2007 15:10