-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathJuego.asm
285 lines (208 loc) · 5.63 KB
/
Juego.asm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
GRAPH MACRO ;iniciamos modo grafico
MOV AH,00H
MOV AL,12H ;640x480
INT 10H
ENDM
PALETA MACRO color ;Permite definir la paleta
MOV AH,0BH
MOV BH,00H
MOV BL,color
INT 10H
ENDM
PUNTO MACRO x,y,color
MOV AH,0CH
MOV AL,color ;Color blanco
MOV BH,0
MOV CX,x
MOV DX,y
INT 10H
ENDM
LINEASALTEADA MACRO X,Y,XX,YY
LOCAL AMARILLO,MOVAMARILLO,SEGUNDALINEA,SALIR
AMARILLO:
MOV CX,0020
MOVAMARILLO: push cx
PUNTO xx,yy,0Eh
pop cx
MOV AX,y
MOV yy,AX ;Guardamos posicion anterior
mov bx,x ;X lo movemos a XX
MOV xx,bx
INC AX
CMP AX,460
JE SEGUNDALINEA
MOV y,AX
LOOP MOVAMARILLO
ADD Y,20
JMP AMARILLO
SEGUNDALINEA:
MOV Y,10
INC X
CMP X,321
JBE AMARILLO
SALIR:
ENDM
CUADRO MACRO X,Y,COLOR,TAMANO
LOCAL FILA,COLUMNA,FILA2,COLUMNA2
XOR DX,DX
MOV BX,TAMANO
MOV NUMERO,BX
MOV BX,X
MOV XAUX,BX
MOV BX,Y
MOV YAUX,BX
FILA:
PUNTO XAUX,YAUX,COLOR
INC XAUX
DEC NUMERO
JNZ FILA
DEC XAUX
INC YAUX
MOV BX,TAMANO
MOV NUMERO,BX
COLUMNA:
PUNTO XAUX,YAUX,COLOR
INC YAUX
DEC NUMERO
JNZ COLUMNA
DEC XAUX
DEC YAUX
MOV BX,TAMANO
MOV NUMERO,BX
FILA2:
PUNTO XAUX,YAUX,COLOR
DEC XAUX
DEC NUMERO
JNZ FILA2
INC XAUX
DEC YAUX
MOV BX,TAMANO
MOV NUMERO,BX
COLUMNA2:
PUNTO XAUX,YAUX,COLOR
DEC YAUX
DEC NUMERO
JNZ COLUMNA2
INC XAUX
INC YAUX
ENDM
RETARDO MACRO VELOCIDAD
LOCAL RETARDO1,RETARDO2
PUSH CX
MOV CX, VELOCIDAD
RETARDO1:
MOV BX, 0FH
RETARDO2:
DEC BX
JNZ RETARDO2
LOOP RETARDO1
POP CX
ENDM
.model small
.stack
.data
xx dw 1
yy dw 1
XAUX DW 0
YAUX DW 0
X dw 319
Y dw 10
XCAR DW 0
YCAR DW 0
MEN1 DB 'GAME OVER','$'
NUMERO DW 0
VELOCIDAD DW 0FFFH
.code
mov ax,@data
mov ds,ax
GRAPH ;Seteamos modo gr�fico 640*480
LINEASALTEADA X,Y,XX,YY
MOV XCAR,219
MOV YCAR,220
CUADRO XCAR,YCAR,0FH,20
MOV X,219
MOV Y,10
CUADRO X,Y,04H,20
MOV XX,421
MOV YY,150
CUADRO XX,YY,04H,20
; reset mouse and get its status:
mov ax, 0
int 33h
; display mouse cursor:
mov ax, 1
int 33h
check_mouse_buttons:
MOV DX,Y
ADD DX,20
CMP YCAR,DX
JE VALIDARXL
MOV DX,YY
ADD DX,20
CMP YCAR,DX
JE VALIDARXXL
SEGUIR:
mov ax, 3
int 33h
cmp bx, 1
je LEFT
cmp bx, 2
je RIGHT
cmp bx, 3
je SALIR
RETARDO VELOCIDAD
CUADRO X,Y,00H,20 ;BORRAR
ADD Y,10
CUADRO X,Y,04H,20
CUADRO XX,YY,00H,20 ;BORRAR
ADD YY,10
CUADRO XX,YY,04H,20
CMP Y,460
JE VOLVERINICIO
CMP YY,460
JE VOLVERINICIO2
jmp check_mouse_buttons
VALIDARXL:
MOV DX,X
CMP XCAR,DX
JE GAMEOVER
jmp SEGUIR
VALIDARXXL:
MOV DX,XX
CMP XCAR,DX
JE GAMEOVER
jmp SEGUIR
VOLVERINICIO:
CUADRO X,Y,00H,20 ;BORRAR
MOV Y,10
SUB VELOCIDAD,96H
jmp check_mouse_buttons
VOLVERINICIO2:
CUADRO XX,YY,00H,20 ;BORRAR
MOV YY,10
jmp check_mouse_buttons
LEFT:
CUADRO XCAR,YCAR,00H,20
MOV XCAR,219
MOV YCAR,220
CUADRO XCAR,YCAR,0FH,20
JMP check_mouse_buttons
RIGHT:
CUADRO XCAR,YCAR,00H,20
MOV XCAR,421
MOV YCAR,220
CUADRO XCAR,YCAR,0FH,20
JMP check_mouse_buttons
GAMEOVER:
LEA DX,MEN1
MOV AH,9
INT 21H
SALIR:
MOV AH,01H
INT 21H
MOV AH,00H
MOV AL,03H
INT 10H
mov ah,4ch
int 21h
end