MISSILE DODGE - Juego BASIC para CoCo-2 en una línea

Foro dedicado a la programación en todo tipo de sistemas clásicos.
dancresp
Amiga 1200
Amiga 1200
Mensajes: 1393
Registrado: 23 Dic 2008, 17:53
Sistema Favorito: MSX
primer_sistema: ZX81
Primera consola: Atari 2600
Gracias dadas: 3 veces
Gracias recibidas: 20 veces

MISSILE DODGE - Juego BASIC para CoCo-2 en una línea

Mensajepor dancresp » 08 Nov 2012, 22:28

A raíz del juego "Missile Dodge - un juego en BASIC para TRS-80 BASIC en una sola línea" me quedé perplejo porque la verdad es que nunca se me había ocurrido hacer algo parecido: un programa en una única línea.

El funcionamiento del juego es muy simple: Introducimos el nivel de dificultad, pulsamos ENTER y con las teclas cursoras controlamos un asterisco con el que esquivamos los signos de admiración que suben por la pantalla. Al chocar con uno acaba el juego. Todo en una única línea de código.

Visto que es posible, me planteé adaptarlo a otros sistemas y aquí es donde deduje que el BASIC de los candidatos han de cumplir dos condiciones básicas:

1) El comando IF deben soportar el ELSE.
2) El sistema debe permitir líneas de un mínimo de 255 bytes (aprox).

Con éstas condiciones, sistemas como el SPECTRUM, COMMODORE 64 y VIC-20, ORIC-1/ATMOS, entre otros, quedan descartados.

En cambio otros sistemas como el DRAGON/COCO, COMMODORE 16, MSX, ACORN o AMSTRAD CPC lo permiten.

Mi primer planteamiento fue adaptar el programa al ORIC, pero la longitud máxima de la línea BASIC es demasiado corta (80 caracteres, creo recordar), así que opté por el DRAGON, pero como ya he hecho alguna cosilla y en cambio en el Radio Shack TRS-80 CoCo-2 no había hecho nada...

En este sistema, el tamaño de las líneas pueden ser de hasta 255 caracteres, y cambiando alguna dirección de memoria o valor en la lectura del teclado el programa ha funcionado perfectamente.

Aquí tenéis la adaptación:
1 IFI=0THENCLS:PRINT"MISSILE DODGE: LEFT,RIGHT":INPUT"DIFFICULTY";D:CLS:I=1:GOTO1 ELSE FORX=1TOD:
PRINT@479+RND(32),"­!";:NEXT:PRINT:P=P+(PEEK(343)=247ANDP>0)-
(PEEK(344)=247ANDP<31):IFPEEK(1024+P)=97THENPRINT"SCORE";S ELSE PRINT@P,"*";:S=S+1:GOTO1


DSC_0555.jpg
DSC_0555.jpg (84.78 KiB) Visto 9207 veces

DSC_0563.jpg
DSC_0563.jpg (81.35 KiB) Visto 9207 veces

DSC_0564.jpg
DSC_0564.jpg (67.63 KiB) Visto 9207 veces

DSC_0562.jpg
DSC_0562.jpg (64.06 KiB) Visto 9207 veces
Buscando la IP de la W.O.P.R.

Avatar de Usuario
zup
Amiga 2500
Amiga 2500
Mensajes: 3012
Registrado: 04 Sep 2009, 20:07
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo DS/3DS
Primera consola: Nintendo GameBoy
Ubicación: Navarra
Gracias dadas: 86 veces
Gracias recibidas: 356 veces
Contactar:

Re: MISSILE DODGE - Juego BASIC para CoCo-2 en una línea

Mensajepor zup » 08 Nov 2012, 22:42

dancresp escribió:Con éstas condiciones, sistemas como el SPECTRUM, COMMODORE 64 y VIC-20, ORIC-1/ATMOS, entre otros, quedan descartados.


Para este programa en concreto, quizás. Recuerdo haber visto un programa publicado en Microhobby de una sola línea y creo también que hay por ahí algún concurso para estas cosas.
I have traveled across the universe and through the years to find Her. Sometimes going all the way is just a start.
Además vendo cosas!

Avatar de Usuario
radastan
Amiga 2500
Amiga 2500
Mensajes: 4542
Registrado: 11 Jun 2007, 19:29
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Sega Genesis/Megadrive
Primera consola: TV Games/Pong Clone
Ubicación: Córdoba
Gracias dadas: 9 veces
Gracias recibidas: 40 veces
Contactar:

Re: MISSILE DODGE - Juego BASIC para CoCo-2 en una línea

Mensajepor radastan » 09 Nov 2012, 12:09

¿No te vale un juego con scroll y todo en 5 líneas?

http://microhobby.speccy.cz/mhf/198/MH198_16.jpg

Abajo a la derecha.

Realmente se puede reducir a 3 líneas.
Yo tengo una máquina del tiempo, se llama ZX Spectrum, siempre me devuelve a los buenos momentos.
(\.../) (\.../) (\.../) (\.../)
( *.*) ('.'= ) ('.'= ) ('.'= )
(")_(") (")_(") (")_(") (")_(")
╔═══╦═══╦═══╦══╦══╗
║╔═╗║╔═╗║╔═╗╠╣╠╩╣╠╝
║║─║║╚══╣║─╚╝║║─║║
║╚═╝╠══╗║║─╔╗║║─║║
║╔═╗║╚═╝║╚═╝╠╣╠╦╣╠╗
╚╝─╚╩═══╩═══╩══╩══╝

Avatar de Usuario
zitror
Amiga 2500
Amiga 2500
Mensajes: 5349
Registrado: 02 Jul 2006, 00:16
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
Ubicación: El interior de un Z80
Gracias dadas: 248 veces
Gracias recibidas: 104 veces
Contactar:

Re: MISSILE DODGE - Juego BASIC para CoCo-2 en una línea

Mensajepor zitror » 09 Nov 2012, 13:25

¡Vaya dos! :lol:
(C) 1.982 Sinclair Research Ltd

La buhardilla de Zitror

Avatar de Usuario
xgipe
Atari 1040 STf
Atari 1040 STf
Mensajes: 941
Registrado: 26 May 2010, 15:59
Sistema Favorito: MSX
primer_sistema: MSX
consola_favorita: Sega Master System
Primera consola: Videopac
Ubicación: Ankh-Morpork
Gracias dadas: 88 veces
Gracias recibidas: 69 veces

Re: MISSILE DODGE - Juego BASIC para CoCo-2 en una línea

Mensajepor xgipe » 09 Nov 2012, 15:04

Para todos los que se quieran animar, el MSX Resource Center (MSX.ORG) ha organizado un concurso de programas en un máximo de 10 líneas de BASIC... ;) (Ya sé que los "fieras" que corren por aquí son capaces de hacerlo en mucho menos...) \:D/
Más información en este enlace.

Saludos,
Xgipe
BLOAD "CAS:",R
Found: WIN3.11

Avatar de Usuario
na_th_an
Amiga 1200
Amiga 1200
Mensajes: 1273
Registrado: 10 Oct 2012, 11:17
Sistema Favorito: (Otro)
primer_sistema: Spectrum +2
consola_favorita: Sony PlayStation 1
Primera consola: Sega Master System
Gracias dadas: 18 veces
Gracias recibidas: 15 veces

Re: MISSILE DODGE - Juego BASIC para CoCo-2 en una línea

Mensajepor na_th_an » 12 Dic 2012, 14:24

33 juegos de una sola linea para ZX Spectrum, de un hilo de WOS hace unos años bastante interesante:

http://www.worldofspectrum.org/infoseek ... id=0017912

El hilo:

http://worldofspectrum.org/forums/showt ... t=oneliner

Avatar de Usuario
na_th_an
Amiga 1200
Amiga 1200
Mensajes: 1273
Registrado: 10 Oct 2012, 11:17
Sistema Favorito: (Otro)
primer_sistema: Spectrum +2
consola_favorita: Sony PlayStation 1
Primera consola: Sega Master System
Gracias dadas: 18 veces
Gracias recibidas: 15 veces

Re: MISSILE DODGE - Juego BASIC para CoCo-2 en una línea

Mensajepor na_th_an » 12 Dic 2012, 14:40

radastan escribió:¿No te vale un juego con scroll y todo en 5 líneas?

http://microhobby.speccy.cz/mhf/198/MH198_16.jpg

Abajo a la derecha.

Realmente se puede reducir a 3 líneas.


Realmente se puede reducir a 1 linea, reordenando y haciendo un par de truquillos... Como el del NEXT n para iterar. De esta forma no necesitamos ningún IF y no es un problema que no haya ELSE:

Código: Seleccionar todo

10 FOR a=0 TO 7: READ b: POKE USR "a"+a,b: NEXT a: LET na=5: LET pu=0: CLS : FOR n=0 TO 1: PRINT AT 20,RND*31;"*": PRINT AT 20,RND*31;"*": PRINT : POKE 23692,-1: PRINT : LET pu=pu+1: LET na=na-(INKEY$="z" AND na>0)+(INKEY$="m" AND na<31): PRINT AT 0,na;"\a": LET n=(SCREEN$ (1,na)="*"): NEXT n: PRINT AT 0,0; FLASH 1;"PUNTOS ";pu: FOR a=0 TO 50: BEEP .01,RND*40: NEXT a: RUN : DATA 36,189,255,165,165,189,189,24


(pegar en BasIn. Si lo váis a teclear, el \a del PRINT es "A" en modo gráfico)

¿Os animáis a hacer un concursillo de "one liners" para todos los sistemas en el foro? ¿qué os parece? Es bastante entretenido.

Avatar de Usuario
na_th_an
Amiga 1200
Amiga 1200
Mensajes: 1273
Registrado: 10 Oct 2012, 11:17
Sistema Favorito: (Otro)
primer_sistema: Spectrum +2
consola_favorita: Sony PlayStation 1
Primera consola: Sega Master System
Gracias dadas: 18 veces
Gracias recibidas: 15 veces

Re: MISSILE DODGE - Juego BASIC para CoCo-2 en una línea

Mensajepor na_th_an » 12 Dic 2012, 17:26

Para seguir con la tontunez, este juego de plataformas. Hay que coger todos los asteriscos... Tampoco es que tenga demasiado interés. Además, tiene el problema de que la linea ocupa más de lo que cabe en la pantalla, con lo que introducirla en un Spectrum real es muy tedioso (cada caracter de más no aparece, y además el ordenador va lentísimo). 6 izquierda 7 derecha y 0 salto. No se pueden pulsar a la vez.

Código: Seleccionar todo

10 CLS : LET p$="OOOO": LET q$=p$+p$+p$+p$: PRINT AT 21,0;q$;q$;AT 20,5;p$: PRINT AT 18,10;p$;AT 15,20;q$;AT 9,26;q$;p$;AT 5,8;p$: LET t=0: FOR i=1 TO 24: LET x=INT (RND*32): LET y=INT (RND*15)+5: LET tt=SCREEN$ (y,x)=" ": PRINT AT y,x;("*" AND tt): LET t=t+tt: NEXT i: LET x=16: LET y=20: LET nu=10: LET sal=0: LET cx=x: LET cy=y: LET s=0: FOR n=0 TO 1: LET lc=SCREEN$ (y,x-1)<>"O": LET rc=SCREEN$ (y,x+1)<>"O": LET lf=INKEY$="6" AND x>0 AND lc: LET rt=INKEY$="7" AND x<31 AND rc: LET x=x-lf+rt: LET uc=SCREEN$ (y-1,x)<>"O": LET dc=SCREEN$ (y+1,x)<>"O": LET dw=sal=0 AND dc: LET up=sal=1 AND uc: LET nu=(0 AND sal=0)+(nu+1 AND sal=1): LET sal=(INKEY$="0" AND NOT dw) OR (sal=1 AND nu<7): LET y=y-up+dw: LET ss=SCREEN$ (y,x)="*": LET s=s+ss: PRINT AT y,x;"\a";AT cy,cx;(" " AND (y<>cy OR x<>cx));AT 0,0;s: LET cx=x: LET cy=y: LET n=(t=s): NEXT n: PRINT AT 11,12;"BIEN HECHO"


Volver a “Programación”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 8 invitados