1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
|
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <SDL/SDL.h>
/* Structure d'une case de sudoku */
struct case_sudoku{
int temp[10]; // tableau des possibilités de la case
int valeur_case; // valeur de la case , 0 si aucune valeur
};
typedef struct case_sudoku case_sudoku;
/* Variables globales */
SDL_Surface *cases[8]={NULL};
/*Prototypes de fonctions */
void init_grille(case_sudoku tab[][9]);
void init_sdl(case_sudoku tab[][9],SDL_Surface *ecran,SDL_Surface *grille);
void aff_grille(case_sudoku tab[][9],SDL_Surface *ecran,SDL_Surface *grille);
void free_grille(case_sudoku tab[][9],SDL_Surface *grille);
/* Fonction principale */
int main (void) {
case_sudoku tab[9][9];
SDL_Surface *ecran=NULL;
SDL_Surface *grille=NULL;
init_sdl(tab,ecran,grille);
init_grille(tab);
aff_grille(tab,ecran,grille);
while(1);
free_grille(tab,grille);
return 0;
}
void init_sdl(case_sudoku tab[][9],SDL_Surface *ecran,SDL_Surface *grille) {
if(SDL_Init(SDL_INIT_VIDEO)!=0)
{
fprintf(stderr,"Erreur d'initialisation de la SDL : %s",SDL_GetError());
exit(EXIT_FAILURE);
}
ecran=SDL_SetVideoMode(600,600,32,SDL_HWSURFACE | SDL_DOUBLEBUF);
if(ecran==NULL)
{
fprintf(stderr,"Erreur lors du chargement video : %s",SDL_GetError());
exit(EXIT_FAILURE);
}
SDL_WM_SetCaption("Sudoku",NULL);
SDL_FillRect(ecran,NULL,SDL_MapRGB(ecran->format,255,255,255));
SDL_Flip(ecran);
grille=SDL_LoadBMP("grille.bmp");
cases[0]=SDL_LoadBMP("1.bmp");
cases[1]=SDL_LoadBMP("2.bmp");
cases[2]=SDL_LoadBMP("3.bmp");
cases[3]=SDL_LoadBMP("4.bmp");
cases[4]=SDL_LoadBMP("5.bmp");
cases[5]=SDL_LoadBMP("6.bmp");
cases[6]=SDL_LoadBMP("7.bmp");
cases[7]=SDL_LoadBMP("8.bmp");
cases[8]=SDL_LoadBMP("9.bmp");
}
/* Libère la mémoire */
void free_sdl(case_sudoku tab,SDL_Surface *grille) {
char i;
SDL_FreeSurface(grille);
for(i=0;i<9;i++)
SDL_FreeSurface(cases[i]);
SDL_Quit();
}
/* Initialise la grille à vide */
void init_grille(case_sudoku tab[][9]) {
char i,j,k;
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
{
for(k=0;k<10;k++)
{
tab[i][j].valeur_case=0;
tab[i][j].temp[k]=0;
}
}
}
}
/* Affiche la grille de sudoku */
void aff_grille(case_sudoku tab[][9],SDL_Surface *ecran,SDL_Surface *grille) {
SDL_Rect pos_grille;
SDL_Rect pos_nbre;
int k,m,l,n;
pos_grille.x=(600/2)-(359/2);
pos_grille.y=(600/2)-(359/2);
for(k=0,m=9;m<359;m+=39,k++)
{
pos_nbre.y=m;
for(l=0,n=9;n<359;n+=39,l++)
{
pos_nbre.x=n;
if((tab[k][l].valeur_case)!=0)
{
SDL_BlitSurface(cases[1],NULL,grille,&pos_nbre);
}
}
}
SDL_BlitSurface(grille,NULL,ecran,&pos_grille);
SDL_Flip(ecran);
} |
Partager