423,832 Members | 1,927 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 423,832 IT Pros & Developers. It's quick & easy.

I need to develop a game in assembler

P: 1
excuse me for my bad english, I'm from russia. I need to develop a game in assembler8086. I am student of KOMSOMOLSK-NA-AMURE STATE UNIVERSITY. I have a bad programming teacher. Can you help me with my problem? I drew a drawing for the game,but I can not go further. I need to implement the movement of the ball and its jumps through rectangles. Its easy game, but my teacher can*t help me. I need your help, please.

What I have tried:

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
Jun 18 '18 #1
Share this question for a faster answer!
Share on Google+

Post your reply

Sign in to post your reply or Sign up for a free account.