Página 4 de 8

Re: Curso de Z88DK básico + SDK para ZX Spectrum [preview]

Publicado: Sab May 03, 2014 12:04 am
por javiperez
Alxinho escribió:Yo es que tengo dos problemas, ni puta idea de ASM ... ni puta idea de C ... :lol:
Y cómo hiciste el Souls??? :shock:

Re: Curso de Z88DK básico + SDK para ZX Spectrum [preview]

Publicado: Sab May 03, 2014 11:17 am
por Alxinho
Pues ... en BASIC :lol:

Compilado eso sí, sino iría más lento que el caballo del malo. Todos mis juegos están programados con el compilador cruzado ZXBASIC de Boriel.

Gracias por cierto :oops:

Re: Curso de Z88DK básico + SDK para ZX Spectrum [preview]

Publicado: Sab May 03, 2014 11:17 pm
por radastan
Hark0 escribió:Como hago un rand ?


Integraré el rand de la churrera.

Re: Curso de Z88DK básico + SDK para ZX Spectrum [preview]

Publicado: Sab May 03, 2014 11:18 pm
por radastan
Alxinho escribió:Yo es que tengo dos problemas, ni puta idea de ASM ... ni puta idea de C ... :lol:


Si te miraras lo que hay de curso lo mismo te darías cuenta que sabes algo de C por saber BASIC...

Re: Curso de Z88DK básico + SDK para ZX Spectrum [preview]

Publicado: Dom May 04, 2014 2:07 am
por Alxinho
Mirármelo me lo miraré pero es que primero tengo que acabar lo que estoy haciendo! :|

Re: Curso de Z88DK básico + SDK para ZX Spectrum [preview]

Publicado: Dom May 04, 2014 1:05 pm
por Hark0
radastan escribió:
Alxinho escribió:Yo es que tengo dos problemas, ni puta idea de ASM ... ni puta idea de C ... :lol:


Si te miraras lo que hay de curso lo mismo te darías cuenta que sabes algo de C por saber BASIC...


Instalate Noetepad++ y sigue el pdf de Radastan... verás que no es tan dificil. :wink:

Re: Curso de Z88DK básico + SDK para ZX Spectrum [preview]

Publicado: Dom May 04, 2014 1:11 pm
por Hark0
radastan escribió:
Hark0 escribió:Como hago un rand ?


Integraré el rand de la churrera.


Gracias!

Dos preguntas:
1- Cuando declaras un sprite y luego lo usamos con putsprite_... veo que usas

unsigned char XXXX.

Yo he probado lo siguiente:
- He editado motorzx.h y he cambiado el unsigned char *puntero por unsigned int *puntero.
- He añadido un unsigned int mem_sprites[x];
- mem_sprites[0]=sprite0;
- mem_sprites[1]=sprite1;
etc.

- Para pintar putsprite(mem_sprites[num_sprite],x,y);

Y así me ahorro los switch para pintar el numero de sprite...

¿es buena idea o estoy gastando MAS ram?

2- ¿puedo hacer algo como esto¿ (glbasic)

TYPE Boton
tipo
grafico
posx
posy
ancho
alto
pantalla
disponible
estado
texto$
ENDTYPE

GLOBAL HRW_Boton[] AS Boton
GLOBAL HRW_Boton_Cantidad
GLOBAL HRW_Boton_Seleccionado

luego se usa tipo HRW_Boton[num_boton].posx=32

:mrgreen:

Re: Curso de Z88DK básico + SDK para ZX Spectrum [preview]

Publicado: Dom May 04, 2014 1:47 pm
por radastan
Hark0 escribió:Dos preguntas:
1- Cuando declaras un sprite y luego lo usamos con putsprite_... veo que usas

unsigned char XXXX.

Yo he probado lo siguiente:
- He editado motorzx.h y he cambiado el unsigned char *puntero por unsigned int *puntero.
- He añadido un unsigned int mem_sprites[x];
- mem_sprites[0]=sprite0;
- mem_sprites[1]=sprite1;
etc.

- Para pintar putsprite(mem_sprites[num_sprite],x,y);

Y así me ahorro los switch para pintar el numero de sprite...

¿es buena idea o estoy gastando MAS ram?


Lo que has echo es una matriz de punteros, que es la forma correcta y optimizada de hacer la selección de tile o de sprite. Evidentemente es lo mejor que puedes hacer y evitas, tal y como has visto, el switch. En el curso seguiré poniendo el switch, esa parte la explico más delante como optimización. No puedo explicarle de buenas a primeras a alguien lo que es una matriz de punteros sin que se sepa manejar con ellos antes.

Hark0 escribió:2- ¿puedo hacer algo como esto¿ (glbasic)

TYPE Boton
tipo
grafico
posx
posy
ancho
alto
pantalla
disponible
estado
texto$
ENDTYPE

GLOBAL HRW_Boton[] AS Boton
GLOBAL HRW_Boton_Cantidad
GLOBAL HRW_Boton_Seleccionado

luego se usa tipo HRW_Boton[num_boton].posx=32

:mrgreen:


Pues si te digo la verdad eso es más propio de C++ que de C. No he llegado a tanto con el Z88DK, pero lo mismo se puede poniendo puntos. Ejemplo: prota.x

Re: Curso de Z88DK básico + SDK para ZX Spectrum [preview]

Publicado: Dom May 04, 2014 2:03 pm
por Hark0
Ok entendido los punteros... ;-)

Entones gasta la misma ram verdad? (meter grfx como int en lugar de char)

Re: Curso de Z88DK básico + SDK para ZX Spectrum [preview]

Publicado: Dom May 04, 2014 3:01 pm
por Hark0
Respecto a la otra pregunta...

http://www.z88dk.org/wiki/doku.php?id=e ... :snakegame

Ver trozo:

Código: Seleccionar todo

struct snake_segment {
int row;
int col;
} snake[100];


Y luego usan:
snake[n].col=valor;

Esta noche si tengo tiempo, lo cato.


PD Explicación del uso de STRUCT en C... http://es.wikibooks.org/wiki/Programación_en_C/Estructuras_y_Uniones

Re: Curso de Z88DK básico + SDK para ZX Spectrum [preview]

Publicado: Dom May 04, 2014 5:54 pm
por radastan
Hark0 escribió:Ok entendido los punteros... ;-)

Entones gasta la misma ram verdad? (meter grfx como int en lugar de char)


Es que no estás metiendo GFX como int, estás metiéndolos como char y el puntero a donde comienzan en una matriz int.

Si metieras los gráficos como int te ocuparían el doble.

Re: Curso de Z88DK básico + SDK para ZX Spectrum [preview]

Publicado: Dom May 04, 2014 5:56 pm
por radastan
Hark0 escribió:Respecto a la otra pregunta...


Pues si, Z88Dk acepta estructuras, genial. No obstante en pocos juegos le veo sentido, si acaso en aventuras conversacionales.

Re: Curso de Z88DK básico + SDK para ZX Spectrum [preview]

Publicado: Lun May 05, 2014 10:47 am
por Hark0
radastan escribió:
Hark0 escribió:Respecto a la otra pregunta...


Pues si, Z88Dk acepta estructuras, genial. No obstante en pocos juegos le veo sentido, si acaso en aventuras conversacionales.


Pues yo le veo un montón más de utilidades, por ejemplo esto: (probado y funca)

Esto en las declaraciones de variables:

Código: Seleccionar todo

//-------------------------------------------------------- Declarando Enemigos Pacman
struct bot_enemigo
  {
      unsigned char posX;
      unsigned char posY;
      unsigned char sprite;
      unsigned char activado;
      unsigned char nombre;
  } fantasmas[4];


Esto en la rutina de inicializar variables:

Código: Seleccionar todo

fantasmas[0].posX=0;
fantasmas[0].posY=0;
fantasmas[0].sprite=0;
fantasmas[0].activado=1;
fantasmas[0].nombre='Blinky';

fantasmas[1].posX=16;
fantasmas[1].posY=0;
fantasmas[1].sprite=1;
fantasmas[1].activado=1;
fantasmas[1].nombre='Pinky';

fantasmas[2].posX=0;
fantasmas[2].posY=10;
fantasmas[2].sprite=2;
fantasmas[2].activado=1;
fantasmas[2].nombre='Inky';

fantasmas[3].posX=16;
fantasmas[3].posY=10;
fantasmas[3].sprite=3;
fantasmas[3].activado=1;
fantasmas[3].nombre='Clyde';


Ahora imaginate que en lugar de 4 enemigos.... lo haces para 200.000 bots... :P

Re: Curso de Z88DK básico + SDK para ZX Spectrum [preview]

Publicado: Lun May 05, 2014 5:43 pm
por radastan
Al final haces tu el curso. xD

Re: Curso de Z88DK básico + SDK para ZX Spectrum [preview]

Publicado: Lun May 05, 2014 7:26 pm
por Alxinho
Yo no tengo mucha experiencia en usar estructuras de datos pero sé que son muy útiles. Por ejemplo en juegos de naves sirven para definir las trayectorias, en juegos de lucha para los golpes o movimientos, etc, etc ... ojo, es por lo que he visto de cuando programaba en Fénix pero no los llegué a usar.