Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помощь по Тетрису.

29K
04 июля 2008 года
Rifler
24 / / 12.05.2008
Доброго времени суток!
Значит задали написать Тетрис в графическом или текстовом режиме. Вот сижу потихоньку разбираюсь. Решил выбрать текстовый режим, думаю так будет легче. Вот что мне посоветовали. Цитата: "Для организации вывода "графики" без мерцания создаешь свой трехмерный массив 80x25x2 (кол-во символов по ширине, по высоте и 2 элемента под код символа и его цвет - так организован экран в DOS) который будет у тебя выступать невидимым буффером экрана в который ты будешь выводить всю "графику", потом этот буфер копируется одним вызовом memcpy (или как там в pascal) в адрес B800:0000."

У меня вопрос - что це таке memcpy (я так понял что сру - это от слова copy, а не русский эквивалент:):) ). Что за адрес - B800:0000? И что это делает?
274
04 июля 2008 года
Lone Wolf
1.3K / / 26.11.2006
b800:0000 - это адрес видео буфера. текстового.
грубо говоря, что ты туда запишеш то будет на экране.
29K
04 июля 2008 года
Rifler
24 / / 12.05.2008
Спасибо
Теперь такой вопрос. Вот что у меня получилось примерно такое :
Код:
while work=true do begin
       clrscr;
       if new then begin
          k:=random(1)+1; {тип фигуры, пока только одна}
          vvod(k);{вводим в массив}
                   end
          else begin
                change(k); {провека, можно ли двигать вниз, если нет -             new:=true}
                draw; {рисуем обновленный массив}
                end;
 ReadLn;{тут можно Delay поставить} end;

Пока сверху вылетает только квадратик из разных позиций, вроде все нормуль. Теперь думаю что след шаг - обработка клавиш сдвига Влево и Вправо(ну пусть например А и D).
Вопрос - как и где добавить обработку клавиш?? Помогите плиз
7.0K
04 июля 2008 года
Rusd
88 / / 26.08.2006
Ставишь delay, вместо ReadLn (для чего он там вообще?).
Где-нибудь внутри цикла while можно поставить Readkey - он определяет, нажата ли клавиша, и если да, то какая, без остановки приложения.
29K
04 июля 2008 года
Rifler
24 / / 12.05.2008
Цитата: Rusd
Ставишь delay, вместо ReadLn (для чего он там вообще?).
Где-нибудь внутри цикла while можно поставить Readkey - он определяет, нажата ли клавиша, и если да, то какая, без остановки приложения.


Нет, ReadKey как раз-таки останавливает приложение и ждет пока не нажмут клавишу. Тут что то другое нужно

29K
04 июля 2008 года
Rifler
24 / / 12.05.2008
А всё, разобрался
Если что, еще у вас поспрашиваю :)
7.0K
05 июля 2008 года
Rusd
88 / / 26.08.2006
Цитата: Rifler
А всё, разобрался
Если что, еще у вас поспрашиваю :)



Welcome.
Но только прежде чем задать вопрос, помни, что существует не только форум, но и литература, хотя бы по тому же паскалю.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог