![]() |
|
![]() ![]() ![]() |
|
kasper8 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 4.4.2008 Репутация: нет Всего: нет |
Год учим асм в школе . Приближаеца врема сдачи финального проекта. В виде проекта я пишу игру, персонаж который будет двигаца в стороны ,прыгать и стрелять по мишеням.
Написал код движение в лево и право.... но при етом картинка персонажа оставалась головой и телов в правую сторону.Я для каждой стороны движение нарисовал двя картинки, тоесть если в лево идёт значит и голова с телом тоже в лево направлены. так вот правую картинку асм рисует а левую не хочет.... Картинка рисуеца с подпрограммы call_Pictur. Вылажываю код тово что есть,помагите найти ошибки и обяснить в чём проблемы. Опыта в написание крупных проектов или программ нет. кстате прыжок тоже неработает... один раз нажимаю и чтото непонятное происходит,он так и продолжает рисовать ети прыжки ( точьнее телепортирование персонажа) бесконца, а я пытался написать так чтоб была анимация прыжка в виде парабулы model small stack 100h ;---------Intro---------------------------------------- Play_col equ 45 Play_line equ 21 play_size equ 945 ;---------Pictuer of bond - Rigth----------------------- bond_col equ 23 ;size of columns bond_row equ 37 ;size of lines bond_size equ 851 ;number of pixels ;---------Pictur of bond - Left-------------------------- bond_col2 equ 23 ;size of columns bond_row2 equ 37 ;size of lines bond_size2 equ 851 ;number of pixels dataseg ;---------Cycle of jumping---------------------- jump_y_max db 50 jump_y_min db 30 ;---------Parametrs of Draw_Pic function-------- pic_col dw ? pic_row dw ? pic_size dw ? x dw ? y dw ? ;---------Intro---------------------------------------- Play_x dw 20 Play_y dw 50 Play db 000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000 db 054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054 db 055,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,054,055 db 055,055,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,055,055 db 055,055,000,000,041,041,041,041,042,042,042,042,000,000,069,069,000,000,000,000,000,000,000,000,040,040,040,040,040,000,000,000,000,068,068,000,000,000,000,041,040,000,000,055,055 db 055,055,000,000,041,041,041,041,042,042,042,042,000,000,014,014,000,000,000,000,000,000,000,000,040,041,000,041,040,000,000,000,000,069,069,000,000,000,000,041,040,000,000,055,055 db 055,055,000,000,042,042,000,000,000,000,043,043,000,000,014,014,000,000,000,000,000,000,000,040,041,041,000,041,041,040,000,000,000,014,014,000,000,000,000,041,040,000,000,055,055 db 055,055,000,000,042,042,000,000,000,000,043,043,000,000,044,044,000,000,000,000,000,000,000,040,041,000,000,000,041,040,000,000,000,014,014,000,000,000,000,041,040,000,000,055,055 db 055,055,000,000,042,042,000,000,000,000,043,043,000,000,044,044,000,000,000,000,000,000,000,041,041,000,000,000,041,040,000,000,000,043,043,000,000,000,000,041,040,000,000,055,055 db 055,055,000,000,043,043,043,043,043,043,043,043,000,000,043,043,000,000,000,000,000,000,041,041,041,000,000,000,041,041,041,000,000,043,043,042,042,041,041,041,040,000,000,055,055 db 055,055,000,000,043,043,043,043,043,043,043,043,000,000,043,043,000,000,000,000,000,000,042,042,042,042,042,042,042,042,042,000,000,000,043,042,042,041,041,041,040,000,000,055,055 db 055,055,000,000,043,043,000,000,000,000,000,000,000,000,042,042,000,000,000,000,000,000,042,042,042,042,042,042,042,042,042,000,000,000,000,000,000,000,000,041,040,000,000,055,055 db 055,055,000,000,044,044,000,000,000,000,000,000,000,000,042,042,000,000,000,000,000,000,043,043,000,000,000,000,000,043,043,000,000,000,000,000,000,000,000,041,041,000,000,055,055 db 055,055,000,000,044,044,000,000,000,000,000,000,000,000,042,042,000,000,000,000,000,000,043,043,000,000,000,000,000,043,043,000,000,000,000,000,000,000,000,041,040,000,000,055,055 db 055,055,000,000,044,044,000,000,000,000,000,000,000,000,041,041,000,000,000,000,000,000,044,044,000,000,000,000,000,044,044,000,000,000,000,000,000,000,000,041,040,000,000,055,055 db 055,055,000,000,014,014,000,000,000,000,000,000,000,000,041,041,000,000,000,000,000,000,044,044,000,000,000,000,000,044,044,000,000,000,000,000,000,000,000,041,040,000,000,055,055 db 055,055,000,000,014,014,000,000,000,000,000,000,000,000,041,041,041,041,041,041,041,000,069,069,000,000,000,000,000,069,069,000,000,069,014,043,042,041,041,040,040,000,000,055,055 db 055,055,000,014,014,014,014,000,000,000,000,000,000,000,040,040,040,040,040,040,040,000,069,069,000,000,000,000,000,069,069,000,000,069,014,043,042,041,041,040,000,000,000,055,055 db 055,055,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,055,055 db 055,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,055 db 001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001 ;---------Pictuer of bond - Rigth---------------------- Bond_x dw 10 Bond_y dw 148 james db 000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000 db 000,000,000,000,000,000,000,000,000,249,000,000,000,000,000,000,000,000,000,000,000,000,000 db 000,000,000,000,000,000,000,000,113,113,113,113,249,000,000,000,000,000,000,000,000,000,000 db 000,000,000,000,000,000,000,113,113,113,113,113,113,249,000,000,000,000,000,000,000,000,000 db 000,000,000,000,000,000,113,113,113,113,113,113,090,000,000,000,000,000,000,000,000,000,000 db 000,000,000,000,000,000,113,113,113,113,113,090,090,090,000,000,000,000,000,000,000,000,000 db 000,000,000,000,000,000,249,113,113,113,093,090,090,090,000,000,000,000,000,000,000,000,000 db 000,000,000,000,000,000,249,249,113,090,090,090,090,000,000,000,000,000,000,000,000,000,000 db 000,000,000,000,000,000,000,249,090,090,090,249,249,000,000,000,000,000,000,000,000,000,000 db 000,000,000,000,000,020,020,025,025,025,026,025,021,021,000,000,000,000,000,000,000,000,000 db 000,000,000,000,020,020,020,021,025,025,025,021,020,020,020,021,000,000,000,000,000,000,000 db 000,000,000,020,020,020,020,020,021,025,021,020,020,020,020,020,021,000,000,000,000,000,000 db 000,000,020,020,020,249,020,020,020,021,020,020,020,020,249,020,020,021,000,000,000,000,000 db 000,000,020,020,249,000,020,020,020,020,020,020,020,020,000,249,020,021,249,000,000,000,000 db 000,000,020,020,249,000,020,020,020,020,020,020,020,020,000,249,020,021,021,000,000,000,000 db 000,000,020,020,249,000,020,020,020,020,020,020,020,020,000,249,249,020,021,000,000,000,000 db 000,000,020,020,249,000,020,020,020,020,020,020,020,020,249,249,249,020,021,020,000,000,000 db 000,000,020,020,249,000,020,020,020,020,020,020,020,020,249,249,249,249,020,020,000,000,000 db 000,000,020,020,249,000,020,020,020,020,020,020,020,020,249,249,249,249,020,020,000,000,000 db 000,000,020,020,249,249,020,020,020,020,020,020,020,020,020,000,000,249,020,020,000,000,000 db 000,000,020,020,000,000,023,023,023,023,022,022,023,023,023,022,000,249,020,020,000,000,000 db 000,000,090,090,186,000,023,023,022,022,022,249,023,022,023,023,022,000,090,090,000,000,000 db 000,000,186,249,000,000,022,022,022,022,022,249,249,022,023,023,022,000,000,090,000,000,000 db 000,000,186,249,000,000,022,022,022,022,249,249,249,249,023,023,023,022,000,000,000,000,000 db 000,000,186,000,000,000,022,022,022,022,249,249,249,249,023,023,023,022,000,000,000,000,000 db 000,000,186,000,000,000,022,022,022,022,249,249,249,249,249,023,023,023,022,000,000,000,000 db 000,000,000,000,000,000,022,022,022,022,249,249,249,249,249,023,023,023,022,000,000,000,000 db 000,000,000,000,000,000,022,022,022,022,249,249,249,249,249,000,023,023,023,022,000,000,000 db 000,000,000,000,000,000,022,022,022,022,249,249,249,249,249,000,022,023,023,022,000,000,000 db 000,000,000,000,000,000,022,022,022,022,249,249,249,249,249,000,249,023,023,022,000,000,000 db 000,000,000,000,000,000,022,022,022,022,249,249,249,249,249,000,000,022,022,022,000,000,000 db 000,000,000,000,000,000,022,022,022,022,249,249,249,249,000,000,000,022,022,022,249,000,000 db 000,000,000,000,000,000,000,022,022,022,249,249,249,249,249,249,249,022,022,022,000,000,000 db 000,000,000,000,000,000,000,186,186,186,249,249,249,249,000,000,000,186,186,186,000,000,000 db 000,000,000,000,000,000,000,000,186,186,186,000,000,000,000,000,000,249,186,186,186,186,000 db 000,000,000,000,000,000,000,000,249,249,249,000,000,000,000,000,000,000,000,000,000,000,000 db 000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000 james2 db 000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000 db 000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000 db 000,000,000,000,000,000,000,000,000,000,113,113,113,113,000,000,000,000,000,000,000,000,000 db 000,000,000,000,000,000,000,000,000,113,113,113,113,113,113,000,000,000,000,000,000,000,000 db 000,000,000,000,000,000,000,000,000,056,113,113,113,113,113,113,000,000,000,000,000,000,000 db 000,000,000,000,000,000,000,000,090,090,090,113,113,113,113,113,000,000,000,000,000,000,000 db 000,000,000,000,000,000,000,000,090,090,090,115,113,113,113,000,000,000,000,000,000,000,000 db 000,000,000,000,000,000,000,000,000,090,090,090,090,113,000,000,000,000,000,000,000,000,000 db 000,000,000,000,000,000,000,000,000,000,000,090,090,090,000,000,000,000,000,000,000,000,000 db 000,000,000,000,000,000,000,000,022,022,025,025,025,025,025,021,021,000,000,000,000,000,000 db 000,000,000,000,000,000,022,022,020,020,022,025,025,025,022,020,021,021,000,000,000,000,000 db 000,000,000,000,000,022,022,022,019,020,020,022,025,022,020,020,021,021,021,000,000,000,000 db 000,000,000,000,022,022,022,000,019,020,020,021,022,018,018,020,000,021,021,021,000,000,000 db 000,000,000,000,022,022,000,000,019,020,020,020,021,018,018,020,000,000,021,021,000,000,000 db 000,000,000,022,022,022,000,000,019,020,020,020,020,020,020,020,000,000,021,021,000,000,000 db 000,000,000,022,022,000,000,000,019,020,020,020,020,020,020,020,000,000,021,021,000,000,000 db 000,000,022,022,022,000,000,000,019,020,020,020,020,020,020,020,000,000,021,021,000,000,000 db 000,000,021,021,000,000,000,000,019,020,020,020,020,020,020,020,000,000,021,021,000,000,000 db 000,000,021,021,000,000,000,000,019,020,020,020,020,020,020,020,000,000,021,021,000,000,000 db 000,000,021,021,000,000,000,019,019,020,020,020,020,020,020,020,000,000,021,021,000,000,000 db 000,000,021,021,000,000,021,022,022,022,022,023,023,022,022,022,000,000,021,021,000,000,000 db 000,000,090,090,000,021,021,022,022,022,000,023,023,023,022,022,000,186,090,090,000,000,000 db 000,000,090,000,000,021,022,022,022,000,000,000,023,023,022,022,000,000,000,186,000,000,000 db 000,000,000,000,021,022,022,022,000,000,000,000,023,023,023,022,000,000,000,186,000,000,000 db 000,000,000,000,021,022,022,022,000,000,000,000,023,023,022,022,000,000,000,186,000,000,000 db 000,000,000,021,021,022,022,000,000,000,000,000,023,023,023,022,000,000,000,186,000,000,000 db 000,000,000,021,022,022,022,000,000,000,000,000,023,023,023,023,000,000,000,000,000,000,000 db 000,000,021,022,022,022,000,000,000,000,000,000,023,023,023,021,000,000,000,000,000,000,000 db 000,000,021,022,022,022,000,000,000,000,000,000,023,023,023,021,000,000,000,000,000,000,000 db 000,000,021,022,022,000,000,000,000,000,000,000,023,023,023,021,000,000,000,000,000,000,000 db 000,000,021,022,022,000,000,000,000,000,000,000,023,023,023,021,000,000,000,000,000,000,000 db 000,000,021,022,022,000,000,000,000,000,000,000,023,023,023,021,000,000,000,000,000,000,000 db 000,000,022,022,022,000,000,000,000,000,000,000,023,023,023,000,000,000,000,000,000,000,000 db 000,000,186,186,186,000,000,000,000,000,000,000,186,186,186,000,000,000,000,000,000,000,000 db 000,186,186,186,000,000,000,000,000,000,000,186,186,186,000,000,000,000,000,000,000,000,000 db 000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000 db 000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000 codeseg ;--------------------Start of program--------------- start: mov ax, @data mov ds,ax mov ax,13h ;\ Graphics mod int 10h ;/ call bios service ;---------------------INTRO----------------------------- Button_Play: mov bx,[play_x] ;рисует кнопку играть а потом долен перейти на управление персонажем mov x,bx mov bx,[play_y] mov y,bx mov bx,play_size mov pic_size,bx mov bx,play_col mov pic_col,bx xor bx,bx lea bx,play call draw_pic jmp Rigth ;-------------------Main cycle--------------------- Rigth: mov bx,[bond_x] ;\ x (parametr of Draw_pic function) mov x,bx ;/ x <- x position of bond's pictuer mov bx,[bond_y] ;\ y (parametr of Draw_pic function) mov y,bx ;/ y <- y position of bond's pictuer mov bx,bond_size ;\ pic_size (parametr of Draw_pic function) mov pic_size,bx ;/ pic_size <- size of bond's pictuer mov bx,bond_col ;\ pic_col (parametr of Draw_pic function) mov pic_col,bx ;/ pic_col <- columns of bond's pictuer xor bx,bx ;Restart bx lea bx,james ;bx <- index of first pixel call Draw_pic ;call function of pictuer's draw jmp read_key Lef: mov bx,[bond_x] ;\ x (parametr of Draw_pic function) mov x,bx ;/ x <- x position of bond's pictuer mov bx,[bond_y] ;\ y (parametr of Draw_pic function) mov y,bx ;/ y <- y position of bond's pictuer mov bx,bond_size ;\ pic_size (parametr of Draw_pic function) mov pic_size,bx ;/ pic_size <- size of bond's pictuer mov bx,bond_col ;\ pic_col (parametr of Draw_pic function) mov pic_col,bx ;/ pic_col <- columns of bond's pictuer xor bx,bx ;Restart bx mov bx,Offset james2 ;bx <- index of first pixel call Draw_pic jmp read_key Read_key: mov ah,0 int 16h key_left: cmp ah,75 ; Left jne key_Right dec [bond_x] jmp Lef key_Right: cmp ah,77 ; Right jne Jump inc [bond_x] jmp Rigth Jump: cmp ah,57 ;Jump (a) jne Read_key ;jump to end of function DNP: call draw_cycle ;Draw new position dec bond_y dec [jump_y_max] jnz DNP jmp Read_key ;-------------------------------------------------- xor ax,ax ;\ function 00h - get a key int 16h ;/ call BIOS service mov ax,3 ;\ text mode int 10h ;/ call BIOS service mov ax,4C00h ;\ exit to DOS int 21h ;/ call DOS service ;------------------Draw pictur---------------------- Draw_Pic: xor si,si ; si counting pixels in some line mov di,[x] mov ah,0ch draw: mov cx,[x] ; get x position mov dx,[y] ; get y position mov al,[bx] ; color of some pictuer's pixel int 10h ; call BIOS service inc si ; get current place on col inc [x] cmp bx,pic_size ;check array boundries jae EOP ;if equal or big jump to EOP inc bx ;next array's number (color) cmp si,pic_col ;check if y needs to grow jb draw ;\ if si below then size of array's line ;/ jump to draw new pixel in pictuer's line line: inc [y] ;if si big then column's size,go to new line xor si,si ;restart line's count mov [x],di ; start x count jmp draw ;return to draw new line EOP: ret ;EOP=End of pictuer,end of function ;---------------------Jumping cycle------------------------- draw_cycle: mov ah,0ch xor si,si lea bx,james ;bx <- index of first pixel mov di,[bond_x] l1: mov cx,[bond_x] ; get x position mov dx,[bond_y] ; get y position mov al,[bx] ; color of some pictuer's pixel int 10h ; call BIOS service inc si ; get current place on col inc [bond_x] cmp bx,bond_size ;check array boundries jae EOJF ;if equal or big jump to EOJP inc bx ;next array's number (color) cmp si,bond_col ;check if y needs to grow jb l1 ;\ if si below then size of array's line ;/ jump to draw new pixel in pictuer's line inc [bond_y] ;if si big then column's size,go to new line xor si,si ;restart line's count mov [bond_x],di ; start x count jmp l1 ;return to draw new line EOJF: ret ;End of jumping function end start |
|||
|
||||
Guitar_Player |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 86 Регистрация: 2.1.2007 Где: г.Новосибирск Репутация: нет Всего: нет |
Вы ЖЖГЁТЕ молодой человек!
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Asm для начинающих" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Asm для начинающих | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |