Comipaltion????

sunsé Messages postés 10 Statut Membre -  
sunsé Messages postés 10 Statut Membre -
Bonjour,

J'ai codé un code avec C comme langage mais aprés compilation un mesage d'erreur s'affiche:

155|attention : data definition has no type or storage class|

Bon j'ai pas arrivé à comprendre qu'est ce que ça veut dire

Merci de m'aider .

4 réponses

KX Messages postés 19031 Statut Modérateur 3 020
 
Il est plus facile de t'aider si tu nous donnes le code en question, car il contient probablement une erreur (ou plus)
0
sunsé Messages postés 10 Statut Membre
 
main.h

#ifndef DEF_MAIN
#define DEF_MAIN

#define TAILLE_CARTE 25
#define TAILLE_BLOC 20
#define TAILLE_FENETRE TAILLE_BLOC * TAILLE_CARTE

//Déplacements

#define HAUT 0
#define GAUCHE 1
#define BAS 2
#define DROITE 3

enum { MUR,CAISSE,VIDE,JOUEUR1, JOUEUR2,JOUEUR3,JOUEUR4,JOUEUR5};

#endif

________________________________________________________

main.c

#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>

#include "main.h"
#include "editeur.h"

int main(int argc, char *argv[])
{
SDL_Surface *ecran = NULL, *menu = NULL;
SDL_Rect positionMenu;
SDL_Event event;

int continuer = 1;

SDL_Init(SDL_INIT_VIDEO);

ecran = SDL_SetVideoMode(, HAUTEUR_FENETRE, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
SDL_WM_SetCaption("Bombazéro", NULL);
menu = IMG_Load("bombe.bmp");
positionMenu.x = 0;
positionMenu.y = 0;

while (continuer)
{
SDL_WaitEvent(&event);
switch(event.type)
{
case SDL_QUIT:
continuer = 0;
break;
case SDL_KEYDOWN:
switch(event.key.keysym.sym)
{
case SDLK_ESCAPE: // Veut arrêter le jeu
continuer = 0;
break;
case SDLK_KP2: // Demande l'éditeur de niveaux
editeur(ecran);
break;
}
break;
}

// Effacement de l'écran
SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 0, 0, 0));
SDL_Flip(ecran);
}

SDL_Quit();

return EXIT_SUCCESS;
}
_____________________________________________________________

editeur.c

#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>

#include "main.h"
#include "editeur.h"
#include"fichier.h"

void editeur(SDL_Surface* ecran)
{
SDL_Surface *mur=NULL, *caisse= NULL, *vide=NULL, *joueur1=NULL, *joueur2=NULL, *joueur3=NULL, *joueur4=NULL, *joueur5=NULL;

SDL_Rect position;
SDL_Event event;

int continuer=1, clicGaucheEncours=0, clicDroitEncours=0;
int objetActuel= MUR, i=0, j=0;
int carte[TAILLE_CARTE][TAILLE_CARTE] = {{0}};

// Chargement des objets et du niveau
mur = SDL_LoadBMP("murs.bmp");
caisse = SDL_LoadBMP("caisse.bmp");
vide = SDL_LoadBMP("vide.bmp");
joueur1=SDL_LoadBMP("moi.bmp");
joueur2=SDL_LoadBMP("adv1.bmp");
joueur3=SDL_LoadBMP("adv2.bmp");
joueur4=SDL_LoadBMP("adv3.BMP");
joueur5=SDL_LoadBMP("adv4.bmp");

if (chargerNiveau(carte))
exit(EXIT_FAILURE);

//Boucle infine de l'editeur

while (continuer)
{
SDL_WaitEvent(&event);

switch(event.type)
{
case SDL_QUIT:
continuer = 0;
break;
case SDL_MOUSEBUTTONDOWN:
if (event.button.button== SDL_BUTTON_LEFT)
{
//on met l'objet actuellement choisi à l'endroit du clic
carte[event.button.x / TAILLE_BLOC][event.button.y / TAILLE_BLOC] = objetActuel;
clicGaucheEncours = 1; // On active un booléen pour retenir qu'un bouton est enfoncé
}
else if (event.button.button == SDL_BUTTON_RIGHT) // Le clic droit sert à effacer
{
carte[event.button.x / TAILLE_BLOC][event.button.y /TAILLE_BLOC] = VIDE;
clicDroitEncours = 1;
}
break;
case SDL_MOUSEBUTTONUP: // On désactive le booléen qui disait qu'un bouton était enfoncé
if (event.button.button == SDL_BUTTON_LEFT)
clicGaucheEncours= 0;
else if (event.button.button == SDL_BUTTON_RIGHT)
clicDroitEncours = 0;
break;
case SDL_MOUSEMOTION:
if (clicGaucheEncours) // Si on déplace la souris et que le bouton gauche de la souris est enfoncé
{
carte[event.motion.x / TAILLE_BLOC][event.motion.y / TAILLE_BLOC] = objetActuel;
}
else if (clicDroitEncours) // Pareil pour le bouton droit de la souris
{
carte[event.motion.x / TAILLE_BLOC][event.motion.y / TAILLE_BLOC] = VIDE;
}
break;

case SDL_KEYDOWN:

switch (event.key.keysym.sym)

{
case SDLK_ESCAPE:
continuer = 0;
break;
case SDLK_s:
sauvegarderNiveau(carte);
break;
case SDLK_c:
chargerNiveau(carte);
break;
case SDLK_KP1:
objetActuel = MUR;
break;
case SDLK_KP2:
objetActuel = CAISSE;
break;
case SDLK_KP3:
objetActuel = VIDE;
break;

default:

break;

}
}
break;
}
// Effacement de l'écran
SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));

// Placement des objets à l'écran
for (i = 0 ; i < TAILLE_CARTE; i++)
{
for (j = 0 ; j < TAILLE_CARTE ; j++)
{
position.x = i * TAILLE_BLOC;
position.y = j * TAILLE_BLOC;

switch(carte[i][j])
{
case MUR:
SDL_BlitSurface(mur, NULL, ecran, &position);
break;
case CAISSE:
SDL_BlitSurface(caisse, NULL, ecran, &position);
break;
case VIDE:
SDL_BlitSurface(vide, NULL, ecran, &position);
break;

case JOUEUR1:
SDL_BlitSurface(joueur1, NULL, ecran, &position);
break;
case JOUEUR2:
SDL_BlitSurface(joueur2, NULL, ecran, &position);
break;
case JOUEUR3:
SDL_BlitSurface(joueur3, NULL, ecran, &position);
break;
case JOUEUR4:
SDL_BlitSurface(joueur4, NULL, ecran, &position);
break;
case JOUEUR5:
SDL_BlitSurface(joueur5, NULL, ecran, &position);
break;

}
}
}
// Mise à jour de l'écran
SDL_Flip(ecran);
}
SDL_FreeSurface(mur);
SDL_FreeSurface(caisse);
SDL_FreeSurface(vide);
SDL_FreeSurface(joueur1);
SDL_FreeSurface(joueur2);
SDL_FreeSurface(joueur3);
SDL_FreeSurface(joueur4);
SDL_FreeSurface(joueur5);
}

___________________________________________________________

editeur.h

#ifndef DEF_EDITEUR
#define DEF_EDITEUR

void editeur(SDL_Surface* ecran);

#endif
________________________________

fichier.c

#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>

#include "fichier.h"
#include"main.h"

int chargerNiveau(int niveau[][TAILLE_CARTE])
{
FILE* fichier = NULL;

char ligneFichier[TAILLE_CARTE * TAILLE_CARTE + 1] = {0};

int i=0, j=0;

fichier = fopen("niveau.lvl", "r");

if (fichier == NULL)
return 0;

fgets(ligneFichier, TAILLE_CARTE*TAILLE_CARTE+1, fichier)

for (i = 0; i< TAILLE_CARTE;i++)
{
for(j=0; j<TAILLE_CARTE; j++)
{
switch(ligneFichier[(i*TAILLE_CARTE)+j])

{
case '0':
niveau[j][i] = 0;
break;
case '1':
niveau[j][i] = 1;
break;
case '2':
niveau [j][i] = 2;
break;
case '3':
niveau [j][i] = 4;
break;
}
}
}
fclose(fichier);
return 1;
}

int sauvegargerNiveau(int niveau[][TAILLE_CARTE])
{
FILE* fichier = NULL;

int i=0, j=0;

fichier = fopen("niveau.lvl", "w");

if (fichier == NULL)
return 0;

for (i=0; i< TAILLE_CARTE; i++)
{
for (j=0; j< TAILLE_CARTE;j++)
{
fprint(fichier,"%d", niveau[j][i]);
}
}

fclose(fichier);
return 1 ;
}
______________________________________
fichier.h

#ifndef DEF_FICHIERS
#define DEF_FICHIERS

int chargerNiveau(int niveau[][TAILLE_CARTE]);
int sauvegarderNiveau(int niveau[][TAILLE_CARTE]);

#endif
0
KX Messages postés 19031 Statut Modérateur 3 020
 
Je ne vais pas pouvoir t'aider plus car je n'ai pas les librairies SDL.
Cependant je pense que main.c et main.h soient des noms maladroits pour des fichiers, même si ça ne semble pas provoquer d'erreurs.
0
sunsé Messages postés 10 Statut Membre
 
Main.h , non c'est une faute de frappe quand j'ai fait copier/coller en tout cas merci
0