Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изучаю Асм на примере игр 
:(
    Опции темы
Xshot1
Дата 11.9.2009, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Занялся изучением асм под dos. Немного поднадоело копаться в учебных резидентах, решил попробовать сделать простенькие игрушки на Асме под dos. Я думаю все знают японскую игрульку "сокобан", так вот.... Вопрос в следующем- как реализовывается "толкание" ящика в данной игрульке. Допустим есть сам "грузчик" по адресу ...... ,  и есть "ящик" по другому адресу.....  
 Когда мы подошли к "ящику" вплотную, как обьяснить ПС что мы собираемся толкать данный байт в опрделённом направлении, а не затирать его символом "грузчика". Как реализовать такой алгоритм и какими командами. Логически, я так думаю, мы должны проверить находится ли "ящик" впереди,сзади,вверху или внизу, и если он находится по ходу движения нашего "грузчика", то  по нажатию клавиши движения, ПС должен перерисовать данные байты ("ящика" и "грузчика")  по новому адресу. Но как это реализовать программно и главное правильно...
 Работаю в текстовом режиме, пока удалось создать рабочий периметр, спрятал курсор, сделал передвижение смайлика "грузчика" по экрану при помощи клавиш управления, вывел тестовый символ "ящика". 
П.С. программирование раньше не занимался, знания асма по урокам Калашникова, Зубкова, Пирогова,Абеля (читаю).. Прошу помочь.... Далее по полному завршению в текстовом режиме игры, буду пробовать реализовать графический.
и есчо один вопросик... как то в сети видел сайт буржуйский с рисунками персонажей из игр для создания покадровой анимации. Может у кого нибудь есть ссылочка, никак не могу найти...
 smile    smile    smile 

Это сообщение отредактировал(а) Xshot1 - 11.9.2009, 21:30
PM MAIL   Вверх
Mikl_
Дата 14.9.2009, 03:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Xshot1, анимацию в текстовом режиме? Смешно -- вот здесь пример анимированного движужегося человечка под DOS -- изучай создание графических приложений, вывод спрайтов на экран, gif-анимацию, проигрыш музыки и т.д. Сразу предупреждаю -- придется переходить на С/С++ или на любой другой ЯВУ, а на ассемблере делать только вставки 

Это сообщение отредактировал(а) Mikl_ - 14.9.2009, 03:58
PM MAIL   Вверх
Xshot1
Дата 15.9.2009, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



спасибо, понял
Игрульку написал, 2 уровня сделал, мало но всё же первая игрушка  smile 
PM MAIL   Вверх
Xshot1
Дата 20.9.2009, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Возник такой вопрос. Как в текстовом режиме заменить стандартный символ "А" на произвольный символ, созданный пользователем?
Допустим есть битовая карта символа к которой идёт обращение и дальнейшая отрисовка символа, а как сделать чтобы отрисовка происходила по моей карте и уже мой символ выводился на экран?
Идея вот в чём. Запускаешь файл, на экране появляется рамка, не из стандартных символов, а из символов которые я перерисовал.
если кто знает помогите,можно какой-нибудь примерчик.

PM MAIL   Вверх
Ипатьев
Дата 20.9.2009, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



для вдохновения smile

Присоединённый файл ( Кол-во скачиваний: 28 )
Присоединённый файл  PUSHER.rar 7,88 Kb
PM MAIL   Вверх
Xshot1
Дата 21.9.2009, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



спасибо, у меня точно также, только com и уровни взяты с тел. сименс а52  smile 

Это сообщение отредактировал(а) Xshot1 - 21.9.2009, 18:54
PM MAIL   Вверх
Ипатьев
Дата 21.9.2009, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



ну тогда http://www.kiarchive.ru/pub/msdos/games/pl...ic/pusher.tar.Z
тут, как я понимаю, ответы на все вопросы есть
PM MAIL   Вверх
Xshot1
Дата 26.9.2009, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Суть такая, написать вывод символа минуя int и таблицу векторов прерывания
есть такой код
Код

CSEG segment 
org 100h
begin:

JMP  over_data           ; перепрыгнем через данные
              ;
              ;
saved_int10:  DD   0                   ; данные (хранилище для адреса INT 10h
              ;                        ;   -- 2 слова)
              ;
over_data:    XOR  DX,DX               ; DX = 0
              MOV  DS,DX               ; DS = 0
              ;
              ;--сохраняем в хранилище адрес исходн. п/п-мы INT 10h (2 слова)-¬
              ;                                    ;                          ¦
              MOV  AX,DS:[10h*4]                   ;мы указываем лишь порядко-¦
              MOV  word ptr CS:[saved_int10  ],AX  ;вый номер прерывания      ¦
              MOV  AX,DS:[10h*4+2]                 ;                          ¦
              MOV  word ptr CS:[saved_int10+2],AX  ;                          ¦
              ;----------------------------------------------------------------
              ;
              ;--запасаем в стеке информацию, необходимую для автоматического-¬
              ;         возврата  из п/п-мы обработки прерыв-я                ¦
              ;                                    ;                          ¦
              PUSHF                                ;                          ¦
              PUSH CS                              ;                          ¦
              MOV  BX,OFFSET after_int             ;---¬  засунуть в стек     ¦
              PUSH BX                              ;---+- IP точки возврата   ¦
              ;----------------------------------------------------------------
              ;
              ;
              MOV  AH,0Eh                     ;входные параметры
              MOV  AL,61h                     ;  прерыв-я 10h (печатать 'a')
              ;
              JMP  dword ptr CS:[saved_int10] ;длин. джамп по адресу, котор. на-
              ;                               ; ходится теперь в хранилище
after_int:    ;                               ;   saved_int10
              ;
              RET                             ;закончить программу и вывалиться
              ;                               ;  в DOS
              ;

cseg ends
end begin


так вот почему то не происходит правильный переход по
Код

JMP  dword ptr CS:[saved_int10]


хотя в "saved_int10" лежит адрес int 10 (в памяти, при cs=0700 и смещением "saved_int10" лежит DD такое же как при ds=0000 : 0040h (int10))
при трассировки кода доходит до 
Код

saved_int10:  DD   0 

и всё, прога вылетает
помогите плз.

PM MAIL   Вверх
Goodwin98
Дата 26.9.2009, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 1.7.2009
Где: Deeptown

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



А у меня работает.

PM MAIL ICQ   Вверх
Xshot1
Дата 26.9.2009, 23:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Goodwin98,  ясно значит у меня проблемы с компиляцией, пробовал и masm-ом и эмулятором EMU8086. Подскажите чем собирали и каким способом.
PM MAIL   Вверх
Goodwin98
Дата 26.9.2009, 23:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 1.7.2009
Где: Deeptown

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



Собирал я масмом. В коде ничего особенно не менял, только строчку 
Код

cseg segment 'CODE'

и в 
Код

saved_int10:  DD   0

двоеточие убрал.
PM MAIL ICQ   Вверх
Xshot1
Дата 27.9.2009, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Goodwin98, спасибо. По запарке двоеточие впихнул.. Долго над примером голову ломал  и пропустил
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

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

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


 




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


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

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