Comipaltion????
sunsé
Messages postés
10
Statut
Membre
-
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 .
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
Il est plus facile de t'aider si tu nous donnes le code en question, car il contient probablement une erreur (ou plus)
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
#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