Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Пробую написать Тетрис! Помогите с алгоритмом! 
:(
    Опции темы
MacTep
Дата 20.2.2004, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

Репутация: 4
Всего: 4



Помогите, пожалуйста, с таким вопросом. Пишу тетрис: надо сделать так, чтобы во время падения фигуры пользователь мог ее еще и двигать. Подскажите, плиз, как сделать якобы "многозадачность" - и падение через какой-то период времени фигурки и возможность пользователя вмешаться в это падение. smile.gif


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
dm9
Дата 20.2.2004, 23:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 6
Всего: 137



Язык?
Если Delphi, то проще всего поставить таймер (думаю, ту занешь, как это делается) и через одинаковый промежуток времени помещать фигуру чуть вниз. И ловить клавиши. Что-то нажато - изменяем координаты и перерисовываем картинку.

Если BorlandPascal / TMTPascal etc., то тогда так:
Код
repeat
  repeat
     //Двигаем фигуру через одинаковые промежутки времени
  until KeyPressed;
  w := ReadKey;
  case w of
  ...
  end;
until false;


Можно подобным способом писать и в Delphi, но я не думаю, что ты настолько хорошо знаешь WinAPI.
PM MAIL ICQ   Вверх
MacTep
Дата 15.12.2006, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

Репутация: 4
Всего: 4



Вернулся снова к тетрису. Только теперь на Дельфи. 
По таймеру. smile Как по таймеру? Я ставлю, у меня получается, что за время таймера (допустим, за 1 секунду) фигура смещается. все гуд. smile Но вот и вращать ее и все остальное я могу только один раз за ту самую секунду.... Как сделать вращение независимым от времени сдвига фигуры на одну ступень вниз?


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
x77
Дата 15.12.2006, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



надо просто обрабатывать событие сразу, а не ждать таймера. я делал так:

Код

procedure TFormMain.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  case Key of
    VK_RETURN: begin
      sbPause.Down := FALSE;
      fTetris.Play;
    end;
    VK_SPACE: sbPause.Click;
    VK_LEFT: fTetris.FigureLeft;
    VK_RIGHT: fTetris.FigureRight;
    VK_DOWN: fTetris.Drop;
    VK_UP: fTetris.Rotate;
  end;
end;


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


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0410 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.