1 / 16

動畫程式 撰寫流程與範例

動畫程式 撰寫流程與範例. 動畫程式待處理問題 (1). 定義分析問題 以文字模式產生8*8之行人原地蹋步動畫 功能分項列表 動畫分解動作分析, 1~ N 張分解動作 8*8 點圖型之產生與顯示 動畫分解動作之控制 動畫(4) 顯示位置 與軌跡( 原地踏步故無移動軌跡 ). 問題分類. 概念與資料部份 處理功能 流程規劃. 動畫程式待處理問題 (2). 動畫分解動作分析, 1~ N 張分解動作 8*8 點圖型之產生與顯示 圖案資料 ,(1) 顯示輸出 動畫分解動作之控制 圖片(2) 轉換與顯示 (1~ N 依序), (3) 動作速度控制

nash
Download Presentation

動畫程式 撰寫流程與範例

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 動畫程式撰寫流程與範例

  2. 動畫程式待處理問題(1) • 定義分析問題 • 以文字模式產生8*8之行人原地蹋步動畫 • 功能分項列表 • 動畫分解動作分析, 1~N張分解動作 • 8*8點圖型之產生與顯示 • 動畫分解動作之控制 • 動畫(4)顯示位置與軌跡(原地踏步故無移動軌跡)

  3. 問題分類 概念與資料部份 處理功能 流程規劃 動畫程式待處理問題(2) • 動畫分解動作分析, 1~N張分解動作 • 8*8點圖型之產生與顯示 • 圖案資料,(1)顯示輸出 • 動畫分解動作之控制 • 圖片(2)轉換與顯示(1~N依序), (3)動作速度控制 • 動畫模式: 循環1~N~1~N…, 一次1~N • 動畫(4)顯示位置與軌跡(原地踏步故無移動軌跡)

  4. 範例:動畫模式 一次1~N程式流程規劃 開始 (4)設定顯示位置 圖形資料設定 設定顯示圖片I=1 (1)顯示圖片I (2)切換下一張圖片 I=I+1 是最後一張? (3)顯示速度控制 end

  5. 分析功能(1)顯示圖片 • 文字模式產生8*8圖形, 於特定位置顯示 • 如何顯示符號? 以字串顯示一次8字元 • 如何定位? 定義顯示位址座標X,Y, 使用GOTOXY • 圖形資料如何設定呢? 以8行8字元字串設定 根據上述設定撰寫display副程式

  6. 分析功能(2)圖片轉換 • 8*8圖形轉換 • 如何清除舊圖案? 在原位置顯示8*8空白鍵(space)資料 • 如何讀取新圖案資料? 透過連續定義之資料區每一圖片為8*(8+1(字串結束0))=72 之長度, 每改一次分解動作圖片位置加72 • 顯示位置(是否改變)? 根據座標X,Y顯示

  7. 分析功能(3)動作速度控制 • 分解動作之速度控制 • 動作速率=圖片切換速率 每次切換圖片, 會有圖片移動之感覺(圖形有變動) 於顯示後 延遲 數 ms, 再顯示下一圖形 • 如何計時? 使用delay,延遲 數 ms

  8. 分析功能(4)顯示位置與軌跡 • 動畫之顯示位置與軌跡 • 顯示位置之設定 改變位址座標X,Y • 軌跡隨時間改變之軌跡 根據移動之軌跡公式計算X,Y座標, (本範例以直線計算)

  9. 程式功能加強與改進 • 完整程式 movie.asm • 上述程式有那些待改進? • 可再加強擴充何功能?

  10. 如何顯示符號 .data pattern byte " **** ",0 byte " ** ",0 byte " ** ",0 byte " * ** ",0 byte " ** ** ",0 byte " *** ",0 byte " ** * ",0 byte "* * ",0 .code mov edx, offset pattern call writestring

  11. Display 副程式 ; eax 為顯示圖形之偏 ; 移位址 mov edx, eax call WriteString add eax,9 loop d2 popad ret display ENDP display PROC pushad ; mov ECX, 8 d2: mov dh,y ;x mov dl,x ;y add dh,8 sub dh,cl call gotoxy

  12. 如何清除舊圖案 ; cp 為“ ”,0 mov edx, offset cp call WriteString add eax,9 loop d2 popad ret clear_p ENDP clear_p PROC pushad ; mov ECX, 8 d1: mov dh,y ;x mov dl,x ;y add dh,8 sub dh,cl call gotoxy

  13. 如何讀取新圖案資料 add ebx, 8*9 ;下一張圖位置在ebx+72 mov eax, ebx call display

  14. 動作速率=圖片切換速率 mov eax, D_time ; control display rate (3) call delay

  15. 顯示位置與軌跡 mov al, x inc al ; 每次向左移一格 mov x,al cmp al,65 ; 銀幕最左邊 jne _s2 mov al,10 ; 銀幕最右邊 mov x,al _s2:

  16. TITLE (.asm) ; This program ; Last update: ; Include Irvine32.inc .data cp byte 8 DUP(' '),0 pattern byte " **** ",0 byte " ** ",0 byte " ** ",0 byte " * ** ",0 byte " ** ** ",0 byte " *** ",0 byte " ** * ",0 byte "* * ",0 p1 byte " **** ",0 byte " ** ",0 byte " ** ",0 byte " *** ",0 byte " ** * ",0 byte " *** ",0 byte " * * ",0 byte " * * ",0 p2 byte " **** ",0 byte " ** ",0 byte " ** ",0 byte " *** ",0 byte " ** ",0 byte " ** ",0 byte " ** ",0 byte " *** ",0 p3 byte " **** ",0 byte " ** ",0 byte " ** ",0 byte " *** ",0 byte " *** ",0 byte " ** ",0 byte " * ",0 byte " * * ",0 p4 byte " **** ",0 byte " ** ",0 byte " ** ",0 byte " *** ",0 byte " ** * ",0 byte " *** ",0 byte " * * ",0 byte " ** * ",0 pattern_no dword 5 ; x byte 10 y byte 10 D_time dword 500 .code main PROC call clrscr _start: ; setup the patten parameter mov ecx, pattern_no mov ebx, OFFSET pattern _s1: ; draw the pattern (1) mov eax, ebx call display mov eax, D_time ; control display rate (3) call delay ; clear previous pattern (1) call clear_p ; change to next pattern (2) add ebx,8*9 ; calculate positioin (4) mov al, x inc al mov x,al cmp al,65 jne _s2 mov al,10 mov x,al _s2: loop _s1 jmp _start exit main ENDP clear_p PROC pushad mov ECX, 8 d1: mov dh,y ;x mov dl,x ;y add dh,8 sub dh,cl call gotoxy mov edx,OFFSET cp call WriteString loop d1 popad ret clear_p ENDP display PROC pushad mov ECX, 8 d2: mov dh,y ;x mov dl,x ;y add dh,8 sub dh,cl call gotoxy mov edx, eax call WriteString add eax,9 loop d2 popad ret display ENDP ; END main 動畫程式

More Related