Voir la version complète : [PSP][Aide] Bug lorsque l'on veut quitter avec Home [résolu]
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
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
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
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();
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. @++
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();
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...
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é ^^
EDIT : Probleme réglé ^^
T'as fait quoi pour que ca fonctionne ?
vBulletin® v.3.7.2, Copyright ©2000-2008, Jelsoft Enterprises Ltd. Tous droits réservés - Version française vbulletin-fr.org