Subversion Repositories Kolibri OS

Rev

Rev 109 | Rev 6024 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

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