Juego nuevo en basic, pero con dudas con Draw?

Todo sobre la creación, diseño y programación de nuevo software para
nuestro Spectrum

Moderador: Sir Cilve Sinclair

Responder
ZX.
rst 0
Mensajes: 14
Registrado: Mié Nov 21, 2007 2:59 am

Juego nuevo en basic, pero con dudas con Draw?

Mensaje por ZX. » Dom Jul 07, 2013 12:49 am

Después de mucho tiempo se me dio por hacer algun juego nuevo en basic, sucede que la nave enemiga que es un caracter se mueve por toda la pantalla y tiene que disparar desde su posicion en pantalla en forma diagonal a 45° hacia arriba derecha, abajo derecha, atras izquierda abajo y atras izquierda arriba, como se hace para que los disparos con Draw no se salgan de la pantalla?

5 Border 1
10 Let A=91 : Let B=91
70 Let C=11 : Let D=15
80 Print At C,D;"+"
110 Plot D*8+4,175-C*8-4
150 Draw A,B
----------------------------
5 border 1
70 Let C=10 : Let D=5
80 Let A=C*8+3 :Let B=C*8+3
90 Print At C,D; "+"
110 Plot D*8+4,175-C*8-4
150 Draw A,B
Última edición por ZX. el Lun Jul 08, 2013 12:24 am, editado 1 vez en total.

Avatar de Usuario
jevilon
Manic Miner
Mensajes: 288
Registrado: Mié Jul 23, 2008 1:15 pm
Ubicación: La Rioja

Re: Juego nuevo en basic, pero con dudas con Draw?

Mensaje por jevilon » Dom Jul 07, 2013 10:52 pm

Código: Seleccionar todo

The statement DRAW to draw a straight line takes the form

   DRAW x,y
The starting place of the line is the pixel where the last PLOT, DRAW or CIRCLE statement left off (this is called the PLOT position; RUN, CLEAR, CLS and NEW reset it to the bottom left hand corner, at (0,0)), and the finishing place is x pixels to the right of that and y pixels up. The DRAW statement on its own determines the length and direction of the line, but not its starting point.

Experiment with a few PLOT and DRAW commands, for instance

   PLOT 0,100: DRAW 80,-35
   PLOT 90,150: DRAW 80,-35
Notice that the numbers in a DRAW statement can be negative, although those in a PLOT statement can't.


Viene a decir que Draw tienes que ponerle la direccion y la longitud, a partir del ultimo plot, luego deberias calcular cuantos pixeles hay desde tu plot hasta la esquina de pantalla.... Ahora no tengo un emulador para probar y ponerte el codigo... pero creo que no te sera muy complicado...

ZX.
rst 0
Mensajes: 14
Registrado: Mié Nov 21, 2007 2:59 am

Re: Juego nuevo en basic, pero con dudas con Draw?

Mensaje por ZX. » Lun Jul 08, 2013 12:14 am

Gracias Jevilon, vamos más o menos, cuando el caracter se mueve a la derecha y dispara en diagonal a 45°quiero lograr que le rayo no se salga de la pantalla por el costado sin importar a la altura que este volando, ya que se mueve arriba, abajo, derecha, e izquierda.

5 Border 1
70 Let C=3 : Let D=30
75 Let B=16 : Let E=16
80 Let A=C*8+3
90 Print At C,D; "+"
110 Plot D*8+4,175-C*8-4
150 Draw A-B,A-E

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: Juego nuevo en basic, pero con dudas con Draw?

Mensaje por mcleod_ideafix » Lun Jul 08, 2013 2:08 pm

Pongamos que las cordenadas (las que usas en el PRINT AT) de tu nave son lin,col y que quieres disparar en la dirección "arriba-derecha". Pintar un rayo que salga desde el centro del carácter hasta la esquina que sea de la pantalla sería así (no pongo números de línea):

Código: Seleccionar todo

PRINT AT lin,col;"+"
LET x1=col*8+3: LET y1=(21-lin)*8+3
PLOT OVER 1;x1,y1
IF (175-y1)<(255-x1) THEN LET y2=175: LET x2=x1+175-y1
IF (175-y1)>=(255-x1) THEN LET x2=255: LET y2=y1+255-x1
DRAW OVER 1;x2-x1,y2-y1
Última edición por mcleod_ideafix el Lun Jul 08, 2013 2:41 pm, editado 2 veces en total.
Web: ZX Projects | Twitter: @zxprojects

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: Juego nuevo en basic, pero con dudas con Draw?

Mensaje por mcleod_ideafix » Lun Jul 08, 2013 2:15 pm

Y si quieres enmascarar los IF's en la propia expresión...

Código: Seleccionar todo

PRINT AT lin,col;"+"
LET x1=col*8+3: LET y1=(21-lin)*8+3
PLOT OVER 1;x1,y1
LET cnd=(175-y1)<(255-x1)
LET x2=(x1+175-y1)*cnd+255*NOT cnd
LET y2=175*cnd+(y1+255-x1)*NOT cnd
DRAW OVER 1;x2-x1,y2-y1

Demostración (O P Q A para mover, SPACE para disparar)
http://www.zxprojects.com/atc/disparo_diagonal.z80
Web: ZX Projects | Twitter: @zxprojects

ZX.
rst 0
Mensajes: 14
Registrado: Mié Nov 21, 2007 2:59 am

Re: Juego nuevo en basic, pero con dudas con Draw?

Mensaje por ZX. » Lun Jul 08, 2013 6:21 pm

Gracias mcleod_ideafix, ese era el efecto que buscaba, de echo ya habia realizado un juego en el año 2009(Trilogia espacial) que no recordaba basado en la "Guerra esferica" un juego que salio en las primeras revistas Microhobby, donde la nave gira y dispara, por último en que pagina puedo subir el archivo del juego para que pueda verse en el foro? saludos!

ZX.
rst 0
Mensajes: 14
Registrado: Mié Nov 21, 2007 2:59 am

Re: Juego nuevo en basic, pero con dudas con Draw?

Mensaje por ZX. » Mié Jul 10, 2013 2:38 am

Ahora me gustaria saber como se puede hacer para que la nave recorra la pantalla y pueda disparar en 360° sin que los rayos se salgan de la pantalla? saludos!

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: Juego nuevo en basic, pero con dudas con Draw?

Mensaje por mcleod_ideafix » Mié Jul 10, 2013 5:25 am

¿A qué te refieres? ¿A que el rayo que sale de la nave barra 360 grados como si fuera la aguja de un reloj? ¿O que puedas elegir en qué dirección disparar? Y si es esto último, ¿cómo elige la nave a dónde dispara? ¿Con un cursor de disparo estilo punto de mira, como en el Missile Command?
Web: ZX Projects | Twitter: @zxprojects

ZX.
rst 0
Mensajes: 14
Registrado: Mié Nov 21, 2007 2:59 am

Re: Juego nuevo en basic, pero con dudas con Draw?

Mensaje por ZX. » Mié Jul 10, 2013 5:04 pm

Hola mcleod_ideafix , en este programa que hice la nave esta fija y dispara en cualquier dirección arriba y abajo, lo que yo quiero hacer es que la nave se desplase por la pantalla y dispare en cualquier dirección arriba, abajo, derecha, izquierda, y puede incluir un disparo especial que barra 360°

10 BORDER 0
100 PRINT AT 10,14;"XX"
200 LET F=INT (RND*32)
400 PLOT OVER 1; 120,92
410 DRAW OVER 1; -112+F*8-4,-92
420 PLOT OVER 1; 120,92
430 DRAW OVER 1; -112+F*8-4,-92
440 PAUSA 20
500 LET G=INT (RND*32)
510 PLOT OVER 1; 120,92
520 DRAW OVER 1; -112+G*8-4,83
530 PLOT OVER 1; 120,92
540 DRAW OVER 1; -112+G*8-4,-83
550 PAUSA 20
1000 GOTO 200

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: Juego nuevo en basic, pero con dudas con Draw?

Mensaje por mcleod_ideafix » Mié Jul 10, 2013 6:48 pm

ZX. escribió:Hola mcleod_ideafix , en este programa que hice la nave esta fija y dispara en cualquier dirección arriba y abajo, lo que yo quiero hacer es que la nave se desplase por la pantalla y dispare en cualquier dirección arriba, abajo, derecha, izquierda, y puede incluir un disparo especial que barra 360°

¿Cualquier dirección o solo esas cuatro (arriba, abajo, izquierda, derecha)?

Para un disparo que barra 360 grados, haz cuatro bucles. Si x1,y1 son las coordenadas (de pixel) desde la que se se origina el disparo, un disparo que barre 360 grados podría ser así:

Código: Seleccionar todo

FOR y=0 TO 175 STEP 8: PLOT OVER 1;x1,y1: DRAW OVER 1;255-x1,y-y1: PAUSE 1: PLOT OVER 1;x1,y1: DRAW OVER 1;255-x1,y-y1: NEXT y
FOR x=255 TO 0 STEP -8: PLOT OVER 1;x1,y1: DRAW OVER 1;x-x1,175-y1: PAUSE 1: PLOT OVER 1;x1,y1: DRAW OVER 1;x-x1,175-y1: NEXT x
FOR y=175 TO 0 STEP -8: PLOT OVER 1;x1,y1: DRAW OVER 1;-x1,y-y1: PAUSE 1: PLOT OVER 1;x1,y1: DRAW OVER 1;-x1,y-y1: NEXT y
FOR x=0 TO 255 STEP 8: PLOT OVER 1;x1,y1: DRAW OVER 1;x-x1,-y1: PAUSE 1: PLOT OVER 1;x1,y1: DRAW OVER 1;x-x1,-y1: NEXT x
Web: ZX Projects | Twitter: @zxprojects

ZX.
rst 0
Mensajes: 14
Registrado: Mié Nov 21, 2007 2:59 am

Re: Juego nuevo en basic, pero con dudas con Draw?

Mensaje por ZX. » Mié Jul 10, 2013 11:24 pm

Nuevamente gracias! es toda la información que necesitaba, ahora a programar el juego, saludos!

Responder

¿Quién está conectado?

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