Partage
  • Partager sur Facebook
  • Partager sur Twitter

Tableau et structure

Sujet résolu
    20 octobre 2008 à 23:30:04

    Bonjour,
    Je définis dans un fichiers constantes.h ceci :

    typedef struct Param Param;
    struct Param {
    SDL_Surface *ecran;
    int niveau[10][10];
    };

    et dans le main.c je fais :
    /* déclaration du niveau */
    int niveau[10][10] = {
    {MUR,MUR,MUR,MUR,MUR,MUR,MUR,MUR,MUR,MUR},
    {MUR,VID,VID,VID,VID,VID,VID,VID,VID,MUR},
    {MUR,VID,VID,VID,VID,VID,VID,VID,VID,MUR},
    {MUR,VID,VID,VID,VID,VID,VID,VID,VID,MUR},
    {MUR,VID,VID,VID,VID,VID,VID,VID,VID,MUR},
    {MUR,VID,VID,VID,VID,VID,VID,VID,VID,MUR},
    {MUR,VID,VID,VID,VID,VID,VID,VID,VID,MUR},
    {MUR,VID,VID,VID,VID,VID,VID,VID,VID,MUR},
    {MUR,VID,VID,VID,VID,VID,VID,VID,VID,MUR},
    {MUR,MUR,MUR,MUR,MUR,MUR,MUR,MUR,MUR,MUR}
    };

    Tout ça marche bien, mais la ou ça coince c'est après :

    parametre_affichage.niveau = niveau;

    qui donne comme erreurs :
    Multiple markers at this line
    - incompatible types in
    assignment
    - Line breakpoint: main.c

    Qu'est ce que je fais mal ?
    Merci d'avance pour votre aide.
    • Partager sur Facebook
    • Partager sur Twitter
      20 octobre 2008 à 23:34:58

      regarde tes variables de plus près:
      *niveau[10][10]
      niveau[10][10]
      
      • Partager sur Facebook
      • Partager sur Twitter
        20 octobre 2008 à 23:45:18

        Autant pour moi, j'ai essayer de faire plusieurs tests mais ca ne marche pas, dans constantes.h j'ai bien :

        typedef struct Param Param;
        struct Param {
        SDL_Surface *ecran;
        int niveau[10][10];
        };
        • Partager sur Facebook
        • Partager sur Twitter
          21 octobre 2008 à 0:04:28

          le main :
          #include <stdio.h>
          #include <stdlib.h>
          #include <sdl/SDL.h>
          #include <sdl/SDL_image.h>
          #include <SDL/SDL_ttf.h>
          #include "deplacement.h"
          #include "affichage.h"
          #include "constantes.h"
          
          int main(int argc, char **argv) {
          	int temps_actuel = 0, temps_precedent = 0;
          
          	TTF_Font *police;
          
          
          
          	Param parametre_affichage;
          	SDL_Surface *ecran = NULL;
          	SDL_Surface *texte = NULL;
          		SDL_Rect position_texte = { 20,20,0,0 };
          	SDL_Color noir = { 0,0,0,0};
          	SDL_TimerID timer;
          	char texte_a_afficher[100] = "";
          
          	parametre_affichage.ecran = ecran;
          
          	int niveau[10][10] = {
          	         {MUR,MUR,MUR,MUR,MUR,MUR,MUR,MUR,MUR,MUR},
          	         {MUR,VID,VID,VID,VID,VID,VID,VID,VID,MUR},
          	         {MUR,VID,VID,VID,VID,VID,VID,VID,VID,MUR},
          	         {MUR,VID,VID,VID,VID,VID,VID,VID,VID,MUR},
          	         {MUR,VID,VID,VID,VID,VID,VID,VID,VID,MUR},
          	         {MUR,VID,VID,VID,VID,VID,VID,VID,VID,MUR},
          	         {MUR,VID,VID,VID,VID,VID,VID,VID,VID,MUR},
          	         {MUR,VID,VID,VID,VID,VID,VID,VID,VID,MUR},
          	         {MUR,VID,VID,VID,VID,VID,VID,VID,VID,MUR},
          	         {MUR,MUR,MUR,MUR,MUR,MUR,MUR,MUR,MUR,MUR}
          	     };
          
          
          	parametre_affichage.niveau = niveau;
          
          
          	if (SDL_Init(SDL_INIT_VIDEO|SDL_INIT_TIMER) == -1)
          		exit(0);
          
          	TTF_Init();
          	police = TTF_OpenFont("police.ttf",20);
          	ecran = SDL_SetVideoMode(500,500,32,SDL_HWSURFACE);
          	SDL_WM_SetCaption("SDL_Serpent",NULL);
          
          	if (!ecran)
          		exit(0);
          
          
          	int continuer = 1;
          	SDL_Event event;
          	SDL_PollEvent(&event);
          	switch (event.type) {
          		case SDL_QUIT:
          				continuer = 0;
          		break;
          	}
          	while (continuer){
          		timer = SDL_AddTimer(30, affiche_niveau, &parametre_affichage);
          	}
          
          
          
          
          
          
          
          	TTF_CloseFont(police);
          	TTF_Quit();
          	SDL_FreeSurface(texte);
          	return EXIT_SUCCESS;
          	}
          


          constates.h
          #ifndef CONSTANTES_H
          #define CONSTANTES_H
          
          	enum { MUR, VID};
          
          	typedef struct Param Param;
          	struct Param {
          		SDL_Surface *ecran;
          		int niveau[10][10];
          	};
          
          
          
          
          #endif
          

          et affichage.c
          #include <stdio.h>
          #include <stdlib.h>
          #include <sdl/SDL.h>
          #include <sdl/SDL_image.h>
          #include "deplacement.h"
          #include "affichage.h"
          #include "constantes.h"
          
          
          Uint32 affiche_niveau(Uint32 intervalle, void *parametre){
          
          	Param *parametre_affichage = parametre;
          
          	SDL_Surface *carre = NULL;
          		SDL_Rect position_carre = {0,0,0,0 };
          int ligne = 0, colone = 0;
          
          	for (ligne = 9; ligne > -1; ligne--) {
          		for (colone = 9; colone > -1 ; colone--) {
          			position_carre.x = ligne * 50;
          			position_carre.y = colone * 50 ;
          
          			if (parametre_affichage->niveau[ligne][colone] == MUR){
          				carre = IMG_Load("mur.png");
          			}
          			if (parametre_affichage->niveau[ligne][colone] == VID){
          				carre = IMG_Load("vide.png");
          			}
          				SDL_UpperBlit(carre,NULL,parametre_affichage->ecran,&position_carre);
          				SDL_Flip(parametre_affichage->ecran);
          
          		}
          	}
          }
          

          • Partager sur Facebook
          • Partager sur Twitter
            21 octobre 2008 à 1:11:16

            Traduction, il voudrai que tu mettes les balises < code > autour de ton code ;)

            Et si il etait possible d'avoir un code indenté, ca serait le bonheur :p
            • Partager sur Facebook
            • Partager sur Twitter
              21 octobre 2008 à 19:54:51

              Vala c'est zolie maintenant.
              • Partager sur Facebook
              • Partager sur Twitter

              Tableau et structure

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown