Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Пишу игру...Нуждаюсь в помащи, возникли некоторые проблемы 
:(
    Опции темы
kasper8
Дата 4.4.2008, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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

PM MAIL   Вверх
Guitar_Player
Дата 5.4.2008, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 2.1.2007
Где: г.Новосибирск

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



Вы ЖЖГЁТЕ молодой человек! 

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

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

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


 




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


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

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