PiboteDS

He aqui mi primer Juego creado con PALibs
PiboteDS
Imagen
En que consiste? Pues es una especie de PONG, controlas la pala con el Stylus y tienes que rebotar la pelota...
Por ahora ganas un punto por cada vez que golpeas la bola, cuando pierdes
(Se te escapa la bola) la puntuación va a cero, pero se queda la PUNTUACIÓN MAXIMA, que hay que intentar superar...
Aunque sea un juego en el que nunga ganas realmente, la dificultad es muy alta y yo solo me he llegado a los 163 golpes...
Despues la pelota iva demasiado
rapìda....XD

Liks:
Descarga Rapidshare
Wiki oficial

Cosas que quiero mejorar:
-Poder guardar la puntuacíon Maxima(Ya lo intente pero no me aclaro).
-Añadir
una carpeta donde pongas una musica(renombrada o lo que sea) y la lea
como musica de fondo(y mas tarde poder elegir estre varias).
-Añadir un modo multijugador(si no es demasiado aburrido) DS a DS.
-Lo que me propongais!!!

PD: Parece ser que la ultima vez que edite el codigo(una chorrada) no lo probe y hay un + que deberia ser un - que hace que la posición de la pala de la IA no este en el sitio que deberia...
RESUBIDO!
Habrá que probarlo, sí-sí XDDD.
Dios, si que es complicado.
gracias tio XD

oye tu sabrias hacer un hokey esos de mesa?=??
Pues, supongo que si, realmente el principo es el mismo...
Es cuestión de pulirlo un poco...
Y si alguien se anima a ayudar pues yo encantado!!!
[jaja] [jaja] [jaja]
hey! tiene buena pinta, intentaré probarlo hoy aver ke tal [oki]
Lo de la puntuacion maxima, se me ocurre qe puedes al principio del programa cargar una variable con la lectura de un fichero y cuando se termine la partida qe compare la puntuacion con la del archivo.
Si es mayor, pues un mensaje de qe has alcanzado el record, blablabla y qe espere a guardar el nuevo record.
Escrbes el archivo con la variable de la puntuacion nueva y ya esta.

cosas qe debes haer en tu programa:
(recogido de los ejemplos de palib)

- incluir la libreria fat de trabajo con archivos
#include

-iniciar el fat
fatInitDefault();

-leer el archivo
FILE* testRead = fopen ("arch_record.txt", "rb"); //rb = read
char var_record[30];
fread(var_record, 30, 1, testRead);
fclose(testRead);

- aqui vendria lo peliagudo: no se como poder hacer una comparacion con el resultado actual, qe imagino qe sera numerico y el del archivo en char y qe no de problemas.

- si es mayor, pues qe escriba el nuevo valor
FILE* testWrite = fopen ("arch_record.txt", "wb"); //wb = create/truncate & write
fwrite("aqui va texto. Imagino qe si pones una variable pilla el contenido de la variable, qe no lo he probado", 30, 1, testWrite);
fclose(testWrite);

pd en el emulador no funciona el tema de ficheros, en la ds si. Imagino qe tendra qe ver qe normalmente usamos formato ntfs en vez de fat.

pd asegurate qe hay archivo antes de abrirlo o fijo da problemas :)


editado. contenia un error el codigo. Ya esta arreglado
Gracias, la verdad es que ya he intentado varias veces hecer eso del FAT, y no me aclaro, y nunca funciona...
Si quieres el source code para verlo y tal, te lo puedo pasar...
gracias de todas formas!
¿Por qué no te miras el tutorial de PAFS (PAlib File System) de los foros de PAlib? Puede que te solucione la vida, quien sabe. XD Yo personalmente lo voy a usar también para los records de mi juego (cuando añada funciones de puntuación).
ya lo hice, lo mire precisamente de ahi y no me aclaro... [triston]
Y no me extraña... Me acabo de mirar lo de los archivos y es un lío.
Lo de los tutos de los foros sobre archivos es un cacao de la ostia :)

Yo he probao el ejemplo qe te he puesto en la ds y funciona. En un primer momento crei qe no funciona pq en el emulador no hacia nada, pero en la DS, a la primera.

Te crea el archivo en la raiz de la memoria con el texto qe le metas (en el ejemplo era bastante mas corto; lo qe puse es para explicar lo qe iba ahi) y luego lo lee sin problemas (amos, escribe en pantalla el contenido del archivo).
Si tu lo qe quieres hacer es otra cosa.... pues igual, qe el contenido ya esta descargado en alguna variable

Ejecuta el ejemplo tal cual esta en los ejemplos de palib y luego vete trasteando y pillando el concepto.

pd por cierto, el ejecutable lo tenia en una carpeta qe colgaba de la raiz. Igual si pones la ruta donde le dices qe archivo es, trabaja desde esa carpeta.

pd ahh tengo una R4, por si en otras no funciona, qe sepas qe en esa si :)

pd yo esta semana voy a incluir en mi aplicacion el tema de archivos. Di qe lo qe quiero hacer es guardar unas cuantas variables con fecha/hora y cuando le vuelvas a dar guardar, qe te incluya las nuevas a continuacion de las qe ya habia, con su fecha/hora. No me interesa leer el archivo pq es para trabajarlo desde el PC a modo de historial.
Ya contare qe tal va el tema :)
He probado con la librería de FAT (en el ejemplo que viene en el devkitpro) y es bastante mas fácil de lo que me esperaba. XD vjinete tenía razón, lo ideal es hacerlo así.
Bien, gracias, lo intentare implementar en la proxima version, pero no prometo nada...(No entiendo los comandos del FAT muy bien...)
:(

EDITO: Lo he intentado como dices, vjinete, y consigo guardar un texto predefinido, pero no una variable... [snif]

EDIT2: Lo que si que he conseguido gracias al FAT es que ahora, la musica de fondo la coje de una carpeta en la raiz que se llame "PiboteDS" y la musica se tiene que llamar "ambiente" y estar en RAW, convirtiendola con Switch....
Si alguien sabe como hacer que lea ficheros MP3 y asi facilitarlo todo se lo agradeceria!
A mi también me pasó eso. Hay que usar punteros (No se como lo he conseguido, no lo entiendo ni yo XD).

fwrite(&var_record, 30, 1, testRead);

fread(&var_record, 30, 1, testRead);

Fijate en el & de antes del nombre. Eso indica que guarde lo que hay en la direccion de memoria de la variable (o algo así).
PiratePila está baneado por "crearse clones para trollear"
Esta muy bien.
jejeje ya... el paso logico es cambiar la secuencia de texto" " por variable. ;)
La cosa qedaria asi para escritura:
----
char filetext[30]="hola vjinete";

FILE* testWrite = fopen ("FATTest.txt", "wb"); //wb = create/truncate & write
fwrite(filetext, 30, 1, testWrite);
fclose(testWrite);

-----
con eso ya escribe lo qe esta en la variable filetext, qe es del tipo char y en el fichero qedaria escrito: hola vjinete. Esto lo he probado en mi DS y funciona.

Prueba si te funciona con una del tipo numero (u8, int, float,...). Si no rula, posiblemente te tocara antes convertir la numerica en char con la instruccion:
-----
char texto[]= " "; // dentro del [] mete el nº de digitos max qe creas qe pueda tener +1.
sprintf(texto,"%d",variablenumericaqetengasparaelrecord);
FILE* testWrite = fopen ("archrecord.txt", "wb"); //wb = create/truncate & write
fwrite(texto, 30, 1, testWrite);
fclose(testWrite);



edit. lo del sonido mal asunto. Me parece qe lee formato raw y mod. MP3 no me suena.

Lo de poner & en la variable tb es buena idea :)

por cierto, una cosa MUY interesante es hacer qe avise si no ha conseguido abrir, escribir o leer el archivo.
en c la historia seria
----
if (fichero==NULL)
{
printf( "No se puede abrir el fichero.\n" );
exit( 1 );
}
-----
if (fclose(fichero)!=0)
printf( "Problemas al cerrar el fichero\n" );
-------
pasarlo a formato DS :)
Mira... Si alguno lo entiende mejor que yo y esta dispuesto, le paso el Codigo Fuente en un MP y que lo incluya y me lo pase de nuevo con la opción de guardar...
Porque yo, no se porque, por mas que lo intento NADA...
Yo te podría ayudar, depende de para qué. Si no es mucha cosa te ayudaría. Si es mucho no, prefiero continuar con mi juego.
Por ahora solo necesito poder guardar la puntuación...
Mas tarde si eso, ya que tu tambien has hecho un juego de PONG, me gustaría hacer una IA que no sea invencible...
Pero esto ultimo puede esperar...
THX!!!
Pues por mi vale, mandame el código y te pongo las partes que hace falta.


PD: Por cierto, para añadir música SI es mejor el PAFS. Creo que ya se como es mas o menos. Y lo de la IA es fácil. Ya hablamos mañana.
Bien, hoy ya es muy tarde pero mañana o pasado te lo paso por MP!
Ahora estoy y voy a estar hasta las 5-5:30. Si no luego a partir de las 8:30 me conectaré.
AVISO:
Pronto nueva versión!
Con capacidad de guardar maxima puntuación, cambiar musica de fondo y IA al que puedas vencer....
Yo diria que para el jueves o asi, aunque no se si la podre postear...
ESPERO QUE SI!!
23 respuestas