bon d'abord qqs morceaux de sources:
typedef struct {
short Level;
short Nbr_ball;
} Game;
typedef struct {
short Life;
short Pad_x;
short Pad_Largeur;
short Pad_Type;
short Pad_Speed;
} Player;
typedef struct {
unsigned char Briques[120];
short Pad_x;
short Pad_Largeur;
short Pad_Type;
short Pad_Speed;
} Level;
Level Level1 = {
{
0,6,6,6,2,2,6,6,6,0,
0,8,6,6,2,2,6,6,8,0,
0,0,8,6,2,2,6,8,0,0,
0,7,8,5,6,6,5,8,7,0,
0,8,8,8,5,5,8,8,8,0,
0,0,7,7,8,8,7,7,0,0,
0,0,0,7,9,9,7,0,0,0,
0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0
},
72,
16,
NORMAL,
1
};
void IniLevel( Game *jeu, Player *joueur)
{
Level * lvl[] = {
&Level1
};
long *Dest=(long*)level_active;
long *Source=(long*)lvl[jeu->Level]->Briques;
short i;
for (i=0; i<30; i++) (*Dest++)=(*Source);
joueur->Pad_x = lvl[jeu->Level]->Pad_x;
joueur->Pad_Largeur = lvl[jeu->Level]->Pad_Largeur;
joueur->Pad_Type = lvl[jeu->Level]->Pad_Type;
joueur->Pad_Speed = lvl[jeu->Level]->Pad_Speed;
Babal[0].x = lvl[jeu->Level]->Pad_x + (lvl[jeu->Level]->Pad_Largeur>>1) - 3;
Babal[0].y = 88;
for (i=1; i<10; i++)
{
Babal[i].x=-15;
Babal[i].dx=0;
Babal[i].dy=0;
}
}
void Game1P()
{
Game Solo;
Player P1;
Solo.Level=1;
Solo.Nbr_ball=1;
P1.Life=4;
IniLevel( &Solo, &P1);
do{
XClrGPlan();
DrawPad(&P1);
XPrintf(1,1," %u ",(int)P1.Pad_x);
XCpyGPlanToLCD();
if (Press.Up) P1.Pad_Largeur++;
if (Press.Down) P1.Pad_Largeur--;
XJoyPad();
} while (!Press.Esc);
}
Voià, j'espère ne rien avoir oublié...
Bon le probleme viens de la fonction IniLevel...
Il doit y avoir un problème, puisque quand je lis Pad_x, j'ai: 40960 au lieu de 72.
Le probleme doit venir donc de :
joueur->Pad_x = lvl[jeu->Level]->Pad_x;
Mais pourquoi




, à vérifier la syntaxe, si tu avais bien les valeurs et pas les adresses, mais en fait non