Tag Archives: programacion basic

Programando NewPong. Parte 1A

12 Mar

Como comenté en un artículo anterior vamos a ir programando y comentando el listado en MSX Basic de NewPong hasta conseguir el juego completo.

newpong1

De momento en la primera parte hemos dibujado el campo de juego, dos palas y una pelota. En esta primera versión solamente se pueden mover las palas por sus campos y la pelota va rebotando por el campo, pero todavía no se ha incorporado la detección de la pelota por parte de las palas (esto lo haremos en la parte 2).

Las palas se mueven con los mandos del cursor y/o joysticks. Las variables P1 y P2  de la línea 200  eligen entre los valores:

0 –> Cursor

1 –> Joystick 1

2 –> Joystick 2

que luego se pasan como parámetros de las órdenes STICK() en las líneas 380 y 470.

Iniciamos con la definición de las variables utilizadas:

X,Y –> Posición (x,y) de la pelota en pantalla.

AX,AY –> Posición (x,y) de la pala A (jugador 1).

BX,BY –> Posición (x,y) de la pala B (jugador 2).

PUNT1$,PUNT2$ –> Puntuación del jugador 1 y jugador 2.

VEL –> Velocidad del movimiento de la pelota.

VELP –> Velocidad de movimiento de las palas.

IX –> Movimiento positivo (1) o negativo (-1) en el eje X de la pelota.

IY –> Movimiento positivo (1) o negativo (-1) en el eje Y de la pelota.

A continuación se hace un salto a la línea 570 para anotar marcadores en pantalla, dibujar el campo de juego y definir los sprites de la pala y la pelota.

Finalmente en la línea 220 se inicia el Bucle del juego, que de momento consta del movimiento automático y de rebote de la pelota y las palas con los mandos del cursor/joystick en sus campos correspondientes.

Seguiremos con más en el siguiente artículo…

Listado NewPong1.bas

10 ‘################
20 ‘# NEWPONG #
30 ‘# JOSE DELGADO #
40 ‘# ENERO 2013 #
50 ‘################
60 CLEAR
70 SCREEN 2,2
80 OPEN”GRP:”AS#1
90 GOSUB 630
100 GOSUB 740
110 ‘=============
120 ‘ INICIALIZAR
130 ‘=============
140 X=10:Y=10
150 IX=1:IY=1
160 AX=40:AY=90
170 BX=200:BY=90
180 PUNT1$=”00″:PUNT2$=”00″
190 VEL=8:VELP=8
200 P1=0:P2=1
210 GOSUB 570
220 ‘=================
230 ‘ BUCLE DEL JUEGO
240 ‘=================
250 ‘——–
260 ‘ PELOTA
270 ‘——–
280 PUT SPRITE 0,(X,Y)
290 IF (IY=1 AND Y<185-8) THEN IY=1 ELSE IF IY=1 THEN IY=-1
300 IF (IY=-1 AND Y>7) THEN IY=-1 ELSE IF IY=-1 THEN IY=1
310 IF (IX=1 AND X<251-8) THEN IX=1 ELSE IF IX=1 THEN IX=-1
320 IF (IX=-1 AND X>7) THEN IX=-1 ELSE IF IX=-1 THEN IX=1
330 X=X+(IX*VEL)
340 Y=Y+(IY*VEL)
350 ‘———–
360 ‘ JUGADOR 1
370 ‘———–
380 D=STICK(P1)
390 IF (D=1 AND AY>7) THEN AY=AY-(1*VELP)
400 IF (D=5 AND AY<(185-16)) THEN AY=AY+(1*VELP)
410 IF (D=3 AND AX<(128-12-VELP)) THEN AX=AX+(1*VELP)
420 IF (D=7 AND AX>5) THEN AX=AX-(1*VELP)
430 PUT SPRITE 1,(AX,AY)
440 ‘———–
450 ‘ JUGADOR 2
460 ‘———–
470 D=STICK(P2)
480 IF (D=1 AND BY>7) THEN BY=BY-(1*VELP)
490 IF (D=5 AND BY<(185-16)) THEN BY=BY+(1*VELP)
500 IF (D=3 AND BX<(256-12-VELP)) THEN BX=BX+(1*VELP)
510 IF (D=7 AND BX>128) THEN BX=BX-(1*VELP)
520 PUT SPRITE 2,(BX,BY)
530 GOTO 220
540 ‘
550 ‘
560 ‘
570 ‘===================
580 ‘ ANOTAR MARCADORES
590 ‘===================
600 PSET(20,20),4:PRINT#1,PUNT1$
610 PSET(220,20),4:PRINT#1,PUNT2$
620 RETURN
630 ‘==================
640 ‘ DIBUJAR PANTALLA
650 ‘==================
660 LINE(0,0)-(256,7),15,BF
670 LINE(0,185)-(256,192),15,BF
680 LINE(0,0)-(5,50),15,BF
690 LINE(0,142)-(5,192),15,BF
700 LINE(251,0)-(256,50),15,BF
710 LINE(251,142)-(256,192),15,BF
720 LINE(128,8)-(128,185),15
730 RETURN
740 ‘=================
750 ‘ DEFINIR SPRITES
760 ‘=================
770 FOR I=1 TO 8
780 READ A$
790 B$=B$+CHR$(VAL(“&B”+A$))
800 NEXT I
810 SPRITE$(0)=B$
820 DATA 00000000
830 DATA 00011000
840 DATA 00111100
850 DATA 01111110
860 DATA 01111110
870 DATA 00111100
880 DATA 00011000
890 DATA 00000000
900 FOR I=1 TO 16
910 READ A$
920 C$=C$+CHR$(VAL(“&B”+LEFT$(A$,8)))
930 D$=D$+CHR$(VAL(“&B”+RIGHT$(A$,8)))
940 NEXT I
950 SPRITE$(1)=C$+D$
960 SPRITE$(2)=C$+D$
970 DATA 0000011111100000
980 DATA 0000011111100000
990 DATA 0000011111100000
1000 DATA 0000011111100000
1010 DATA 0000011111100000
1020 DATA 0000011111100000
1030 DATA 0000011111100000
1040 DATA 0000011111100000
1050 DATA 0000011111100000
1060 DATA 0000011111100000
1070 DATA 0000011111100000
1080 DATA 0000011111100000
1090 DATA 0000011111100000
1100 DATA 0000011111100000
1110 DATA 0000011111100000
1120 DATA 0000011111100000
1130 RETURN

Fin Listado NewPong1.bas

Descargar newpong1.bas

Descargar newpong1.dsk

Programando NewPong. Parte 1

4 Mar

Vamos a iniciar el apartado de programación en MSX-Basic diseñando y programando un clásico en los videojuegos… quizás el primero…

En 1972, Nolan Bushnell fundó una compañía llamada Atari y publicó el juego con el nombre de Pong. ¿Quién no conoce el famoso juego del cuadradito que pretende ser una pelota y de los dos palos que simulan ser raquetas? Bien, pues este es el primero de los primeros, el primerísimo Videojuego llamado Pong.

oldpong

En nuestro caso en la primera sesión de programación tenemos un apecto similar, pero más al estilo del MSX… al que he bautizado como NewPong…

newpong1

¿Qué os parece la idea?

Es un programa sencillo, adictivo (sobre todo para dos personas), nostálgico y que cumple ser el primer videojuego que programé cuando tuve mi primer MSX.

En el siguiente post pondré el listado Basic (de esta primera sesión) y comentaré las principales instrucciones para todos aquellos que quieran iniciarse en el mundo de la programación del MSX Basic y para los que como yo, después de tantos años, estemos un poco oxidados en este tema y así entre todos vamos dándole forma a nuestro programa de MSX Basic.