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 .
Configuration: Linux Fedora Firefox 3.0.11
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 -
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. -
Main.h , non c'est une faute de frappe quand j'ai fait copier/coller en tout cas merci