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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.06.2018, 05:30   #1
kobe1499
Новичок
Джуниор
 
Регистрация: 18.06.2018
Сообщений: 1
По умолчанию Игра на assembler 8086

Задали в университете написать игру на языке ассемблер 8086, работающую в DOSBox.72. Выбрал для себя простейший раннер. нарисовал рисунок, с остальным не могу разобраться, препод помогать не хочет. Помогите, кто чем может, пожалуйста.
Рисунок:
Код:
code segment
assume cs:code, ds:data
jumps
begin:
mov ax, data
mov ds,ax
mov ah,0Fh
int 10h
push ax
mov ax, 0013h
int 10h
;==========


mov ax, data
mov ds,ax
push ds



mov Rectangle_X1, 0
mov Rectangle_Y1, 0
mov Rectangle_X2, 320
mov Rectangle_Y2, 200
mov Rectangle_Color, 15
call Rectangle

mov Rectangle_X1, 0
mov Rectangle_Y1, 151
mov Rectangle_X2, 320
mov Rectangle_Y2, 165
mov Rectangle_Color, 2
call Rectangle

mov Rectangle_X1, 45
mov Rectangle_Y1, 140
mov Rectangle_X2, 55
mov Rectangle_Y2, 151
mov Rectangle_Color, 6
call Rectangle

mov FillCircle_X, 25
mov FillCircle_Y , 140
mov FillCircle_R, 10
mov FillCircle_Color,55
call FillCircle




mov ah,02h
mov bh, 0
mov dh, 23
mov dl, 22
int 10h


mov dx, offset fio
mov ah,9h
int 21h

;==========
mov ax,0
int 16h
pop ax
mov ah,0
int 10h
mov ax,4c00h
int 21h
;-------------------------------------------------------
FillCircle proc
push ax
push bx
push cx
push dx
push di
push si
push es
push FillCircle_R	

mov	ax,0A000h			;установка es
mov	es,ax				;на видеопамять

mov ax,FillCircle_R		;R*R
mul ax					;
mov dx,ax				;
	
push dx					;расчет di
inc FillCircle_R		;
mov ax,320				;
mov bx,FillCircle_Y		;
sub bx,FillCircle_R		;
mul bx					;
mov	cx,FillCircle_X		;
sub cx,FillCircle_R		;
add ax,cx				;
mov di,ax				;
pop dx					;

FillCircle_Draw:

push dx
mov	ax,cx				;x
sub	ax,FillCircle_X		;x-Xc
mul	ax					;(x-Xc)^2
mov	si,ax
mov	ax,bx				;y
sub	ax,FillCircle_Y		;y-Yc
mul	ax					;(y-Yc)^2
add	ax,si				;(x-Xc)^2 + (y-Yc)^2
pop dx

cmp	ax,dx	;ax > R*R ?
ja	FillCircle_Not_Draw	;если да
	
mov ah,FillCircle_Color
mov	es:[di],byte ptr ah	;вывод точки
	
FillCircle_Not_Draw:
inc	di
inc	cx

	
mov ax,FillCircle_X
add ax,FillCircle_R
cmp	cx,ax				;ограничение по Х
jne	FillCircle_Draw


mov	cx,FillCircle_X
sub cx,FillCircle_R

add di,320
sub di,FillCircle_R
sub di,FillCircle_R
inc	bx

mov ax,FillCircle_Y
add ax,FillCircle_R
cmp	bx,ax				;ограничение по Y
jl	FillCircle_Draw

pop FillCircle_R
pop es
pop si
pop di
pop dx
pop cx
pop bx
pop ax
ret
FillCircle endp
Rectangle proc
push ax
push bx
push cx
push dx
mov ah,0ch
mov bx,0
mov al,Rectangle_Color
mov cx,Rectangle_X1
mov dx,Rectangle_Y1
Rectangle_Label:
int 10h
inc cx
cmp cx, Rectangle_X2
jne Rectangle_Label
mov cx,Rectangle_X1
inc dx
cmp dx,Rectangle_Y2
jne Rectangle_Label
pop dx
pop cx
pop bx
pop ax
ret
Rectangle endp
code ends
data segment 
FillCircle_X dw 0 
FillCircle_Y dw 0 
FillCircle_R dw 0 
FillCircle_Color db 0 
Rectangle_X1 dw 0
Rectangle_Y1 dw 0
Rectangle_X2 dw 0
Rectangle_Y2 dw 0
Rectangle_Color db 0
fio db 'Circle Running$'
data ends
end begin
Нужно движение шара вперёд и перепрыгивание прямоугольников. Буду очень благодарен за помощь.(желательно ещё счетчик завести, но с этим попробую сам справится)


_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 18.06.2018 в 09:34.
kobe1499 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Assembler. Игра в слова Marusya293 Помощь студентам 3 16.01.2013 13:10
Игра на Assembler. Ошибки при компиляции BenderBrau Помощь студентам 0 29.10.2012 10:24
Assembler 8086 eleldar Фриланс 3 19.07.2012 16:32
Assembler 8086. Задача. hydr0 Фриланс 2 01.05.2011 10:57
Assembler.Игра "змейка". Пупкин Помощь студентам 0 27.05.2010 00:08