#include "fxlib.h"
#include "stdio.h"
unsigned int key;
int caractere, caractere2;
char chaine[21];
char ident[21];
char domaine[30];
char mdp[30];
char destinataire[40];
char sujet[30];
char corps[50];
int AddIn_main(int isAppli, unsigned short OptionNum){
Bdisp_AllClr_DDVRAM();
demmarage();
identif();
return 1;
}
demmarage(){
int key;
Bdisp_AllClr_DDVRAM();
PrintMini(80,58,"Version 1.0",0);
Bdisp_DrawLineVRAM(10,10,10,50);
Bdisp_DrawLineVRAM(10,50,117,50);
Bdisp_DrawLineVRAM(117,50,117,10);
Bdisp_DrawLineVRAM(10,10,117,10);
Bdisp_DrawLineVRAM(10,10,63,25);
Bdisp_DrawLineVRAM(117,10,63,25);
locate(7,5);
Print("Messagerie");
do{
GetKey(&key);
} while(key != 30004);
Bdisp_AllClr_DDVRAM();
}
identif(){
Bdisp_AllClr_DDVRAM();
locate(1,1);
Print("Identifiant:");
locate(1,2);
Print("+------------------+");
locate(1,3);
Print("| |");
locate(1,4);
Print("+------------------+");
remplichaine();
caractere2=0;
do{
caractere2++;
ident[caractere2] = chaine[caractere2];
} while(caractere2+1 != caractere);
========================== > ICI < ========
locate(2,3);
Print(ident);
do{
GetKey(&key);
} while(key != 30004);
}
remplichaine(){
caractere=0;
do{
caractere++;
======================= > ET ICI < ========
locate(2,3);
Print(chaine);
GetKey(&key);
//==========Conversion==========
if (key==48)key= 71;
if (key==46)key= 61;
if (key==15)key= 51;
if (key==135)key= 41;
if (key==30004)key= 31;
if (key==49)key= 72;
if (key==50)key= 62;
if (key==51)key= 52;
if (key==137)key= 42;
if (key==153)key= 32;
if (key==52)key= 73;
if (key==53)key= 63;
if (key==54)key= 53;
if (key==169)key= 43;
if (key==185)key= 33;
if (key==55)key= 74;
if (key==56)key= 64;
if (key==57)key= 54;
if (key==30025)key= 44;
if (key==30015)key= 34;
if (key==187)key= 75;
if (key==30046)key= 65;
if (key==40)key= 55;
if (key==41)key= 45;
if (key==44)key= 35;
if (key==14)key= 25;
if (key==30001)key= 76;
if (key==149)key= 66;
if (key==133)key= 56;
if (key==129)key= 46;
if (key==130)key= 36;
if (key==131)key= 26;
if (key==30007)key= 77;
if (key==205)key= 67;
if (key==168)key= 57;
if (key==30002)key= 47;
if (key==30023)key= 37;
if (key==30021)key= 27;
if (key==30006)key= 78;
if (key==30008)key= 68;
if (key==30016)key= 58;
if (key==30020)key= 38;
if (key==30018)key= 28;
if (key==30009)key= 79;
if (key==30010)key= 69;
if (key==30011)key= 59;
if (key==30012)key= 49;
if (key==30013)key= 39;
if (key==30014)key= 29;
//==============================
if(key==31)caractere=19;
if(key==76)chaine[caractere]='a';
if(key==66)chaine[caractere]='b';
if(key==56)chaine[caractere]='c';
if(key==46)chaine[caractere]='d';
if(key==36)chaine[caractere]='e';
if(key==26)chaine[caractere]='f';
if(key==75)chaine[caractere]='g';
if(key==65)chaine[caractere]='h';
if(key==55)chaine[caractere]='i';
if(key==45)chaine[caractere]='j';
if(key==35)chaine[caractere]='k';
if(key==25)chaine[caractere]='l';
if(key==74)chaine[caractere]='m';
if(key==64)chaine[caractere]='n';
if(key==54)chaine[caractere]='o';
if(key==73)chaine[caractere]='p';
if(key==63)chaine[caractere]='q';
if(key==53)chaine[caractere]='r';
if(key==43)chaine[caractere]='s';
if(key==33)chaine[caractere]='t';
if(key==72)chaine[caractere]='u';
if(key==62)chaine[caractere]='v';
if(key==52)chaine[caractere]='w';
if(key==42)chaine[caractere]='x';
if(key==32)chaine[caractere]='y';
if(key==71)chaine[caractere]='z';
if(key==61)chaine[caractere]='.';
if(key==57)chaine[caractere]='@';
} while(caractere!=19);
if(key==31)chaine[caractere]='\0';
if(key!=31)chaine[caractere+1]='\0';
}
#pragma section _BR_Size
unsigned long BR_Size;
#pragma section
#pragma section _TOP
int InitializeSystem(int isAppli, unsigned short OptionNum){return INIT_ADDIN_APPLICATION(isAppli, OptionNum);}
#pragma section
Citer : Posté le 26/10/2013 11:06 | #
C'est une erreur de compilation ou un bug d'affichage ? La fonction "remplichaine", elle sert à quoi ? Tu as bien inclu "string.h" dans le fichier .c ? Les tableaux "chaine" et "indent" sont ils déclarés ?
Bref, il peut y avoir un tas de raisons à ce problème
Citer : Posté le 26/10/2013 11:47 | #
C est pas une erreur de compilation c est un bug d affichage. C est pas la premiere fois que ça me le fait...
Citer : Posté le 26/10/2013 11:54 | #
vérifie que ta chaine ne commence pas par zero ou quelque chose comme ça (si tu savais nous donner un exemple de chaine a afficher, ce serait bien)
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2
merci a tout le monde pour son soutien
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm
(dont je connais le nom, mais pas vous )Arcuz !Citer : Posté le 26/10/2013 14:30 | #
Voila j'ai mis le code en entier et j'ai fait en sorte de ne pas utiliser la librairie mais ça m'affiche toujours rien ...
Par contre si je le remplace par Print("TEXTE"); ça marche donc j'en déduis que c'est ma chaîne qui merdouille
Citer : Posté le 26/10/2013 14:47 | #
ben voila, c'est ce que je disais
caractere=0;
do{
caractere++; //le probleme vient de la !
======================= > ET ICI < ========
locate(2,3);
Print(chaine);
GetKey(&key);
//==========Conversion==========
if (key==48)key= 71;
if (key==46)key= 61;
if (key==15)key= 51;
if (key==135)key= 41;
if (key==30004)key= 31;
if (key==49)key= 72;
if (key==50)key= 62;
if (key==51)key= 52;
if (key==137)key= 42;
if (key==153)key= 32;
if (key==52)key= 73;
if (key==53)key= 63;
if (key==54)key= 53;
if (key==169)key= 43;
if (key==185)key= 33;
if (key==55)key= 74;
if (key==56)key= 64;
if (key==57)key= 54;
if (key==30025)key= 44;
if (key==30015)key= 34;
if (key==187)key= 75;
if (key==30046)key= 65;
if (key==40)key= 55;
if (key==41)key= 45;
if (key==44)key= 35;
if (key==14)key= 25;
if (key==30001)key= 76;
if (key==149)key= 66;
if (key==133)key= 56;
if (key==129)key= 46;
if (key==130)key= 36;
if (key==131)key= 26;
if (key==30007)key= 77;
if (key==205)key= 67;
if (key==168)key= 57;
if (key==30002)key= 47;
if (key==30023)key= 37;
if (key==30021)key= 27;
if (key==30006)key= 78;
if (key==30008)key= 68;
if (key==30016)key= 58;
if (key==30020)key= 38;
if (key==30018)key= 28;
if (key==30009)key= 79;
if (key==30010)key= 69;
if (key==30011)key= 59;
if (key==30012)key= 49;
if (key==30013)key= 39;
if (key==30014)key= 29;
//==============================
if(key==31)caractere=19;
if(key==76)chaine[caractere]='a';
if(key==66)chaine[caractere]='b';
if(key==56)chaine[caractere]='c';
if(key==46)chaine[caractere]='d';
if(key==36)chaine[caractere]='e';
if(key==26)chaine[caractere]='f';
if(key==75)chaine[caractere]='g';
if(key==65)chaine[caractere]='h';
if(key==55)chaine[caractere]='i';
if(key==45)chaine[caractere]='j';
if(key==35)chaine[caractere]='k';
if(key==25)chaine[caractere]='l';
if(key==74)chaine[caractere]='m';
if(key==64)chaine[caractere]='n';
if(key==54)chaine[caractere]='o';
if(key==73)chaine[caractere]='p';
if(key==63)chaine[caractere]='q';
if(key==53)chaine[caractere]='r';
if(key==43)chaine[caractere]='s';
if(key==33)chaine[caractere]='t';
if(key==72)chaine[caractere]='u';
if(key==62)chaine[caractere]='v';
if(key==52)chaine[caractere]='w';
if(key==42)chaine[caractere]='x';
if(key==32)chaine[caractere]='y';
if(key==71)chaine[caractere]='z';
if(key==61)chaine[caractere]='.';
if(key==57)chaine[caractere]='@';
} while(caractere!=19);
if(key==31)chaine[caractere]='';
if(key!=31)chaine[caractere+1]='';
}
tu remplis le tableau a partir de la case [1], et du coup la premiere case (la case [0]) est vide, et la fonction d'affichage croit que la chaine est vide => n'affiche rien
pour corriger ca, tu peut initialiser caractere a -1, ou l'incrementer a la fin de la boucle
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2
merci a tout le monde pour son soutien
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm
(dont je connais le nom, mais pas vous )Arcuz !Citer : Posté le 26/10/2013 15:23 | #
Merci j'avais complètement zapper qu'il y avait la case 0
Citer : Posté le 03/11/2013 17:43 | #
De plus crée toujours des chaînes de taille plus grande que le nombre de caractères qu'elle contient si tu veux que toutes les fonctions fonctionnent correctement
Exemple : taille de 22 pour une chaîne de 21 caractères.
Citer : Posté le 11/02/2014 19:58 | #
Voila j'ai un nouveau probleme...
Je bloque sur des conditions de rebont pour un Pong
C'est dans la fonction jeu a la ligne 57
#include "Main.h"
#include "MonochromeLib.h"
#include <stdio.h>
#include <stdlib.h>
int x, x_ball, y_ball, J1, J2, pointJ1, pointJ2;
double acc_ball_x, acc_ball_y;
int vitesse, nbrJoueur, niveauOrdi, handle, choix, Tmenu;
int key;
char affichage[100];
FONTCHARACTER filename[]={'\\','\\','f','l','s','0','\\','p','o','n','g','r','.','t','x','t',0};
int AddIn_main(int isAppli, unsigned short OptionNum)
{
Bdisp_AllClr_DDVRAM();
demmarage();
lectureReglage();
choix=0;
do{
choix = menu();
if(choix==1) jeu();
if(choix==2) reglages();
Bdisp_PutDisp_DD();
}while(choix!=3);
quitter();
}
// A faire
void jeu(){
int nombre;
Bdisp_AllClr_DDVRAM();
PrintXY(51,0,"PONG",0);
ML_line(63,8,63,63, 3);
Bdisp_DrawLineVRAM(1,8,127,8);
Bdisp_PutDisp_DD();
lectureReglage();
Tmenu=1;
SaveDisp(SAVEDISP_PAGE1);
do{
setPos();
nombre=0;
do{
nombre++;
Bdisp_AllClr_DDVRAM();
RestoreDisp(SAVEDISP_PAGE1);
Bdisp_DrawLineVRAM(1,J2+4,1,J2-4);
Bdisp_DrawLineVRAM(2,J2+4,2,J2-4);
Bdisp_DrawLineVRAM(126,J1+4,126,J1-4);
Bdisp_DrawLineVRAM(127,J1+4,127,J1-4);
Bdisp_SetPoint_VRAM(x_ball,y_ball,1);
sprintf(affichage,"%d %d %d",(x_ball==125 && acc_ball_x>0 && (J1+8>y_ball && J1<y_ball)), y_ball, J1);
PrintMini(1,1,affichage,0);
Bdisp_PutDisp_DD();
if(IsKeyDown(30018) && J1>13) J1--;
if(IsKeyDown(30023) && J1<59) J1++;
if((x_ball==3 && acc_ball_x<0 && ((J2+8)>y_ball && (J2)<y_ball)) || (x_ball==125 && acc_ball_x>0 && (J1+8>y_ball && J1<y_ball))) acc_ball_x = -acc_ball_x;
if(nombre==1){
x_ball+=acc_ball_x;
nombre=0;
}
if(nbrJoueur==2){
if(IsKeyDown(30006) && J2>13) J2--;
if(IsKeyDown(30007) && J2<59) J2++;
}
if(IsKeyDown(30002)) pause();
Sleep(10*(10-vitesse));
}while(y_ball >= 0 && y_ball <= 127 && Tmenu!=0);
}while(pointJ1 != 7 && pointJ2 != 7 && Tmenu!=0);
}
// Fini !
void reglages(){
Bdisp_AllClr_DDVRAM();
x=20;
choix=1;
locate(6,1);
Print("+ Reglages +");
Bdisp_DrawLineVRAM(1,8,127,8);
PrintMini(20,20,"Vitesse:",0);
PrintMini(20,30,"Nbr. Joueur:",0);
PrintMini(20,40,"Niv. Ordi:",0);
PrintMini(20,55,"Retour",0);
lectureReglage();
do{
PrintXY(10,x,">",0);
PrintMini(80,30," ",0);
if(nbrJoueur==1){
PrintMini(80,30," 1J ",0);
PrintMini(95,30," 2J ",3);
}
else{
PrintMini(80,30," 1J ",3);
PrintMini(95,30," 2J ",0);
}
sprintf(affichage,"%d",vitesse);
PrintMini(92,20,affichage,0);
sprintf(affichage,"%d",niveauOrdi);
PrintMini(92,40,affichage,0);
GetKey(&key);
PrintXY(10,x," ",0);
Bdisp_PutDisp_DD();
if(key==30023) choix++;
if(key==30018) choix--;
if(choix==1){
if(key==30020 && vitesse!=0) vitesse--;
if(key==30021 && vitesse!=9) vitesse++;
}
if(choix==2){
if(key==30020) nbrJoueur=1;
if(key==30021) nbrJoueur=2;
}
if(choix==3){
if(key==30020 && niveauOrdi!=0) niveauOrdi--;
if(key==30021 && niveauOrdi!=9) niveauOrdi++;
}
if(choix==0) choix=4;
if(choix==5) choix=1;
if(choix==1) x=20;
if(choix==2) x=30;
if(choix==3) x=40;
if(choix==4) x=55;
}while(key!=30004 || choix!=4);
ecritureReglage();
}
// Fini !
int menu(){
Bdisp_AllClr_DDVRAM();
x=20;
choix=1;
locate(6,1);
Print("Pong 1960");
Bdisp_DrawLineVRAM(1,8,127,8);
PrintXY(20,20,"Jouer",0);
PrintXY(20,30,"Reglages",0);
PrintXY(20,45,"Quitter",0);
PrintXY(10,20,">",0);
do{
GetKey(&key);
PrintXY(10,x," ",0);
Bdisp_PutDisp_DD();
if(key==30023) choix++;
if(key==30018) choix--;
if(choix==0) choix=3;
if(choix==4) choix=1;
if(choix==1) x=20;
if(choix==2) x=30;
if(choix==3) x=45;
PrintXY(10,x,">",0);
}while(key!=30004);
return choix;
}
//======== fonctions supplementaires =======
// Fini !
void setPos(){
x_ball=63;
y_ball=36;
acc_ball_x=1;
acc_ball_y=0;
J1=36;
J2=36;
pointJ1=pointJ2=0;
}
// Fini !
void pause(){
ML_rectangle(1,9,127,63,0,0,3);
ML_rectangle(45, 25, 85, 40,1,1,0);
PrintXY(50,30,"PAUSE",0);
Bdisp_PutDisp_DD();
Sleep(500);
do{
GetKey(&key);
}while(key!=30002 && key!=30008);
PrintXY(50,30," ",0);
if(key==30008) Tmenu=0;
else{
for(x=3;x>=1;x--){
sprintf(affichage," %d ",x);
PrintXY(50,30,affichage,0);
Bdisp_PutDisp_DD();
Sleep(1000);
}
}
}
// Fini !
void demmarage(){
handle = Bfile_OpenFile(filename,_OPENMODE_READWRITE);
if(handle== -1){
Bfile_CreateFile(filename, 8);
handle = Bfile_OpenFile(filename,_OPENMODE_READWRITE);
vitesse=1;
nbrJoueur=1;
niveauOrdi=1;
ecritureReglage();
locate(1,1);
Print("Un fichier a ete cree");
locate(6,2);
Print("pongr.txt");
locate(1,3);
Print(" Merci de ne pas le");
locate(1,4);
Print("supprimer.");
locate(5,6);
Print("Press [ExE]");
do{
GetKey(&key);
}while(key!=30004);
}
lectureReglage();
}
// Fini !
void quitter(){
Bfile_CloseFile(handle);
Bdisp_AllClr_DDVRAM();
locate(8,4);
Print("Bye :)");
Bdisp_PutDisp_DD();
Sleep(1000);
}
//======== Fonctions pour le fichier ========
// Fini !
void lectureReglage(){
char buffer[7];
int i=0;
Bfile_ReadFile(handle,buffer,7,0);
if(buffer[2]=='1') nbrJoueur=1;
else nbrJoueur=2;
switch(buffer[0]){
case '1': vitesse=1;
break;
case '2': vitesse=2;
break;
case '3': vitesse=3;
break;
case '4': vitesse=4;
break;
case '5': vitesse=5;
break;
case '6': vitesse=6;
break;
case '7': vitesse=7;
break;
case '8': vitesse=8;
break;
case '9': vitesse=9;
break;
case '0': vitesse=0;
break;
}
switch(buffer[4]){
case '1': niveauOrdi=1;
break;
case '2': niveauOrdi=2;
break;
case '3': niveauOrdi=3;
break;
case '4': niveauOrdi=4;
break;
case '5': niveauOrdi=5;
break;
case '6': niveauOrdi=6;
break;
case '7': niveauOrdi=7;
break;
case '8': niveauOrdi=8;
break;
case '9': niveauOrdi=9;
break;
case '0': niveauOrdi=10;
break;
}
}
// Fini !
void ecritureReglage(){
char buffer[7];
sprintf(buffer,"%d+%d+%d+-",vitesse,nbrJoueur,niveauOrdi);
Bfile_CloseFile(handle);
Bfile_DeleteFile(filename);
Bfile_CreateFile(filename, 8);
handle = Bfile_OpenFile(filename,_OPENMODE_READWRITE);
Bfile_WriteFile(handle,buffer,7);
}
/* Aide affichage
+---------------------+
| Pong 1960 |
| |
| |
| Bye :) |
| |
| |
| |
| |
+---------------------+
Reglage: vitesse(1,2,3,4,5,6,7,8,9,0)+nombre joueurs(1,2)+niveau ordi(1,2,3,4,5,6,7,8,9,0)+-
*/
#pragma section _BR_Size
unsigned long BR_Size;
#pragma section
#pragma section _TOP
int InitializeSystem(int isAppli, unsigned short OptionNum){return INIT_ADDIN_APPLICATION(isAppli, OptionNum);}
#pragma section
Citer : Posté le 13/02/2014 06:31 | #
J'ai pas tout compris
Quel est précisément le problème ?
Au final, ça donne quelque chose comme ça non ?
if( (x_ball==3 && acc_ball_x<0 && ((J2+8)>y_ball && (J2)<y_ball)) ||
(x_ball==125 && acc_ball_x>0 && (J1+8>y_ball && J1<y_ball)) )
acc_ball_x = -acc_ball_x;
Donc le J2 se trouve à gauche et le J1 à droite ?
Citer : Posté le 13/02/2014 16:31 | #
Ca c'est bon j'ai trouvé c'etait des erreurs dans les tailles des palettes
Par contre j'ai un nouveau probleme...
Quand je compile un projet avec le SDK, il me renvoie ça:
The size of B and R section should be 0x2000 bytes or less.
Please refer to "C:\Documents and Settings\Users\Bureau\Users\Casio\Tron\Debug\FXADDINror.map".
Je comprends pas trop parce que au dessus il me met "Make proccess completed"
Citer : Posté le 13/02/2014 16:37 | #
Oh, ça arrive qu'il mette des erreurs mais que ça marche, du moment que t'as pas d'erreur quand tu lance le prog
Citer : Posté le 13/02/2014 16:39 | #
J'ai oublié la derniere ligne "Build was not successful."
Citer : Posté le 13/02/2014 16:41 | #
Ah ok (sinon j'ai parfois 20 erreurs "argument mistmach" alors que tout est bon et ça me met "build has completed" )
Citer : Posté le 13/02/2014 16:42 | #
Oui ca ca me le fait tout le temps mais la c'est apres les Warning qu'il me met ce message
Citer : Posté le 13/02/2014 17:27 | #
"Argument mismatch" apparaît souvent car le type d'un argument est incorrect.
Vérifie que tu passes bien à Print et à PrintMini des pointeurs en const unsigned char *.
Le message d'erreur précédent signifie que tu a plus de 0x2000 octets de variables globales ou autres... ce qui est interdit.
Citer : Posté le 13/02/2014 17:48 | #
ha ok merci
Citer : Posté le 13/02/2014 17:56 | #
La plupart du temps, on appelle cette fonction sans le faire cast (PrintMini(1,1,"Mon Texte",0);
Citer : Posté le 13/02/2014 18:05 | #
Il faudrait avoir une macro pour faire le cast automatiquement
Citer : Posté le 13/02/2014 18:08 | #
Ou alors se faire une fonction plus efficace
Moi je me suis fait une fonction d'affichage de texte perso pour Pokemon, comme ça j'ai le choix de la police, et elle demande un pointeur void*, donc c'est plus pratique
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2
merci a tout le monde pour son soutien
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm
(dont je connais le nom, mais pas vous )Arcuz !Citer : Posté le 13/02/2014 18:19 | #
Je sais pour les Arguments mismatch, y'a aucun soucis, c'est juste le SDK qui bug