Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler
Регистрация

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

Ответ
 
Опции темы
Старый 23.01.2010, 17:36   #1
morgonXak
 
Регистрация: 16.12.2009
Сообщений: 7
Репутация: 10
Счастье графика на ассемблере

В центре экрана рисуется круг диаметром 16 пиксел. При нажиатии клавиш управления
курсором (стрелки вверх-вниз, вправо-влево) он передвигается со скоростью 3 пиксела на
нажатие. При достижении центром круга края экрана, движение в данном направлении
остановить.

у меня есть как нарисовать круг, я не знаю как его передвинуть на 3 пиксиля)))

помогите, буду признателен)))
зарание спасибо!!!!!
Если что исходник круга, прикрипил)))
в архиве код находится исходник но он не идет))
помогите)))))
Вложения
Тип файла: rar circle.rar (3.0 Кб, 49 просмотров)
Тип файла: rar код.rar (1.9 Кб, 23 просмотров)

Последний раз редактировалось morgonXak; 24.01.2010 в 15:36.
morgonXak вне форума   Ответить с цитированием
Старый 25.01.2010, 06:13   #2
Mikl___
Профессионал
 
Регистрация: 11.01.2010
Сообщений: 1,128
Репутация: 926
По умолчанию

morgonXak
анимация так не делается, каждый раз рассчитывать по-точечный вывод окружности, это не дело, ниже пример вывода "шагающего" человечка
Код:

.model tiny
.286
.code
org 100h
start:  MOV AH,0Fh ;запомнить видеорежим -- видеорежим может быть не обязательно равным 3
    INT 10h
    MOV byte ptr VIDEOR,AL; запоминаем видеорежим чтобы потом его востановить
    mov    ax,0A000h 
        mov    ES,ax
        MOV     AX,13h
        INT     10h
    cld
        MOV     BX,2 ; инициализируем индекс фаз рисунка
        MOV    DI,320*12
    mov cx,200; время на экране -- ставь любое число
MOVE_MASK: push cx
    MOV  SI,tab[bx]
SHOW_KADR: MOV  CX,13; количество строк в рисунке
DRAW_H: push    cx    
    MOV    CX,10 ; количество точек в строке делим на 2    
        REP MOVSW; выводим сразу по 2 точки
        ADD    DI,320-20; переходим на следующую строку
        pop    cx
    loop DRAW_H
    xor bx,2; переключаем идекс фазы рисунка
    sub di,320*13-1; 1 - плавность перемещения по экрану чем больше число - тем быстрее
    push bx
    mov ah,0    ;Получить системное время
    int 1Ah    ; Return: CX:DX=число тиков от полуночи 
    mov bx,dx  ;1 секунда=18.2 тика        
delay:    int 1Ah    ;пропускаем 55 милисекунды
    cmp bx,dx
    jz delay
    pop bx
    pop cx
    loop MOVE_MASK
exit:   MOV     AX,VIDEOR; восстанавливаем первоначальный режим
        INT     10h                 
        INT     20h; выход в DOS
H1    DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,0,0,0
      DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,0,0,0
      DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,0,0,0,0
      DB 0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,9,9,0,0,0
      DB 0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,9,9,9,0,0
      DB 0,0,0,0,0,0,0,0,0,0,0,9,9,0,9,9,0,9,9,0
      DB 0,0,0,0,0,0,0,0,0,0,9,9,0,0,9,9,0,0,9,9
      DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,0,0,0,0
      DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,0,0,0,0
      DB 0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,0,9,9,0,0
      DB 0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,0,9,9,0,0
      DB 0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,0,9,9,0,0
      DB 0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,0,9,9,0,0
     
H2    DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,0,0,0
      DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,0,0,0
      DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,0,0,0,0
      DB 0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,9,9,9,0,0
      DB 0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,9,9,9,0,0
      DB 0,0,0,0,0,0,0,0,0,0,0,0,9,0,9,9,9,9,0,0
      DB 0,0,0,0,0,0,0,0,0,0,0,0,9,0,9,9,9,9,0,0
      DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,0,0,0,0
      DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,9,0,0
      DB 0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,0,9,9,0,0
      DB 0,0,0,0,0,0,0,0,0,0,0,0,9,9,0,0,9,9,0,0
      DB 0,0,0,0,0,0,0,0,0,0,0,9,9,0,0,0,0,9,9,0
      DB 0,0,0,0,0,0,0,0,0,0,9,9,0,0,0,0,0,0,9,9
tab dw H1,H2; адреса фаз рисунков
VIDEOR dw 0
end    start

нарисуй матрицу с кругом в 16 пикселов и используй ее, только в твоем случае обрабатывать нужно не 1Ah прерывание, а 9 или 16h
Mikl___ вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Планировщик на ассемблере Spartiat Помощь студентам 0 04.06.2009 18:43
Вывод графика на ассемблере Foster Assembler 11 24.03.2009 01:32
Часики на Ассемблере -=Hellsing-= Assembler 7 07.02.2009 12:14


23:36.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru