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
