Subversion Repositories Kolibri OS

Rev

Rev 485 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. ;
  2. ;   Pong Gaem 3Ver Mini Sample by Pavlushin Evgeni for ASCL
  3. ;   www.waptap@mail.ru
  4. ;
  5. ;   Not use bmpfile!
  6.  
  7. ;******************************************************************************
  8.     use32
  9.     org    0x0
  10.     db     'MENUET01'              ; 8 byte id
  11.     dd     0x01                    ; header version
  12.     dd     START                   ; start of code
  13.     dd     IM_END                  ; size of image
  14.     dd     0x300000                ; memory for app
  15.     dd     0x300000                ; esp
  16.     dd     temp_area , 0x0         ; I_Param , I_Icon
  17.  
  18. ;******************************************************************************
  19.  
  20. include '..\..\..\macros.inc'
  21. include 'ascl.inc'
  22. include 'ascgl.inc'
  23. include 'ascgml.inc'
  24.  
  25.  
  26. START:                          ; start of execution
  27.     call draw_window
  28.  
  29. ;    loadbmp '/RD/1/PONG.BMP',temp_area,I_END,tsoi
  30.     convbmp  pongfile,tsoi
  31.     bmptoimg pongfile,tsoi,pong
  32.     getimg pong,0,0,80,4,img
  33.     getimg pong,0,4,80,4,img2
  34.     getimg pong,5,38,15,15,img3
  35.     getimg pong,0,8,80,20,img5
  36.     fullimg img4 , 80 ,20 ,0x00000000   ;black for rocket
  37.     fullimg img6 , 15 ,15 ,0x00000000   ;black for ball
  38.  
  39.  
  40.  
  41. still:
  42.  
  43.     scevent red,key,button
  44.  
  45.         ;mcall 48, 4 ;get skin width
  46.         ;sub [skin_h], 16
  47.         ;div eax, 2
  48.         ;mov [skin_h], eax
  49.        
  50.     outcount dword [scoreb],300,8,cl_Blue,5*65536
  51.     outcount dword [scorea],350,8,cl_Red,5*65536
  52.  
  53. del_images:
  54.     setimg dword [ply1x],dword [ply1y],img4
  55.     setimg dword [ply2x],dword [ply2y],img4
  56.     setimg dword [ballx],dword [bally],img6
  57.     setimg dword [gravx],dword [gravy],img4
  58.  
  59. move_ply1:
  60.  
  61.     correct [ply1x],[ply1rx],4
  62.     correct [ply1y],[ply1ry],2
  63.  
  64. ;automove ball
  65.     mov eax,dword [ballxv]
  66.     add dword [ballx],eax
  67.     mov eax,dword [ballyv]
  68.     add dword [bally],eax
  69.  
  70.  
  71. ;autoslow ball
  72.     cmp dword [ballxv],0
  73.     jl ballb
  74. balla:
  75.     cmp dword [ballxv],2
  76.     jng balln
  77.     dec dword [ballxv]
  78.     jmp balln
  79. ballb:
  80.     cmp dword [ballxv],-2
  81.     jnl balln
  82.     inc dword [ballxv]
  83.     jmp balln
  84. balln:
  85.     cmp dword [ballyv],2
  86.     jng by_n
  87.     dec dword [ballyv]
  88. by_n:
  89.  
  90. ;ball collusion of screen
  91.     cmp dword [ballx],640-32
  92.     jna xa_ok
  93.     neg dword [ballxv]
  94. xa_ok:
  95.     cmp dword [ballx],6
  96.     jnb xb_ok
  97.     neg dword [ballxv]
  98. xb_ok:
  99.  
  100. ;if ball far out of screen come back
  101. ; is not work already
  102.     cmp dword [bally],466
  103.     jng yax_ok
  104.     call draw_window
  105.     inc dword [scoreb]
  106.     mov dword [bally],240
  107.     mov dword [ballx],310
  108.     mov dword [ballyv],2
  109.     random 5,dword [ballxv]
  110.     sub dword [ballxv],2
  111. yax_ok:
  112.     cmp dword [bally],30
  113.     jnl yax_ok2
  114.     call draw_window
  115.     inc dword [scorea]
  116.     mov dword [bally],240
  117.     mov dword [ballx],310
  118.     mov dword [ballyv],2
  119.     random 5,dword [ballxv]
  120.     sub dword [ballxv],2
  121. yax_ok2:
  122.  
  123. xorx:
  124.     cmp dword [ballxv],0
  125.     jne norx
  126.     random 5,dword [ballxv]
  127.     sub dword [ballxv],2
  128.     cmp dword [ballxv],0
  129.     je  xorx
  130. norx:
  131.  
  132. ;test on collusion ply1 of ball
  133. collusion_test:
  134.     collimg img,[ply1x],[ply1y],img3,[ballx],[bally],eax
  135.     cmp eax,1
  136.     jne not_coll
  137.     neg dword [ballyv]
  138.     add dword [bally],4
  139. ;    neg dword [ballxv]
  140. not_coll:
  141.  
  142. ;test on collusion com of ball
  143. collusion_com:
  144.     collimg img,[ply2x],[ply2y],img3,[ballx],[bally],eax
  145.     cmp eax,1
  146.     jne not_collcom
  147.     neg dword [ballyv]
  148.     sub dword [bally],4
  149. ;    neg dword [ballxv]
  150. not_collcom:
  151.  
  152. ;test on collusion gravity of ball
  153. collusion_grav:
  154.     collimg img,[gravx],[gravy],img3,[ballx],[bally],eax
  155.     cmp eax,1
  156.     jne not_collg
  157.     neg dword [ballyv]
  158.  
  159. ;    mov dword [ballxv],-20
  160.  
  161.     cmp dword [ballyv],0
  162.     jl  ab
  163.     jg  bf
  164.     jmp not_collgx
  165. ab:
  166.     sub dword [ballyv],25
  167.     jmp not_collgx
  168. bf:
  169.     add dword [ballyv],25
  170. not_collgx:
  171.     cmp dword [ballxv],0
  172.     jl  abx
  173.     jg  bfx
  174.     jmp not_collg
  175. abx:
  176.     sub dword [ballxv],8 ;15
  177.     jmp not_collg
  178. bfx:
  179.     add dword [ballxv],8
  180.  
  181.  
  182. ;    mov dword [ballyv],20
  183. not_collg:
  184.  
  185. ;ply contorl
  186.     cmp dword [ply1rx],560
  187.     jna plyok
  188.     cmp dword [ply1rx],12000
  189.     jna paa
  190.     mov dword [ply1rx],4
  191.     jmp plyok
  192. paa:
  193.     mov dword [ply1rx],560
  194. plyok:
  195.  
  196.  
  197. ;com contorl
  198.     cmp dword [ply2x],560
  199.     jna cplyok
  200.     cmp dword [ply2x],12000
  201.     jna cpaa
  202.     mov dword [ply2x],4
  203.     jmp cplyok
  204. cpaa:
  205.     mov dword [ply2x],560
  206. cplyok:
  207.  
  208.  
  209. ;com move
  210. cx_move:
  211.     cmp dword [bally],160
  212.     jna cno_m
  213.     mov eax,dword [ballx]
  214.     sub eax,30
  215.     cmp dword [ply2x],eax
  216.     je  cno_m
  217.     cmp dword [ply2x],eax
  218.     ja  cm_m
  219. cm_p:
  220.     add dword [ply2x],3
  221.     jmp cno_m
  222. cm_m:
  223.     sub dword [ply2x],3
  224. cno_m:
  225.  
  226. ;garvity
  227. gravity:
  228.     cmp dword [gravtime],0
  229.     je no_dg
  230.     dec dword [gravtime]
  231. no_dg:
  232.  
  233. draw_gravity:
  234.     cmp dword [gravtime],0
  235.     je  nograv
  236.     mov eax,dword [ply1x]
  237.     mov ebx,dword [ply1y]
  238.     add ebx,10
  239.     mov dword [gravx],eax
  240.     mov dword [gravy],ebx
  241.     jmp endgrav
  242. nograv:
  243.     mov dword [gravx],1000
  244.     mov dword [gravy],1000
  245. endgrav:
  246.  
  247. redraw_images:
  248.     setimg dword [ply1x],dword [ply1y],img
  249.     setimg dword [ply2x],dword [ply2y],img2 ;2
  250.     setimg dword [ballx],dword [bally],img3
  251.     setimg dword [gravx],dword [gravy],img5
  252.  
  253.  
  254.     delay 1             ;don't generate delay for fast speed programm
  255.  
  256.     jmp  still
  257.  
  258.   red:
  259.     call draw_window
  260.     jmp  still
  261.  
  262.   key:                          ; key
  263.     mov eax,2
  264.     mcall
  265.     cmp ah,key_Left
  266.     jne no_l
  267.     sub dword [ply1rx],32 ;16
  268. no_l:
  269.     cmp ah,key_Right
  270.     jne no_r
  271.     add dword [ply1rx],32 ;16
  272. no_r:
  273.     cmp ah,key_Up
  274.     jne no_u
  275.     sub dword [ply1ry],16
  276. no_u:
  277.     cmp ah,key_Down
  278.     jne no_d
  279.     add dword [ply1ry],16
  280. no_d:
  281.     cmp ah,key_Space
  282.     jne no_sp
  283.     mov dword [gravtime],100
  284. no_sp:
  285.  
  286.     jmp  still
  287.  
  288.   button:                       ; button
  289.     mov  eax,17                 ; get id
  290.     mcall
  291.     cmp  ah,1                   ; button id=1 ?
  292.     jne  noclose
  293.     mov  eax,-1                 ; close this program
  294.     mcall
  295.   noclose:
  296.     jmp  still
  297.  
  298.  
  299. draw_window:
  300.     mcall 12,1 ;start window redraw
  301.         mcall 0, <10, 640+8>, <10, 480+24>, 0x14000000,, wtitle
  302.     mcall 12,2 ;end window redraw
  303.     ret
  304.  
  305.  
  306. ; DATA AREA
  307. wtitle db 'PONG: USE ARROW KEYS                     SCORE:',0
  308. ;skin_h dd 25
  309.  
  310. xt dd 100
  311. yt dd 100
  312.  
  313. gravtime dd 10
  314. gravx dd 1000
  315. gravy dd 1000
  316.  
  317. ply1rx dd 200
  318. ply1ry dd 50
  319.  
  320. ply1x dd 200
  321. ply1y dd 50
  322.  
  323. ply2x dd 200
  324. ply2y dd 400
  325.  
  326. ballx dd 200
  327. bally dd 200
  328.  
  329. ballyv dd 3
  330. ballxv dd 3
  331.  
  332. scorea dd 0
  333. scoreb dd 0
  334.  
  335. counter dd 0
  336. tsoi dd 0
  337.  
  338. pongfile:
  339. file 'pong.bmp'
  340.  
  341. IM_END:
  342.  
  343. temp:
  344. rb 20000
  345.  
  346. pong:
  347. rb 80*60*3+8
  348. img:
  349. rb 32*32*3+8
  350. img2:
  351. rb 32*32*3+8
  352. img3:
  353. rb 32*32*3+8
  354. img4:
  355. rb 80*20*3+8
  356. img5:
  357. rb 32*32*3+8
  358. img6:
  359. rb 15*15*3+8
  360.  
  361. temp_area:
  362. rb 0x15000
  363.  
  364. I_END:
  365.