DAMIER [LANGUAGE C]

Tout sur les langages de programmation.

DAMIER [LANGUAGE C]

Messagepar xizor » 15 Juillet 2006, 00:16

Bonjour,

Voila mon problème avec une image de 46*46 pixel je veux cree un damier mes sa marche pas j'ai fait plein de tentavie sans success.

Merci de m'eclairer un peu.

Je n'ai pas mis les includes sur le post au debut du programme mais de ce coter la il a pas de problème lol :).

TAILLE_BLOC = 46

VIDE = 0 et PLEIN = 1

Code: Tout sélectionner
#include <stdio.h>
#include <stdlib.h>
#include <SDL/SDL.h>
#include <SDL/SDL_image.h>

#include "constantes.h"

int main(int argc, char *argv[]) {

   /* Initialization de l'echecquier */
    SDL_Surface *ecran = NULL, *cases[32] = {NULL};

    SDL_Rect positionCases[32];

    SDL_Event event;
    int continuer = 1;
    long a = 0, XY = 0, bloc = 0, x = 0, y = 0, z = 0, b = 0, n = 0;

    ecran = SDL_SetVideoMode(LARGEUR_FENETRE, HAUTEUR_FENETRE, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
    SDL_WM_SetCaption(" ECHECQUIER", NULL);
    SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));

    /* Fonction des la table de l'echecquier */
    for(a=0;a<64;a++) {
    XY = casesXY(a);
    if(PLEIN == XY) {
    n++;
    bloc++;
    positionCases[n].x = casesX(bloc, x, a, y);
    positionCases[n].y = casesY(bloc, y, z);
    cases[n] = IMG_Load("case.png");
    SDL_BlitSurface(cases[n], NULL, ecran, &positionCases[n]);
    SDL_FreeSurface(cases[n]);
    if(bloc==5)
    bloc=0;
    }
    else if(VIDE == XY)
    continue;
    }

    SDL_Flip(ecran);

    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;
                }
                break;
        }


    }

    SDL_Quit();

}

long casesXY(long a) {

    long j = 0;
    j = a % 2;

    if(j!=0)
        return PLEIN;

    else
        return VIDE;

}

long casesY(long bloc, long y, long z) {

    if(bloc==5) {
        z++;
        y = z * TAILLE_BLOC;
        return y;
    }

    else {
        return y;
    }

}

long casesX(long bloc, long x, long a, long y) {

    if(bloc==5) {
        if(y==46||y==138||y==230||y==368) {
        x = TAILLE_BLOC;
        return x;
        }

        else {
        x = 0;
        return x;
        }
    }

    else {
        x = ((bloc*2)-1) * TAILLE_BLOC;
        return x;
    }
}

Dernière édition par xizor le 17 Juillet 2006, 16:34, édité 15 fois.
Avatar de l’utilisateur
xizor
Débutant
Débutant
 
Messages: 38
Inscription: 26 Octobre 2005, 18:24

Messagepar Vangers » 15 Juillet 2006, 10:03

Je ne vois pas la fonction : SDL_Init qui charge une option (video, audio, cdrom ect...) ou SDL_SetVideoMode(largeur, hauteur, bits, options) qui permet d'ouvrir une fenetre!

So tu la mits dans main est ce que tu peux mettre le code main stp!
Avatar de l’utilisateur
Vangers
Elève
Elève
 
Messages: 48
Inscription: 17 Juin 2006, 13:16


Retourner vers Programmation

Qui est en ligne

Utilisateurs parcourant ce forum: Google [Bot] et 3 invités

cron