FORUM PS3, PSP & PS2 » Making Of » developpement sur NDS (Palib)

En ligne > Il y a 53 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici

 Mot :   Pseudo :  
 
 Page :  1  2
Page Précédente 
developpement sur NDS (Palib)
 
n°2304
Profil : Internaute
Posté le 26-12-2007 à 15:17:50   answer
 

Bonjour,
 
Je prépare mon projet de fin d'année en programmation C , j'ai décidé de faire un jeu sur NDS via une librairie Palib...
 
Je ne sais pas à quoi va ressembler mon jeu pour l'instant. Mon but est de juste apprendre le bases de la programation sur NDS (graphisme,entrée/sortie etc etc)..
 
Or je n'arrive pas à faire la chose la plus simple,c'est à dire compiler un code déja tapé..J'utilise le logiciel CodeBlock,j'ai inclus tout les "headers files" or il ne trouve pas certaines fonctions..De plus il faut que Codeblock à la fin de la compilation produise un fichier .nds or je ne sais pas les changements qu'il faut procéder pour obtenir ce résultat.
 
Si quelqu'un utilise la librairie Palib via le logiciel "Devkit Pro" pourrait t-il me donner un coup de main
 
Merci ;)

n°2305
Profil : Internaute
Posté le 26-12-2007 à 19:18:10   answer
 

zell789 a écrit :

Bonjour,
Je prépare mon projet de fin d'année en programmation C , j'ai décidé de faire un jeu sur NDS via une librairie Palib...


bibliothèque :o  
 

Citation :


Or je n'arrive pas à faire la chose la plus simple,c'est à dire compiler un code déja tapé..J'utilise le logiciel CodeBlock,j'ai inclus tout les "headers files" or il ne trouve pas certaines fonctions..De plus il faut que Codeblock à la fin de la compilation produise un fichier .nds or je ne sais pas les changements qu'il faut procéder pour obtenir ce résultat.


Je connais pas du tout Palib, mais sans les sorties d'erreur ça va de toute façon être dur de pouvoir t'aider ;)
Tu es sûr que c'est le prototype qu'il ne trouve pas? C'est peut être l'édition de liens qui chie.


---------------
1f u c4n r34d th1s u r34lly n33d t0 g37 l41d.
1f u c4n wr1t3 1t t00.
n°2306
Profil : Internaute
Posté le 26-12-2007 à 23:03:52   answer
 

Skyfighter = > Merci de ton aide
 
Voici le programme  
 

Code :
  1. // Includes
  2. #include <PA9.h>       // Include for PA_Lib
  3. // Function: main()
  4. int main(int argc, char ** argv)
  5. {
  6. PA_Init();    // Initializes PA_Lib
  7. PA_InitVBL(); // Initializes a standard VBL
  8. // Infinite loop to keep the program running
  9. while (1)
  10. {
  11.  PA_WaitForVBL();
  12. }
  13. return 0;
  14. } // End of main()


 
 
Voici en même temps le lien de la page : http://www.palib.info/wikifr/doku.php?id=day1
 
Les erreurs affichés sont de type sous DevC++ : /Dev-Cpp/include/PA9.h C:\Documents and Settings\nicolas bun\Bureau\C nds.h: No such file or directory.
                                               /Dev-Cpp/include/PA9.h C:\Documents and Settings\nicolas bun\Bureau\C nds/memory.h: No such file or directory.  
                                               /Dev-Cpp/include/PA9.h C:\Documents and Settings\nicolas bun\Bureau\C nds/bios.h: No such file or directory.  
                                               
Sous codeblock cela renvoit le même type d'erreur..Or j'ai bien inclus tout les headers dans le repertoire include des logiciels..

n°2307
Profil : Internaute
Posté le 27-12-2007 à 10:25:09   answer
 

zell789 a écrit :


Les erreurs affichés sont de type sous DevC++ : /Dev-Cpp/include/PA9.h C:\Documents and Settings\nicolas bun\Bureau\C nds.h: No such file or directory.
                                               /Dev-Cpp/include/PA9.h C:\Documents and Settings\nicolas bun\Bureau\C nds/memory.h: No such file or directory.  
                                               /Dev-Cpp/include/PA9.h C:\Documents and Settings\nicolas bun\Bureau\C nds/bios.h: No such file or directory.                                                
Sous codeblock cela renvoit le même type d'erreur..Or j'ai bien inclus tout les headers dans le repertoire include des logiciels..


L' erreur en elle-même est louche. On dirait qu'il cherche des headers dont dépend PA9.h à un endroit foireux (ie ton bureau) alors qu'il trouve sans problème PA9.h.
Est-ce que "C nds.h", "C nds/memory.h" et "C nds/bios.h" sont dans un sous répertoire du répertoire include de ton logiciel?
Si c'est le cas il faut sans doute rajouter ce sous répertoire dans les chemins d'accès des includes de ton projet.


---------------
1f u c4n r34d th1s u r34lly n33d t0 g37 l41d.
1f u c4n wr1t3 1t t00.
n°2308
Profil : Internaute
Posté le 27-12-2007 à 11:11:49   answer
 

Citation :

Est-ce que "C nds.h", "C nds/memory.h" et "C nds/bios.h" sont dans un sous répertoire du répertoire include de ton logiciel?
Si c'est le cas il faut sans doute rajouter ce sous répertoire dans les chemins d'accès des includes de ton projet.

 

C'est ce que j'ai pensé également,mais je trouvais ça super "lourd", le PA.9 contient au moins 30 header à l'interieur or des bilbliotheques ( :D ) tel que SDL fonctionne de la même maniere or Codeblock ou Dev-C++ arrivent à utiliser les header contenus dans le repertoire SDL

 

J'ai réussi a joindre un collègue en fait c'était super simple..

 

Je n'avais pas besoin de compilateur C bien que le code soit en C,c'est pour cela que je pensais qu'il fallait à tout prix le taper dans un logiciel..Il faut mettre dans le même repertoire le code source,le makefile de Palib et des icones indispensables pour un jeu DS

 

Voici à quoi doit ressembler un projet DS http://dapagath.free.fr/ESGI/base.bmp + un fichier build.bat

 

Je n'ai pas testé encore,mais je te remercie de ton aide Skyfighter :)


Message édité par zell789 le 27-12-2007 à 11:14:06
n°2309
Profil : Internaute
Posté le 28-12-2007 à 00:02:41   answer
 

Y en a qui utilisent encore des fichiers BMP :ouch:
 
:D


---------------
Code ami SSBB: 2234-8592-7528
PSN: AruOnline
Playstation 3: This is waiting.
n°2310
Profil : Internaute
Posté le 28-12-2007 à 11:07:56   answer
 

Aru a écrit :

Y en a qui utilisent encore des fichiers BMP :ouch:
 
:D


Dis l'homme qui fait un shmup en java :whistle:


---------------
1f u c4n r34d th1s u r34lly n33d t0 g37 l41d.
1f u c4n wr1t3 1t t00.
n°2311
Profil : Internaute
Posté le 28-12-2007 à 14:33:26   answer
 

Je vois absolument pas le rapport...


---------------
Code ami SSBB: 2234-8592-7528
PSN: AruOnline
Playstation 3: This is waiting.
n°2312
Profil : Internaute
Posté le 29-12-2007 à 09:58:37   answer
 

Aru a écrit :

Je vois absolument pas le rapport...


C'est plus simple niveau code mais ça bouffe plus de mémoire.


---------------
1f u c4n r34d th1s u r34lly n33d t0 g37 l41d.
1f u c4n wr1t3 1t t00.
n°2313
Profil : Internaute
Posté le 29-12-2007 à 15:17:29   answer
 

On a rien sans rien...
:P
 
Et puis mon shmup ne verra jamais le jour si ça continue...
Je préfère développer un logiciel, là au moins j'ai que du code à faire :)


---------------
Code ami SSBB: 2234-8592-7528
PSN: AruOnline
Playstation 3: This is waiting.
n°2316
Profil : Modérateur
Posté le 08-01-2008 à 14:28:14   answer
 

Aru a écrit :

Y en a qui utilisent encore des fichiers BMP :ouch:


Oui, pour pas mal de trucs... Ne serait-ce que parce que c'est le seul format graphique de base utilisé par SDL. Certes, je peux m'embêter avec SDL_image mais vu les ennuis que j'ai pu avoir avec en terme de compilation cygwin, si je peux n'utiliser que la bibliothèque de base, je le fais.

 

Cela dit, je ne sais pas bien ce que tu as contre le BMP... Il y a peut-être des problèmes de droits, c'est possible. A part ça, pour une planche de sprites, tu ne peux pas utiliser un format compressé avec pertes, et en général le format compressé sans perte est lourd à utiliser (genre GIF). Or si tu prends un format non compressé, ils sont tous à peu près identiques à l'usage (c'est un dump pur et simple de la mémoire, en gros, avec un header par-dessus). Donc que ce soit PNG, TGA ou BMP, ça ne fait plus grande différence. Ah si, le BMP est stocké à l'envers, ça peut jouer des tours :)

Message cité 2 fois
Message édité par Koren le 08-01-2008 à 14:28:30
n°2317
Profil : Internaute
Posté le 08-01-2008 à 18:03:04   answer
 

Le PNG est un format compressé, mais sans perte, non ?
http://fr.wikipedia.org/wiki/Portable_Network_Graphics
 
En cours de traitement d'image, on travaillait presque exclusivement en PNG, pour éviter d'avoir des images trop lourdes (BMP) ou des artefacts de compression rendant impossible tout traitement (JPEG).

n°2318
Profil : Internaute
Posté le 08-01-2008 à 18:59:08   answer
 

Koren a écrit :


Cela dit, je ne sais pas bien ce que tu as contre le BMP... Il y a peut-être des problèmes de droits, c'est possible. A part ça, pour une planche de sprites, tu ne peux pas utiliser un format compressé avec pertes, et en général le format compressé sans perte est lourd à utiliser (genre GIF). Or si tu prends un format non compressé, ils sont tous à peu près identiques à l'usage (c'est un dump pur et simple de la mémoire, en gros, avec un header par-dessus). Donc que ce soit PNG, TGA ou BMP, ça ne fait plus grande différence. Ah si, le BMP est stocké à l'envers, ça peut jouer des tours :)


Sans compter que le BMP gère les palettes de couleur si vraiment on veut faire une compression basique (contrairement au PPM pour rester dans les formats sans compression).
 

Citation :


En cours de traitement d'image, on travaillait presque exclusivement en PNG, pour éviter d'avoir des images trop lourdes (BMP) ou des artefacts de compression rendant impossible tout traitement (JPEG).


Vous faisiez quoi en traitement d'image?
En tant que format de sortie je dis pas, mais comme format de traitement vu que ca gère pas les calques ca me parait limité là comme ca :heink:  


---------------
1f u c4n r34d th1s u r34lly n33d t0 g37 l41d.
1f u c4n wr1t3 1t t00.
n°2319
Profil : Modérateur
Posté le 08-01-2008 à 20:17:25   answer
 

Sn@ke a écrit :

Le PNG est un format compressé, mais sans perte, non ?


Oui, comme peuvent l'être le gif ou le tiff (j'avais ppm/pnm en tête, en fait)... Maintenant, si tu ne veux pas t'embêter avec des fonctions de lectures trop complexes, il n'est pas rare d'utiliser des images non compressées, même sans pertes.

 
Skyfighter a écrit :

Vous faisiez quoi en traitement d'image?
En tant que format de sortie je dis pas, mais comme format de traitement vu que ca gère pas les calques ca me parait limité là comme ca :heink:


Sans m'avancer, je soupçonne qu'il parle de traitement d'image par programmation, pas via un logiciel comme Photoshop/Gimp. Dans ce cas-là, les images ne sont que des stockages d'images à traiter et éventuellement de résultats, et il n'est pas trop important d'avoir des calques (dans la mémoire de la machine, tu as droit à tous les calques et autres astuces que tu veux).

Message cité 1 fois
Message édité par Koren le 08-01-2008 à 20:17:37
n°2320
Profil : Internaute
Posté le 08-01-2008 à 22:35:35   answer
 

Koren a écrit :

Oui, pour pas mal de trucs... Ne serait-ce que parce que c'est le seul format graphique de base utilisé par SDL. Certes, je peux m'embêter avec SDL_image mais vu les ennuis que j'ai pu avoir avec en terme de compilation cygwin, si je peux n'utiliser que la bibliothèque de base, je le fais.


C'est bien vrai ça.  
 
J'ai bien galéré pour pouvoir utiliser SDL avec cygwin par contre j'ai jamais réussi à faire fonctionner SDL_image ou SDL_ttf. :sweat:

Message cité 2 fois
Message édité par shadow2 le 08-01-2008 à 22:36:13

---------------
Linux peut être sexy, le preuve :
 
shadow2@shadow2-linux:~$ who | grep -i blonde | talk; cd ~; wine; talk; touch; unzip; touch; strip; gasp; finger; mount; fsck; more; yes; gasp; unmount; make clean; sleep;
n°2321
Profil : Internaute
Posté le 09-01-2008 à 10:17:27   answer
 

Le post qui suit est totalement hors sujet :whistle:  
 

shadow2 a écrit :


shadow2@shadow2-linux:~$ who | grep -i blonde | talk; cd ~; wine; talk; touch; unzip; touch; strip; gasp; finger; mount; fsck; more; yes; gasp; unmount; make clean; sleep;


 :jap:
 

Spoiler :


Cependant, c'est un viol... sinon il y aurait des && à la place des ; ;) :D
Mais bon... de toute facon sans arguments la moitié des commandes ne passeraient pas :P


---------------
1f u c4n r34d th1s u r34lly n33d t0 g37 l41d.
1f u c4n wr1t3 1t t00.
n°2322
Profil : Internaute
Posté le 09-01-2008 à 10:30:11   answer
 

Koren a écrit :


Sans m'avancer, je soupçonne qu'il parle de traitement d'image par programmation, pas via un logiciel comme Photoshop/Gimp. Dans ce cas-là, les images ne sont que des stockages d'images à traiter et éventuellement de résultats, et il n'est pas trop important d'avoir des calques (dans la mémoire de la machine, tu as droit à tous les calques et autres astuces que tu veux).


Tout à fait, on programmait des algos de détection de contour, de détection de formes, de compensation de mouvement, d'interpolation, de restauration d'image,  etc...
Durant la première partie du module, on travaillait en Java, et dans la 2e partie en Matlab. Donc les calques, on n'en avait pas vraiment besoin :)

n°2323
Profil : Modérateur
Posté le 09-01-2008 à 15:08:41   answer
 

shadow2 a écrit :

C'est bien vrai ça.  
 
J'ai bien galéré pour pouvoir utiliser SDL avec cygwin par contre j'ai jamais réussi à faire fonctionner SDL_image ou SDL_ttf. :sweat:


Ben sur le fond, ce n'est pas fait pour... SDL est fait pour tourner avec mingw (donc compiler en gcc -mno-cygwin). Seulement, pour je ne sais quelle raison, ça me pose problème de me débarasser de cygwin. SDL_image, je crois que j'y suis parvenu, mais il y a deux chances sur trois pour que je mette deux jours la prochaine fois que j'en ai besoin, donc j'évite (pour ce que ça sert...). Idem pour SGE. SDL_ttf, j'ai eu tellement de soucis avec que j'ai laissé tombé, j'ai réécrit une variante sur l'idée de SDL_font qui utilise freetype pour générer les bitmaps.
 
 
Skyfighter : un classique... ;) Quoique le romantique que je suis rajouterais des coups de date, nice, look et cie, c'est un peu brusque. Encore que j'en ai vu de plus salaces ;)

n°2324
Profil : Internaute
Posté le 09-01-2008 à 18:46:36   answer
 

Sn@ke a écrit :


Durant la première partie du module, on travaillait en Java, et dans la 2e partie en Matlab. Donc les calques, on n'en avait pas vraiment besoin :)


En matlab :??:
Y'a des motivés quand même...
La dernière fois que j'ai fait du traitement d'image un peu bourrin (avec de l'apprentissage de background) on était resté en C et c'était déjà bien lent :sweat:  
 

Citation :


Skyfighter : un classique... ;) Quoique le romantique que je suis rajouterais des coups de date, nice, look et cie, c'est un peu brusque. Encore que j'en ai vu de plus salaces ;)


Certes... c'est toujours plus fin que les histoires de Q en 777...


---------------
1f u c4n r34d th1s u r34lly n33d t0 g37 l41d.
1f u c4n wr1t3 1t t00.
n°2325
Profil : Internaute
Posté le 09-01-2008 à 19:52:55   answer
 

Ben une image non compressée bouffe une quantité de mémoire atrocement supérieure, pour un résultat identique...


---------------
Code ami SSBB: 2234-8592-7528
PSN: AruOnline
Playstation 3: This is waiting.
n°2326
Profil : Internaute
Posté le 09-01-2008 à 21:49:54   answer
 

Skyfighter a écrit :

En matlab :??:
Y'a des motivés quand même...
La dernière fois que j'ai fait du traitement d'image un peu bourrin (avec de l'apprentissage de background) on était resté en C et c'était déjà bien lent :sweat:


Dixit le prof : "on utilisera du matlab pour ne pas être emmerdé avec des histoires d'API, de compilation, bref des problèmes liés à un langage. Et vu qu'on veut faire du calcul matriciel, ça ira très bien."
Ce prof était un chercheur à l'INRIA de Sophia Antipolis (qui a participé à la conception du JPEG2000 si je me souviens bien, et qui travaillait sur un codec H264 quand j'étais en dernière année, c'est à dire en 2004-2005), et la plupart des algos de traitement d'image sont développés en Matlab là-bas visiblement ;)


Message édité par Sn@ke le 09-01-2008 à 21:50:28
n°2327
Profil : Modérateur
Posté le 09-01-2008 à 22:14:10   answer
 

Skyfighter a écrit :

En matlab :??:
Y'a des motivés quand même...


En fait, c'est probablement un des trucs les plus adaptés qui soit... du moins pour l'étape de développement (peut-être moins quand tu emballes un algo pour le vendre, cependant).
 

Skyfighter a écrit :

La dernière fois que j'ai fait du traitement d'image un peu bourrin (avec de l'apprentissage de background) on était resté en C et c'était déjà bien lent :sweat:


Matlab, si tu sais t'en servir, est potentiellement bien plus bourrin et rapide que du C pour faire ce genre de chose. Il est optimisé pour paralléliser les calculs vectoriels et matriciels, pas le C. Bon, en fait, le C est un des langages les plus lents qui soit pour faire ça, à la base. Même Fortran tourne nettement plus vite. La faute à l'absence de type tableau en C pour aider l'optimisation au niveau compilateur.
 
Certes, si tu fais beaucoup de boulot en C, ou que tu utilises certains librairies déjà optimisées à fond (je pense surtout à Blitz++ qui fait des parcours fractals des tableaux pour les convolution afin d'optimiser l'utilisation du cache, mais aussi à la librairie libre de vision par ordinateur d'Intel), tu peux y gagner. Mais Matlab, c'est loin d'être idiot, surtout que tout est déjà optimisé correctement (à condition, cependant, de SAVOIR écrire du code Matlab... pas du code qui marche en Matlab, du code pensé dans l'esprit Matlab), c'est facile de voir étape par étape ce que ça donne, et une quantité phénoménale d'algos de base sont DEJA codés correctement.
 
Quand je dis pensé Matlab, c'est que s'il y a des trucs du genre "for", ils ne sont pas faits pour être utilisés. On ne fait pas une boucle sur i si la séquentialité des opérations n'est pas requise, on passe un vecteur [1:n] à la fonction. C'est archi-difficile au début d'écrire certains trucs, mais on gagne deux, trois ou quatre ordre de grandeur en temps, et ça finit par tourner plus vite que le C "naturel" dans beaucoup de situations.
 
Dans le genre truc marrant en Matlab : j'avais un fichier de données contenant des champs (en binaire). Au début, j'ai cru qu'il était plus simple de remplir un tableau en lisant le ficher enregistrement  par enregistrement. Mais avec les optimisations, j'ai découvert qu'il allait plus vite de lire N fois le fichier, une fois par champ, et spécifiant le saut entre deux enregistrements consécutifs et l'offset du champ... C'est vraiment une philosophie particulière.

n°2328
Profil : Modérateur
Posté le 09-01-2008 à 22:21:03   answer
 

Aru a écrit :

Ben une image non compressée bouffe une quantité de mémoire atrocement supérieure, pour un résultat identique...


Tu sais, si tu veux avoir trois icones dans ton programme SDL, crois-moi, tu préfères utiliser du BMP que de perdre deux jours à compiler SDL_image quand ça ne marche pas, trouver une autre librairie qui fait le même truc, ou merder toi-même à lire un fichier avec une compression à la noix.
 
De toute façon, ce n'est qu'un problème de stockage sur le disque dur, en mémoire, c'est forcément décompressé, et quand tu échange le fichier, c'est zippé, donc BMP ou format compressé, l'archive a la même taille. Donc tant que tu n'as pas de problème de place sur le disque (et franchement, il n'y en a plus beaucoup), c'est franchement un problème secondaire.
 
Par ailleurs, il y a un autre truc : la plupart de mes jeux, je cherche à ce qu'ils tiennent dans une RAM de 64-128Mo disons. Donc je suis limité à quelques dizaines de Mo de sprites (2-300 si le jeu est long et change de sprite selon les niveaux). Très franchement, même mon portable a 80Go de disque, qu'il y ait 200Mo de fichiers graphiques, je m'en balance.
 
Même quand je faisais du traitement d'image, j'utilisais des formats non compressés (BMP ou PPM) pour ne pas me prendre le chou, quelques Go la minute, et alors, quelle importance, finalement ?

n°2329
Profil : Internaute
Posté le 09-01-2008 à 23:02:39   answer
 

Koren a écrit :


En fait, c'est probablement un des trucs les plus adaptés qui soit... du moins pour l'étape de développement (peut-être moins quand tu emballes un algo pour le vendre, cependant).


Moi je veux bien... mais je comprendrais jamais qu'on puisse considérer un langage idéal pour faire du dev un truc qui laisse passer des problèmes détectés au type checking par n'importe quel langage compilé, qui plus est si c'est pour exploser après 4h d'apprentissage quand on essaye de passer à l'échelle (bon après, je développe pas non plus en Haskell ou en Caml... mais j'ai de très mauvais souvenir de quasiment tout ce qui ressemble à un langage de script pour du dev d'algo consécutivement à une implémentation d'un filtre bayeien en perl).

 
Citation :


Matlab, si tu sais t'en servir, est potentiellement bien plus bourrin et rapide que du C pour faire ce genre de chose. Il est optimisé pour paralléliser les calculs vectoriels et matriciels, pas le C. Bon, en fait, le C est un des langages les plus lents qui soit pour faire ça, à la base. Même Fortran tourne nettement plus vite. La faute à l'absence de type tableau en C pour aider l'optimisation au niveau compilateur.


A supposer que t'aies du multicore et de la ram oui. Moi je faisais du matlab sur mon portable avec ses 512Mo de ram et son pentium M 1.75GHz. Déjà que matlab passe son temps à swapper, je doute qu'il s'amuse à faire du multithreading chez moi. Maintenant à l'INRIA ils doivent avoir du bon serveur de calcul donc effectivement je m'avance un peu.

 
Citation :


Quand je dis pensé Matlab, c'est que s'il y a des trucs du genre "for", ils ne sont pas faits pour être utilisés. On ne fait pas une boucle sur i si la séquentialité des opérations n'est pas requise, on passe un vecteur [1:n] à la fonction. C'est archi-difficile au début d'écrire certains trucs, mais on gagne deux, trois ou quatre ordre de grandeur en temps, et ça finit par tourner plus vite que le C "naturel" dans beaucoup de situations.


Faudra quand même un jour au'on m'explique pourquoi entre une boucle for dans un m-file et une boucle for dans l'interpréteur on se prend genre un facteur 10 en temps d'exécution. Mais juste histoire de prendre un exemple: là j'ai utilisé matlab pour un projet de traitement de la parole avec voicebox (extraction des coeffs MFCC et cie) et netlab (pour les GMMs) dans la plupart des cas j'ai des boucles sur des ouvertures de fichiers pour les passer à un GMM... de temps en temps un find mais c'est pas là ou ca prend du temps. Au final, extraire les MFCC avec HTK c'était quand même vachement plus rapide qu'avec voicebox (et ca phagocyte joyeusement mon dur, parce que le fichier HTK est plus lourd que la source en WAV mais bon...).

 
Citation :


Dans le genre truc marrant en Matlab : j'avais un fichier de données contenant des champs (en binaire). Au début, j'ai cru qu'il était plus simple de remplir un tableau en lisant le ficher enregistrement  par enregistrement. Mais avec les optimisations, j'ai découvert qu'il allait plus vite de lire N fois le fichier, une fois par champ, et spécifiant le saut entre deux enregistrements consécutifs et l'offset du champ... C'est vraiment une philosophie particulière.


C'est bizarre... on dirait juste l'inverse du perl.

Message cité 1 fois
Message édité par Skyfighter le 09-01-2008 à 23:04:15

---------------
1f u c4n r34d th1s u r34lly n33d t0 g37 l41d.
1f u c4n wr1t3 1t t00.
n°2331
Profil : Modérateur
Posté le 10-01-2008 à 01:42:33   answer
 

Skyfighter a écrit :

mais je comprendrais jamais qu'on puisse considérer un langage idéal pour faire du dev un truc qui laisse passer des problèmes détectés au type checking par n'importe quel langage compilé


Dans cette situation précise, il n'y a pas de problème... Les images sont des tableaux de type valeur, un type valeur est universel en Matlab (en première approximation) donc de toute façon tu n'auras aucun problème de typage. Par ailleurs, ce que tu perds en force de typage (pas grand-chose là), tu le gagnes en protection anti-débordement et en simplicité du code (20 lignes de matlab peuvent donner 1000 lignes de C, voire bien plus, crois-moi, j'ai passé la moitié de l'année à réécrire du code Matlab en C).
 
 

Skyfighter a écrit :

qui plus est si c'est pour exploser après 4h d'apprentissage quand on essaye de passer à l'échelle


C'est partiellement interprété, mais ça passe très bien à l'échelle tant que tu n'as pas de problème de mémoire (mais c'est pareil en C, de toute façon, sauf à gérer du cache disque).
 
 

Skyfighter a écrit :

A supposer que t'aies du multicore et de la ram oui. Moi je faisais du matlab sur mon portable avec ses 512Mo de ram et son pentium M 1.75GHz. Déjà que matlab passe son temps à swapper, je doute qu'il s'amuse à faire du multithreading chez moi. Maintenant à l'INRIA ils doivent avoir du bon serveur de calcul donc effectivement je m'avance un peu.


Non, ce n'est pas un problème de multithread ou autre. Je ne sais pas comment matlab procède (utilisation du jeu d'instruction étendu pour des calculs en parralèle, ce que les compilateurs C ne peuvent pas faire faute d'infos sur les structures, ou bien encore cache de résultat pour les fonctions), mais il fonctionne réellement plus vite sur certaines choses, et en particulier les traitements d'image.
 
 
Aucune idée quant à ton exemple, je n'ai jamais touché à Voicebox...  :??:  
 
Tiens, un exemple : inverser une matrice de covariance d'un processus AR en dimension 1000 (PII 400, 256MB):
 
MatLab 5.3 : 48s
R : 77s
Fortran : 79s
C++ : 98s
S-Plus 5.2 : 109s
Mathematica : 127s (non compilé), 99s (compilé)
 
Je ne doute pas qu'avec optimisation et Blitz++, le C++ donne de meilleurs résultats. Mais quand ton algo change six fois par heure, tu n'as pas envie de développer ça en C, ça prend dix fois plus de temps.
 
Et ça vient de quelqu'un d'assez réfractaire à Matlab et fan de C++, je précise...

n°2335
Profil : Internaute
Posté le 10-01-2008 à 11:19:58   answer
 

Koren a écrit :


Dans cette situation précise, il n'y a pas de problème... Les images sont des tableaux de type valeur, un type valeur est universel en Matlab (en première approximation) donc de toute façon tu n'auras aucun problème de typage.


Ok... mais si ils pouvaient vaguement faire une édition de liens AVANT exécution ce serait pas du luxe (encore sur le nombre d'arguments vu comment c'est géré par le langage je peux comprendre que non... mais les noms de fonctions quand même...).

 
Citation :


Par ailleurs, ce que tu perds en force de typage (pas grand-chose là), tu le gagnes en protection anti-débordement et en simplicité du code (20 lignes de matlab peuvent donner 1000 lignes de C, voire bien plus, crois-moi, j'ai passé la moitié de l'année à réécrire du code Matlab en C).


Là on est d'accord. Le "foreach implicite" est assez violent. Mais je me demande comment ils font. Dans le code d'une fonction je vois pas trop ce qui permet de détecter que quelquechose est une vecteur ou une matrice (sachant que y'a aucun warning quand on utilise une matrice comme un vecteur).

 
Citation :


C'est partiellement interprété, mais ça passe très bien à l'échelle tant que tu n'as pas de problème de mémoire (mais c'est pareil en C, de toute façon, sauf à gérer du cache disque).


T'as quand même plus de marge en C. Les truc dont tu n'as plus besoin tu peux les libérer (enfin si y'a un équivalent de free en matlab je l'ai jamais vu dans aucun bout de code).

 
Citation :


Non, ce n'est pas un problème de multithread ou autre. Je ne sais pas comment matlab procède (utilisation du jeu d'instruction étendu pour des calculs en parralèle, ce que les compilateurs C ne peuvent pas faire faute d'infos sur les structures, ou bien encore cache de résultat pour les fonctions), mais il fonctionne réellement plus vite sur certaines choses, et en particulier les traitements d'image.


Je m'incline devant le bench :jap:
Par esprit de troll, t'en aurais pas un sur pentium 1 histoire qu'il y ait pas de MMX et moins de cache :??: :whistle:

 

Message cité 1 fois
Message édité par Skyfighter le 10-01-2008 à 11:20:18

---------------
1f u c4n r34d th1s u r34lly n33d t0 g37 l41d.
1f u c4n wr1t3 1t t00.
n°2336
Profil : Modérateur
Posté le 10-01-2008 à 16:25:58   answer
 

Skyfighter a écrit :

Là on est d'accord. Le "foreach implicite" est assez violent. Mais je me demande comment ils font. Dans le code d'une fonction je vois pas trop ce qui permet de détecter que quelquechose est une vecteur ou une matrice (sachant que y'a aucun warning quand on utilise une matrice comme un vecteur).


Je pense (en fait, je suis certain) que les types Matlab ne sont pas juste des pointeurs, mais incluent une description précise du contenu (taille, type, etc.). Matlab gère clairement une table des types ou un truc du genre.

 

Il n'y a pas de raison d'avoir de warning pour une confusion vecteur/matrice, d'ailleurs, parce que neuf fois sur dix, ça a un sens (et dans le dixième cas, tu as une erreur).

 
Skyfighter a écrit :

T'as quand même plus de marge en C. Les truc dont tu n'as plus besoin tu peux les libérer (enfin si y'a un équivalent de free en matlab je l'ai jamais vu dans aucun bout de code).


Heureusement qu'il y en a un, et si tu ne l'utilise pas, je ne m'étonne pas qu'il y ait des soucis mémoire :mdr: C'est 'clear', et il est compatible avec les regexp (genre clear a* fait un free sur toutes les variables commençant par a). L'avantage par rapport à un free, d'ailleurs, c'est que la variable n'existe plus dans le contexte, donc tu ne peux plus y faire référence (ergo pas de segfault).

 

A noter que tu peux faire un clear local d'une variable globale : elle n'est plus accessible localement, mais dès que tu sors du contexte, elle le redevient.

 
Skyfighter a écrit :

Par esprit de troll, t'en aurais pas un sur pentium 1 histoire qu'il y ait pas de MMX et moins de cache :??: :whistle:


Je t'en fais un moi-même demain... Une préférence ? Une convolution matricielle, ça te va ? Histoire d'avoir quelque chose qui ait un sens en terme de traitement d'image...

 

Edit : arf, tu as dit pentium 1... J'ai bien un P60 qui traîne, mais de là à passer deux heures à installer Matlab dessus...

Message cité 1 fois
Message édité par Koren le 10-01-2008 à 16:27:10
n°2338
Profil : Internaute
Posté le 10-01-2008 à 18:01:06   answer
 

Koren a écrit :


Heureusement qu'il y en a un, et si tu ne l'utilise pas, je ne m'étonne pas qu'il y ait des soucis mémoire :mdr: C'est 'clear', et il est compatible avec les regexp (genre clear a* fait un free sur toutes les variables commençant par a). L'avantage par rapport à un free, d'ailleurs, c'est que la variable n'existe plus dans le contexte, donc tu ne peux plus y faire référence (ergo pas de segfault).


Je prends note :jap:  
 

Citation :


A noter que tu peux faire un clear local d'une variable globale : elle n'est plus accessible localement, mais dès que tu sors du contexte, elle le redevient.


Le pire c'est que j'ai souvenir de cas ou j'aurais eu besoin de ce genre de truc :whistle:  
 

Citation :


Je t'en fais un moi-même demain... Une préférence ? Une convolution matricielle, ça te va ? Histoire d'avoir quelque chose qui ait un sens en terme de traitement d'image...
Edit : arf, tu as dit pentium 1... J'ai bien un P60 qui traîne, mais de là à passer deux heures à installer Matlab dessus...


Je t'aurais bien proposé un AMD si je savais si matlab n'était pas compatible 3Dnow, ou un bon vieux 68k... mais là doit aps y avoir de matlab pour :sweat:


---------------
1f u c4n r34d th1s u r34lly n33d t0 g37 l41d.
1f u c4n wr1t3 1t t00.
n°2445
Profil : Internaute
Posté le 01-05-2008 à 23:51:31   answer
 

Je suis en train de réaliser mon projet de fin année en langage C et je tombe sur un bug extrêmement vicieux (ou je suis extrêmement   stupide au choix)

 

voici le programme

 
Code :
  1. void CompareScore(int scorej){
  2. // Les PA_OutPut correspondent à des affichages sur la DS et je pense ne joue en rien sur mon probleme
  3. int i=0;
  4. int score[3]={0};
  5. FILE *fichier = NULL;
  6. char texteAffiche[11] = "";
  7. fichier = fopen("/score.sav", "r" );
  8. if (fichier != NULL) {
  9.  fscanf(fichier, "%d %d %d", &score[0], &score[1],&score[2]);
  10.  fclose(fichier);
  11. }
  12. else {
  13.  PA_OutputSimpleText(1, 0, 10, "Fichier: Ouverture du fichier échouée lors de la récupération des HighScores" );
  14. }
  15. //2eme méthode, je compare le score du joueurs avec les valeurs de score[] qui contient les scores et je m'arrete des que scorej est supéreieur à une valeur du tableau
  16. while (i<3 && scorej<score[i]){
  17.  i++;
  18. }
  19. //Grace à l'indice ou s'est arrété le i,je peux connaitre la position du nouveau record établi
  20. switch(i){
  21.  case 0:
  22.   PA_OutputSimpleText(0,5,5, "Nouveau Record" );
  23.   score[0]=scorej;
  24.   break;
  25.  case 1:
  26.   PA_OutputSimpleText(0,5,5, "2eme" );
  27.   //J'intercalle les scores (la même chose qu'en dessous)
  28.   score[2]=score[1];
  29.   score[1]=scorej;
  30.   i=4;
  31.   break;
  32.  case 2:
  33.   PA_OutputSimpleText(0,5,5, "3eme" );
  34.   score[2]=scorej;
  35.   break;
  36.  case 3:
  37.   PA_OutputSimpleText(0,5,5, "Non classé" );
  38.   break;
  39. }
  40. //1ere méthode
  41. //Comparaison avec le 1er score
  42. /*if(scorej>score[0]){
  43.  PA_OutputSimpleText(0,5,7, "Nouveau Record" );
  44.  //Le 3eme score prend la 2eme score,le 2eme le 1er puis le 1er le nouveau record
  45.  score[2]=score[1];
  46.  score[1]=score[0];
  47.  score[0]=scorej;
  48. }
  49. else{
  50.  // Comparaison avec le 2eme score
  51.  if(scorej>score[1]){
  52.  //Le 3eme score prend le 2eme socre,le 2eme score prend le nouveau score
  53.  PA_OutputSimpleText(0,5,7, "Classé 2eme" );
  54.  score[2]=score[1];
  55.  score[1]=scorej;
  56.  }
  57. }/*
  58. else
  59. if(scorej>score[2]){
  60.  PA_OutputSimpleText(0,5,7, "Classé 3eme" );
  61.  score[2]=scorej;
  62. }*/
  63. //enregistrement des nouveaux scores dans le fichier de sauvegarde
  64. fichier = fopen("/score.sav", "w+" );
  65. if (fichier != NULL)
  66. { rewind(fichier);
  67.  sprintf(texteAffiche, "%d %d %d  ", score[0], score[1],score[2]);   
  68.  fwrite(texteAffiche, 100, 1, fichier);   
  69.  fclose(fichier);
  70.  PA_OutputSimpleText(1, 0, 8, "Record sauvegardé !" );
  71. }   
  72. else{       
  73.   PA_OutputSimpleText(1, 0, 10, "Fichier : Echec d'ouverture du fichier lors de la sauvegarde du scoreJ1" );
  74. }
  75. }
 

Mon but est de gérer un high score pour cela en fin de partie,je transmet à la fonction le score du joueur, puis je ressors les 3 meilleurs du fichier '.sav' et je compare les valeurs contenus dans 'score.sav" avec le score du joueur..

 

Le problème est que lorsque le joueur réalise le 2eme meilleur score, le 2eme score doit se retrouver en 3eme position or j'ai le bug que la valeur qui doit être en 2eme position se  retrouve en 3eme positions également

 

Exemple : les meileures scores sont : 50,30,10, je fais 40 point. Je devrais donc avoir le classement suivant : 50,40,30 or j'ai : 50,40,40 :heink:

 

J'ai testé toute sorte de solution farfelus (que j'ai laissé en commentaire) bien que je pense que cette partie soit la plus fiable (et simple) or elle ne marche pas !

 
Code :
  1. /*if(scorej>score[0]){
  2. #  PA_OutputSimpleText(0,5,7, "Nouveau Record" );
  3. #  score[2]=score[1];
  4. #  score[1]=score[0];
  5. #  score[0]=scorej;
  6. # }
  7. # else{ 
  8. #  if(scorej>score[1]){
  9. #  PA_OutputSimpleText(0,5,7, "Classé 2eme" );
  10. #  score[2]=score[1];
  11. #  score[1]=scorej;
  12. #  }
  13. # }/*
  14. # else
  15. # if(scorej>score[2]){
  16. #  PA_OutputSimpleText(0,5,7, "Classé 3eme" );
  17. #  score[2]=scorej;
  18. # }*/
 

La le bug est que cela affiche 'Classé 2eme' puis 'classé 3eme' cela donne donc : 50,40,40....

 

Je ne comprend pas si le 2eme if est réalisé : if (scoreJ>score[1]) pourquoi va t-il réaliser aussi le if suivant cad : if (scorej>score[2])?? :cry:

 

Je suis persuadé que j'ai fais une grosse erreur mais en essayant par tout les moyens,je vois pas :(

 

Merci


Message édité par zell789 le 02-05-2008 à 00:35:29
n°2446
Profil : Internaute
Posté le 01-05-2008 à 23:58:07   answer
 

Argh le C, que c'est moche :cry:
 
:D
 
Je déteste ce langage :)


---------------
Code ami SSBB: 2234-8592-7528
PSN: AruOnline
Playstation 3: This is waiting.
n°2447
Profil : Internaute
Posté le 02-05-2008 à 00:30:59   answer
 

Aru a écrit :

Argh le C, que c'est moche :cry:

 

:D

 

Je déteste ce langage :)

 

J'avoue que je devrai faire un petit effort au niveau de la présentation je m'en occupe ! ah non la balise ne prend pas en compte les tabulations


Message édité par zell789 le 02-05-2008 à 00:33:14
n°2448
Profil : Internaute
Posté le 02-05-2008 à 01:33:07   answer
 

Essaies ça :

Code :
  1. if (scorej > score[0]) {
  2.        PA_OutputSimpleText(0,5,7, "Nouveau Record" );
  3.        score[2]=score[1];
  4.        score[1]=score[0];
  5.        score[0]=scorej;
  6. }
  7. else if (scorej > score[1]) {
  8.        PA_OutputSimpleText(0,5,7, "Classé 2eme" );
  9.        score[2]=score[1];
  10.        score[1]=scorej;
  11. }
  12. else if (scorej > score[2]) {
  13.        PA_OutputSimpleText(0,5,7, "Classé 3eme" );
  14.        score[2]=scorej;
  15. }


J'ai l'impression qu'il y a une accolade en trop et après l'avoir supprimé chez moi ça marche. ;)

Message cité 1 fois
Message édité par shadow2 le 02-05-2008 à 01:42:38

---------------
Linux peut être sexy, le preuve :
 
shadow2@shadow2-linux:~$ who | grep -i blonde | talk; cd ~; wine; talk; touch; unzip; touch; strip; gasp; finger; mount; fsck; more; yes; gasp; unmount; make clean; sleep;
n°2449
Profil : Internaute
Posté le 02-05-2008 à 18:29:05   answer
 

shadow2 a écrit :

Essaies ça :

Code :
  1. if (scorej > score[0]) {
  2.        PA_OutputSimpleText(0,5,7, "Nouveau Record" );
  3.        score[2]=score[1];
  4.        score[1]=score[0];
  5.        score[0]=scorej;
  6. }
  7. else if (scorej > score[1]) {
  8.        PA_OutputSimpleText(0,5,7, "Classé 2eme" );
  9.        score[2]=score[1];
  10.        score[1]=scorej;
  11. }
  12. else if (scorej > score[2]) {
  13.        PA_OutputSimpleText(0,5,7, "Classé 3eme" );
  14.        score[2]=scorej;
  15. }


J'ai l'impression qu'il y a une accolade en trop et après l'avoir supprimé chez moi ça marche. ;)

 

Merci de ton aide :)

 

Oui l'accolade de trop c'est surement pour le 1er else,j'ai mis une 2eme accolade pour éviter que si le 1er if est vrai il aille dans le 2nd. Mais ce n'est pas le cas

 

Bon je vais tester ça,je te donnerai les résultats :)

 

EDIT : Non y'a toujours ce foutu bug..Je fais 40 points (sur un highscore : 50,30,10) et il affiche "Classe 2eme" mais il affiche aussi "classe 3eme" (or il ne devrait pas)...:(


Message édité par zell789 le 02-05-2008 à 18:46:36
n°2450
Profil : Internaute
Posté le 02-05-2008 à 19:41:28   answer
 

C'est bête j'avais mal testé (Mauvais choix de valeurs  :whistle: ) en fait dans le code suivant :

Code :
  1. if (scorej > score[0]) {
  2.        PA_OutputSimpleText(0,5,7, "Nouveau Record" );
  3.        score[2]=score[1];
  4.        score[1]=score[0];
  5.        score[0]=scorej;
  6. }
  7. else if (scorej > score[1]) {
  8.        PA_OutputSimpleText(0,5,7, "Classé 2eme" );
  9.        score[2]=score[1];
  10.        score[1]=scorej;
  11. }
  12. else if (scorej > score[2]) {
  13.        PA_OutputSimpleText(0,5,7, "Classé 3eme" );
  14.        score[2]=scorej;
  15. }
 

Le troisième n'est pas bon. Tout simplement parce que le score du joueur sera forcément supérieur à celui du score[2] vu que celui-ci a pris la valeur du score[1] qui était lui-même inférieur au score du joueur. :D

 

Voilà c'était pas bien méchant en fait, je pense que tu pourras résoudre ton problème maintenant. Un booléen permettant de savoir si on est ou non rentré dans un des if devrait être suffisant. :)


Message édité par shadow2 le 02-05-2008 à 19:57:35

---------------
Linux peut être sexy, le preuve :
 
shadow2@shadow2-linux:~$ who | grep -i blonde | talk; cd ~; wine; talk; touch; unzip; touch; strip; gasp; finger; mount; fsck; more; yes; gasp; unmount; make clean; sleep;
n°2451
Profil : Internaute
Posté le 02-05-2008 à 20:34:46   answer
 

Citation :

Le troisième n'est pas bon. Tout simplement parce que le score du joueur sera forcément supérieur à celui du score[2] vu que celui-ci a pris la valeur du score[1] qui était lui-même inférieur au score du joueur. :D


 
TU peux me la refaire svp  [:hydderf:1] ?
 
Ceux que je n'arrive pas à comprendre est que vu si on suppose que le 2eme if est bon (cad if (scorej>score[1]){} ) pourquoi réalise t-il le test suivant (else if (scorej>score[2]){} Car le 2me if est bon..Oui je sais je suis lourd  :ange:  mais je n'arrive pas à saisir mon erreur !
 
Je vais quand même tester avec un booleen ;)
 
Merci !

n°2452
Profil : Internaute
Posté le 02-05-2008 à 21:37:13   answer
 

Voilà qui devrait éclairer ta lanterne : ;)

 
Code :
  1. /**
  2.  * Admettons qu'on a scorej = 40, score[0] = 50, score[1] = 30 et score[2] = 10
  3.  */
  4. if (scorej > score[0]) { // 40 > 50 -> faux
  5.      PA_OutputSimpleText(0,5,7, "Nouveau Record" );
  6.      score[2]=score[1];
  7.      score[1]=score[0];
  8.      score[0]=scorej;
  9. }
  10. else if (scorej > score[1]) {  // 40 > 30 -> vrai
  11.      PA_OutputSimpleText(0,5,7, "Classé 2eme" );
  12.      score[2]=score[1];    // score[2] vaut maintenant 30
  13.      score[1]=scorej;      // score[1] vaut maintenant 40
  14. }
  15. else if (scorej > score[2]) { // 40 > 30 -> vrai et c'est là que se situe le problème
  16.      PA_OutputSimpleText(0,5,7, "Classé 3eme" );
  17.      score[2]=scorej;      // score[2] vaut donc aussi 40
  18. }

Message cité 1 fois
Message édité par shadow2 le 02-05-2008 à 21:38:15

---------------
Linux peut être sexy, le preuve :
 
shadow2@shadow2-linux:~$ who | grep -i blonde | talk; cd ~; wine; talk; touch; unzip; touch; strip; gasp; finger; mount; fsck; more; yes; gasp; unmount; make clean; sleep;
n°2453
Profil : Internaute
Posté le 02-05-2008 à 23:49:37   answer
 

shadow2 a écrit :

Voilà qui devrait éclairer ta lanterne : ;)  
 

Code :
  1. /**
  2.  * Admettons qu'on a scorej = 40, score[0] = 50, score[1] = 30 et score[2] = 10
  3.  */
  4. if (scorej > score[0]) { // 40 > 50 -> faux
  5.      PA_OutputSimpleText(0,5,7, "Nouveau Record" );
  6.      score[2]=score[1];
  7.      score[1]=score[0];
  8.      score[0]=scorej;
  9. }
  10. else if (scorej > score[1]) {  // 40 > 30 -> vrai
  11.      PA_OutputSimpleText(0,5,7, "Classé 2eme" );
  12.      score[2]=score[1];    // score[2] vaut maintenant 30
  13.      score[1]=scorej;      // score[1] vaut maintenant 40
  14. }
  15. else if (scorej > score[2]) { // 40 > 30 -> vrai et c'est là que se situe le problème
  16.      PA_OutputSimpleText(0,5,7, "Classé 3eme" );
  17.      score[2]=scorej;      // score[2] vaut donc aussi 40
  18. }



 
Merci c'est parfait ;)
 
C'est qui me surprend c'est que le 3eme if est fait malgré que le 2eme if soit bon,c'est pas logique car il ne devrait pas faire le 3ème test normalement !! vu que en francaises ca veut dire "si ca marche pas sinon fait ça " :mdr: :mdr:
 
Donc je vais ajoter un booleen pour éviter ce problème

n°2454
Profil : Modérateur
Posté le 05-05-2008 à 12:13:25   answer
 

zell789 a écrit :

C'est qui me surprend c'est que le 3eme if est fait malgré que le 2eme if soit bon,c'est pas logique car il ne devrait pas faire le 3ème test normalement !! vu que en francaises ca veut dire "si ca marche pas sinon fait ça " :mdr: :mdr:
 
Donc je vais ajoter un booleen pour éviter ce problème


Non, ne modifie rien pour le moment... Tu vas régler le problème en apparence, mais l'erreur n'est pas là
 
- ton intuition sur le "if else" est bonne
- c'est précisément ce que le C fait
- tu n'as pas d'erreur à ce niveau...
 
Je viens de faire le test moi-même, avec le MEME code, et les données 50, 30 et 10, et tentative d'insertion de 40
 

Code :
  1. #include <stdio.h>
  2. int score[3]={50, 30, 10};
  3. PA_OutputSimpleText(int a, int b, int c, char* str) {
  4. fprintf(stdout, "%s\n", str);
  5. }
  6. int main(int argc, char* argv[]) {
  7. int scorej=40;
  8. if (scorej > score[0]) {
  9.         PA_OutputSimpleText(0,5,7, "Nouveau Record" );
  10.         score[2]=score[1];
  11.         score[1]=score[0];
  12.         score[0]=scorej;
  13. }
  14. else if (scorej > score[1]) {
  15.         PA_OutputSimpleText(0,5,7, "Classé 2eme" );
  16.         score[2]=score[1];
  17.         score[1]=scorej;
  18. }
  19. else if (scorej > score[2]) {
  20.         PA_OutputSimpleText(0,5,7, "Classé 3eme" );
  21.         score[2]=scorej;
  22. }
  23. return 0;
  24. }


 
Je n'ai que le "Classé 2ème".
 
Et de toute façon, il est IMPOSSIBLE d'avoir affiché à la fois "Classé 2ème" et "Classé 3ème".
 
En éliminant l'hypothèse "compilateur défectueux, je dirais que tu appelles deux fois la fonction de suite, je ne vois pas d'autre solution...

n°2455
Profil : Modérateur
Posté le 05-05-2008 à 12:18:00   answer
 

Aru a écrit :

Argh le CJava, que c'est moche :cry:
 
:D
 
Je déteste ce langage :)


Fixed :D
 
Chacun ses goûts... ;) C'est encore Caml que je trouve le plus élégant, mais je préfère infiniment C(++) à Java en terme de code. Cela dit, l'élégance d'un programme dépend principalement de la personne qui l'écrit. Sauf en Shakespeare, par définition ;)

n°2456
Profil : Internaute
Posté le 05-05-2008 à 14:11:30   answer
 

J'aimerais bien une machine virtuelle Java optimisée et développée spécialement pour la DS et la PSP :)
 
Ca m'inciterait à développer 2 3 trucs sur ces plates-formes.


---------------
Code ami SSBB: 2234-8592-7528
PSN: AruOnline
Playstation 3: This is waiting.
 Page :  1  2
Page Précédente 

Aller à :
     Ajouter une réponse
 




playfrance © 2000-2008, Splitgames Network - Tous droits réservés |