Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les forums > Programmation > Langage C > Test Blittage Chipset > Lecture du sujet

Test Blittage Chipset

probleme argh

Vous devez être inscrit pour pouvoir poster des messages

Page : 1 
Auteur Message
1 visiteur sur ce sujet (1 anonyme)
Page : 1 
Hors ligne sangohan42 # Posté le 19/07/2008 à 12:44:25
t'es belle, de dos!
Avatar
Groupe : Membres
Salut a tous, J'ai actuellement un autre problème avec mon programme qui tente de manière certainement pas optimisé ni réellement bien agencé de lire le contenu d'un fichier pour créer ma map. Si vous avez des idées pour améliorer la chose(parce que c'est vrai que j'ai programmé à ma sauce ça donne quelques chose d'assez indigeste) et pour résoudre les problèmes que j'ai actuellement j'en serais ravi. En faite le debuggueur m'affiche seulement des bugs " expected ')' before ; token ". Problème surement bête mais je vois pas... Donc si par la suite vous pouviez me donner des idées d'optimisation (création peut être d'un tableau à deux dimensions j'ai pensé etc..) je vous remercie. Bonne après midi (bonne app pour ceux qui vont manger ;) .

Code : C
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>
#include <SDL/SDL_image.h>

#define SCREEN_WIDTH (NOMBRE_BLOCS_LARGEUR * SPRITE_WIDTH)
#define SCREEN_HEIGHT (NOMBRE_BLOCS_HAUTEUR * SPRITE_HEIGHT)

#define PERSO_WIDTH 95
#define PERSO_HEIGHT 130
#define NOMBRE_BLOCS_LARGEUR 20
#define NOMBRE_BLOCS_HAUTEUR 15
#define SPRITE_WIDTH 32
#define SPRITE_HEIGHT 32
#define TAILLE_MAX 100

void set_clips();


const int PERSO_RIGHT = 0;
const int PERSO_LEFT = 1;
SDL_Surface *ecran = NULL, *feuilleSprite = NULL, *chipset = NULL;
SDL_Rect persoRight[3];
SDL_Rect persoLeft[3];
SDL_Rect positionJoueur;


int main(int argc, char *argv[])
{
    SDL_Init(SDL_INIT_VIDEO|SDL_DOUBLEBUF);

    ecran = SDL_SetVideoMode(SCREEN_WIDTH,SCREEN_HEIGHT,32,SDL_HWSURFACE);
    SDL_WM_SetCaption("test animation", NULL);

    feuilleSprite = IMG_Load("cat.png");
    SDL_SetColorKey(feuilleSprite,SDL_SRCCOLORKEY,SDL_MapRGB(feuilleSprite->format,0,255,255));

    positionJoueur.x = (SCREEN_WIDTH-PERSO_WIDTH)/2;
    positionJoueur.y = (SCREEN_HEIGHT-PERSO_HEIGHT)/2;

    int continuer = 1;
    int j, i;
    int status = PERSO_RIGHT;
    int frame = 1;
    SDL_Event event;

    FILE * file = NULL;
    char nomFichier[TAILLE_MAX];
    file = fopen("niveau.txt","r");

    fgets(nomFichier,TAILLE_MAX,file);
    chipset = IMG_Load(nomFichier);

    for(j=0; j<NOMBRE_BLOCS_LARGEUR; j++)
        {
            for(i=0; i<NOMBRE_BLOCS_HAUTEUR; i++)
                {
                    SDL_Rect rect;
                    rect.w = SPRITE_WIDTH;
                    rect.h = SPRITE_HEIGHT;
                    fscanf(file,"%d%d", &rect.x, &rect.y);

                    SDL_Rect positionSprite;
                    positionSprite.x = i * SPRITE_WIDTH;
                    positionSprite.y = j * SPRITE_HEIGHT;

                    SDL_BlitSurface(chipset, &rect, ecran, &positionSprite);

                }
        }
    set_clips();


	SDL_FillRect(ecran,NULL,SDL_MapRGB(ecran->format,255,255,255));

    SDL_EnableKeyRepeat(50, 50);

	while(continuer)
    {
		SDL_WaitEvent(&event);
        switch(event.type)
		{
			case SDL_QUIT:
				continuer = 0;
            break;

            case SDL_KEYDOWN :
            {
                switch(event.key.keysym.sym)
                {
                    case SDLK_RIGHT :
                    {
                        status = PERSO_RIGHT;

                        frame+=1;
                        if(frame==3) frame = 0;

                        positionJoueur.x+=PERSO_WIDTH/4;
                        if(positionJoueur.x+PERSO_WIDTH >= SCREEN_WIDTH)
                        {
                            positionJoueur.x=SCREEN_WIDTH-PERSO_WIDTH;
                        }


                    }
                    break;

                    case SDLK_LEFT :
                    {
                        status = PERSO_LEFT;

                        frame+=1;
                        if(frame==3) frame = 0;

                        positionJoueur.x-=PERSO_WIDTH/4;
                        if(positionJoueur.x<= 0)
                        {
                            positionJoueur.x = 0;
                        }


                    }
                    break;

                }
            }
            break;

            case SDL_KEYUP :

                switch( event.key.keysym.sym )
                {
                    case SDLK_RIGHT:
                    frame = 1;
                    break;

                    case SDLK_LEFT:
                    frame = 1;
                    break;
                }
                break;

        }

        SDL_FillRect(ecran,NULL,SDL_MapRGB(ecran->format,255,255,255));

        if (status == PERSO_RIGHT)
        {
        SDL_BlitSurface(feuilleSprite,&persoRight[frame],ecran,&positionJoueur);
        }
        else if(status == PERSO_LEFT)
        {
        SDL_BlitSurface(feuilleSprite,&persoLeft[frame], ecran, &positionJoueur);
        }
        SDL_Flip(ecran);

   }


	SDL_FreeSurface(feuilleSprite);
	SDL_FreeSurface(chipset);
    SDL_Quit();

    return EXIT_SUCCESS;
}

void set_clips()
{
    //On coupe la feuille de sprite
    persoRight[ 0 ].x = 0;
    persoRight[ 0 ].y = 0;
    persoRight[ 0 ].w = PERSO_WIDTH;
    persoRight[ 0 ].h = PERSO_HEIGHT;

    persoRight[ 1 ].x = PERSO_WIDTH;
    persoRight[ 1 ].y = 0;
    persoRight[ 1 ].w = PERSO_WIDTH;
    persoRight[ 1 ].h = PERSO_HEIGHT;

    persoRight[ 2 ].x = PERSO_WIDTH * 2;
    persoRight[ 2 ].y = 0;
    persoRight[ 2 ].w = PERSO_WIDTH;
    persoRight[ 2 ].h = PERSO_HEIGHT;

    persoLeft[ 0 ].x = 0;
    persoLeft[ 0 ].y = PERSO_HEIGHT;
    persoLeft[ 0 ].w = PERSO_WIDTH;
    persoLeft[ 0 ].h = PERSO_HEIGHT;

    persoLeft[ 1 ].x = PERSO_WIDTH;
    persoLeft[ 1 ].y = PERSO_HEIGHT;
    persoLeft[ 1 ].w = PERSO_WIDTH;
    persoLeft[ 1 ].h = PERSO_HEIGHT;

    persoLeft[ 2 ].x = PERSO_WIDTH * 2;
    persoLeft[ 2 ].y = PERSO_HEIGHT;
    persoLeft[ 2 ].w = PERSO_WIDTH;
    persoLeft[ 2 ].h = PERSO_HEIGHT;
}


La ou j'ai du faire n'importe quoi c'est dans l'utilisation du fscanf je ne sais pas si le curseur revient a sa position de depart si c'est le cas il faut déjà tout reprendre ça. Ensuite mon fichier .txt est écrit avec des chiffre cote a cote comme par exemple : 00 00 00 12 00
00 00 00 00 00
Chaque chiffre correspondant a la largeur puis la hauteur ou prendre le chipset dans la feuille de chipset.

Merci encore j'espère ne pas trop avoir écrit de bêtise mais je sens que c'est mal parti.. Bye

Edit : je viens de trouver une de mes erreurs un ) oublié dans les defines...
Édité le 19/07/2008 à 13:03:16 par sangohan42

L'existence précède l'essence. :)
 
Hors ligne Bbar # Posté le 19/07/2008 à 14:20:08
Avatar
Groupe : Membres
de toute façon " expected ')' before ; token " ça veut dire : "un ')' est attendu avant le ';' ", ou si tu prefère, "il manque une parenthèse fermante dans ton code".
 
Hors ligne sangohan42 # Posté le 19/07/2008 à 14:23:19
t'es belle, de dos!
Avatar
Groupe : Membres
Ui mais j'avais trouvé (voir mon Edit). Je cherche now une manière de lire peut être plus simple (une nomenclature) parce que le programme ne fonctionne pas. En attendant je refais quelques tests. Merci

L'existence précède l'essence. :)
 

Retour au forum "Langage C" ou à la liste des forums

Vous devez être inscrit pour pouvoir poster des messages

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 224 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.1131s (0.0939s)