Retrogames.cl
Página principal Sección Atari Articulos para leer

Proyectos y modificaciones de hardware

Clases elementales RG, su gente y actividades

El foro más antiguo de Chile

Un lugar para recordar

 

Ejemplo de un juego simple en ACTION!

Esto fue un juego simple realizado por MICHAEL MITCHELL para la Revista ANTIC, aqui lo muestro de ejemplo con algunos textos traducidos.

Codigo

; DARKSTAR
; Ejemplo sacado de la revista ANTIC
; BY MICHAEL MITCHELL
; Curso de ACTION! por AsCrNet

BYTE WSYNC=54282,VCOUNT=54283,
CLR=53274,CTR,CLR1=53270,
CHGCLR=[0],INCCLR1,S,INCCLR,
CLR2=53271,A,B
CARD ML,SC,SP,Q,I

PROC WAIT(CARD N); Proc. Pausa
  FOR I=0 TO N+N
  DO OD
RETURN

PROC TITLE() ; Proc. titulos
  SC=0 ML=0
  GRAPHICS(2+16)
  POSITION(5,2)
  PRINTDE(6,"dArKsTaR")
  POSITION(5,4)
  PRINTDE(6,"Ejemplo")
  POSITION(1,6)
  PRINTDE(6," Gamer en action!")
  POSITION(0,09)
  PRINTDE(6," pUlSe BoToN")
  DO
  FOR CTR=1 TO 10
  DO
  INCCLR=CHGCLR INCCLR1=CHGCLR
  DO
  S=STRIG(0)
  IF S=0 THEN RETURN FI
  WSYNC=0
  CLR=INCCLR CLR1=INCCLR1
  CLR2=INCCLR+10
  INCCLR==+1 INCCLR1==-1
  UNTIL VCOUNT&128
  OD
  OD
  CHGCLR==+1
  OD

PROC BOX() ; Proc. enemigos
  A=RAND(150)+3 B=RAND(74)+3 COLOR=1
  PLOT(A,B)
  DRAWTO(A+2,B) DRAWTO(A+2,B+2)
  DRAWTO(A,B+2) DRAWTO(A,B)
RETURN

PROC MAIN() ; Proc. central
  INT XX=[1],YY=[0],SS,X,Y,Q
  BYTE Z,E,E1,A1,B1,D,C=[0]
  BYTE A,B
  X=50 Y=50
  GRAPHICS(7) COLOR=2 ; Dibuja bordes
  SNDRST()
  PLOT(1,1)
  DRAWTO(158,1) DRAWTO(158,79)
  DRAWTO(1,79) DRAWTO(1,1)
  BOX()
      ; Ciclo de colision
  DO
  Z=LOCATE(X,Y)
  IF Z=1 THEN ; Haz golpeado al enemigo
  FOR E=1 TO 20
  DO WAIT(50) SOUND(0,E,08,10)
  SETCOLOR(2,E,10)
  OD
  SNDRST() BOX()
  SC==+10 SETCOLOR(2,0,0)
  FI
  IF Z=2 THEN ; Te han golpeado
  FOR D=1 TO 35
  DO COLOR=C
  SOUND(0,D,8,10) C==+1
  SETCOLOR(2,D,C) SETCOLOR(0,C,D)
  SETCOLOR(1,A1,B1)
  IF C=4 THEN C=1 FI
  A1=RAND(153) B1=RAND(78) PLOT(X,Y)
  DRAWTO(A1,B1)
  OD
  ML==+1 SNDRST()
  IF ML>2 THEN ; Si tiene vidas
  ML=0 GRAPHICS(2+16)
  POSITION(4,4)
  PRINTD(6,"GAME OVER")
  POSITION(4,5)
  PRINTD(6,"PUNTAJE: ") PRINTBDE(6,SC)
  FOR X=0 TO 242 STEP 2
  DO
  WAIT(500) SOUND(0,X+1,10,10)
  SOUND(1,X+2,10,10)
  SOUND(2,X+3,10,10)
  SOUND(3,X+4,10,10)
  SETCOLOR(0,X,10)
  OD
  WAIT(32000) ; Tiempo de pausa
  SC=0 TITLE()
  FI
  MAIN()
  FI 
  Q==+1 SETCOLOR(1,Q,14)
  COLOR=2 PLOT(X,Y)
  SS=STICK(0) ; Leyendo JOYSTICK
  IF SS=14 THEN XX=0 YY=-1
  ELSEIF SS=13 THEN XX=0 YY=1
  ELSEIF SS=11 THEN XX=-1 YY=0
  ELSEIF SS=7 THEN XX=1 YY=0
  FI
  WAIT(350) ; Cambia este valor si
  ; lo quiere mas rapido o lento
  X==+XX Y==+YY
  POKE(53279,5)
  OD
RETURN

PROC START() ; Proc. de inicio
  TITLE()
  MAIN()

 

Descarga games