PDA

Voir la version complète : [PSP][Aide] Bug lorsque l'on veut quitter avec Home [résolu]


Poison
24/03/2007, 22h59
Bonjour , j'ai essayé d' adapter un jeu du site duzéro pour PSP, cependant lorsque je veut quitter mon jeu en utilisant la touche home la psp m'affiche "veuiller patienter" et ne quitte pas, je peut cependant l'éteindre normalement.

Voici le code :

http://rafb.net/p/kIDcbd83.html

Merci pour votre aide :D

Yodajr
24/03/2007, 23h12
Comme tu utilise oslib, déja tu peux virer tous ces pspkernel et ces callbacks, ils sont inclus à la lib : http://www.playeradvance.org/forum/showthread.php?t=2173

Poison
24/03/2007, 23h36
ok, merci bien pour l'info.

Voici mon code dorénavent : http://rafb.net/p/SO14bx63.html

Si quelqu'un peut trouver mon erreur sa serai sympa :) .

Merci d'avance

Yodajr
25/03/2007, 01h08
Ok, essaye de remplacer
while (continuer)
par
while (!osl_quit)
et
if (osl_keys->pressed.circle) {continuer = 0;}
par
if (osl_keys->pressed.circle) oslQuit();

Poison
25/03/2007, 17h54
Merci Yodajr, je fait comme ce qui suit et sa marche impec :

//La librairie principale OSLib
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <oslib/oslib.h>

//les callbacks
PSP_MODULE_INFO("OSLib Sample", 0, 1, 1);
PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER | THREAD_ATTR_VFPU);


int choixdunombre(int nombre,int nombreMystere,int nombreEntre);


int choixdunombre(int nombre,int nombreMystere, int nombreEntre)
{

//Si on presse la touche haut alores le nombre est egale au nombre +1
if ((osl_keys->pressed.up) && (nombreEntre !=nombreMystere)) nombre++;

//Sinon si on presse la touche bas alores le nombre est egale au nombre -1
else if ((osl_keys->pressed.down) && (nombreEntre !=nombreMystere)) nombre--;

else if ((osl_keys->pressed.right)&& (nombreEntre !=nombreMystere)) nombre = nombre + 10;

else if ((osl_keys->pressed.left) && (nombreEntre !=nombreMystere)) nombre = nombre - 10;

return nombre;
}

int main ()
{

//Initialisation de la librairie
oslInit(0);

//Initialisation du mode graphique
oslInitGfx(OSL_PF_8888, 1);

//Initialisation de la console texte
oslInitConsole();

// Génération du nombre aléatoire

int nombreMystere = 0, nombreEntre = 0;
const long MAX = 100, MIN = 1;

srand(time(NULL));
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
nombreEntre = 0;
long nombreCourant = 0;
long nbX = 0;
long guessnbX = 0;
int continuer = 1;

/* La boucle du programme. Elle se répète à l'infinie */


while (!osl_quit)
{
oslStartDrawing();

//Lit les touches
oslReadKeys();

//efface l'écran
oslCls();

// On demande le nombre

nombreCourant = choixdunombre(nombreCourant,nombreMystere,nombreEn tre);
oslPrintf_xy(159,120,"Quel est le nombre ?");
oslPrintf_xy(212,142,"%ld", nombreCourant);
// on met a jour le nb courant
if (osl_keys->pressed.cross)
{
nombreEntre = nombreCourant;
nbX++;
guessnbX++;
}
else if (osl_keys->pressed.up || osl_keys->pressed.down || osl_keys->pressed.right || osl_keys->pressed.left)
{
nbX=0;
}


// On compare le nombre entré avec le nombre mystère
if (nombreMystere > nombreEntre && nbX > 0)
oslPrintf_xy(192,82,"C'est plus !");
else if (nombreMystere < nombreEntre && nbX > 0)
oslPrintf_xy(192,82,"C'est moins !");
else if (nombreMystere == nombreEntre && nbX > 0)
oslPrintf_xy(53,82,"Bravo, vous avez trouve le nombre mystere en %ld coups !!!\n\n",guessnbX);

// regarde si on veut quiter

//Synchronise l'écran
oslSyncFrame();
}
//on quitte l'application
oslEndGfx();
oslQuit();
return 0;
}


Encore merci. @++

Yodajr
25/03/2007, 18h30
De rien ^^

Brunni
25/03/2007, 19h31
Heu yodajr, oslQuit ça quitte immédiatement, c'est pas toujours recommandé (tu n'as pas la possibilité de sauver, etc.) ;)
int continuer = 1;
while (!osl_quit && continuer)
{
if (osl_keys->pressed.circle)
continuer = 0;
}

[le jeu a été quitté: faire ici un nettoyage, sauvegarde, etc.]
oslQuit();

Yodajr
25/03/2007, 19h45
Mais je sais ca, il voulait pas sortir de la boucle juste pour le fun, mais pour quitter...
Je pense qu'il a pigé que l'appel à oslQuit fait revenir au XMB automatiquement, après c'est qu'une histoire de code pour faire ce qu'il y a faire avant...

Brunni
25/03/2007, 19h50
Ok sorry :)

Poison
28/03/2007, 19h16
Oui oui c'est bon, tout marche bien , merci quand meme à vous deux :p ,sinon je profite de mon poste pour vous demander totalement autre chose :

Je viens de me mettre sous linux, et je voulais savoir comment installer la librairie Oslib, car un mec m'avais aidé à le faire mais je n'y arrive plus ... j'ai pourtant cherché des tuto sur le net mais je n'ai rien trouvé du tout.

Donc s'il était possible de me décrire les étape à suivre pour installer la librairie sa serai super :D , car pour l'instant quand j'essaye de compiler mon main.c je vais dans le terminal et je tape psp-gcc main.c et voila les erreur que j'ai :

main.c:2:25: erreur: oslib/oslib.h : Aucun fichier ou répertoire de ce type
main.c:5: erreur: syntax error before string constant
main.c:5: attention : la définition de données n'a pas de type ni de classe de stockage
main.c:6: erreur: syntax error before ‘|’ token
main.c:6: attention : la définition de données n'a pas de type ni de classe de stockage
main.c: In function ‘main’:
main.c:14: erreur: ‘OSL_PF_8888’ undeclared (first use in this function)
main.c:14: erreur: (Chaque identificateur non déclaré est rapporté une seule fois
main.c:14: erreur: pour chaque fonction dans laquelle il apparaît.)


Merci d'avance :D

PS : je suis sous ubuntu ^^

EDIT : Probleme réglé ^^

Yodajr
31/03/2007, 23h02
EDIT : Probleme réglé ^^
T'as fait quoi pour que ca fonctionne ?