#1 Le 27/07/2007, à 18:13
- fifidu42
[C] [DEMANDE D'AVIS] Problème de boucle (résolu)
Bonjour à tous,
Je me lance dans la programmation C. Et je commence par créé un morpion (ben oui, il faut bien commencer par quelque chose).
Mon premier but est d'afficher la grille de cases vide à l'écran, et je bloque sur un problème de boucle je pense. J'ai aussi un problème pour initialisé un tableau (à voir dans le code ci-dessous, je l'ai bien commenter).
(ps: Je suis sous Feisty, et j'utilise Code::Block comme ide)
/*
main.cpp
-----------------------------
Créé par Fifi
Rôle : Lance le Morpion
*/
#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>
int main(int argc, char *argv[])
{
// Initialisation des surfaces
SDL_Surface *ecran= NULL, *vide = NULL;
SDL_Rect position;
SDL_Init(SDL_INIT_VIDEO);
ecran = SDL_SetVideoMode (300, 300, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
// Les variables
int grille[2][2]; // Tableau pour les cases de la grille
int bx, by; // variable des axes abscises et ordonnées
vide = SDL_LoadBMP("vide.bmp"); // La case vide 100*100 px
/*
Comme la mise à zéro du table ne marche pas de cette facon:
int grille[2][2]={0};
Réponse de Code::Blocks : attention : missing braces around initializer for «int [2]"
Je le fais de cette façon :
*/
for (by=0; by<3; by++) // Boucle des ordonnées
{
for (bx=0; bx<3; bx++) // Boucle des abcises
{
grille[bx][by] = 0;
}
}
// Afficher les images sur la grille (vide, croix rond)
for (by=0; by<3; by++) // Boucle des ordonnées
{
for (bx=0; bx<3; bx++) // Boucle des abcises
{
if (grille[bx][by] == 0) // Si la case du tableau correspondant à bx et by est égal à zéro, alors j'affiche la case vide.
{
position.x = bx * 100; // Je calcule la position de l'image
position.y = by * 100;
SDL_BlitSurface (vide, NULL, ecran, &position); // Je l'affiche
}
}
}
SDL_Flip(ecran); // J'actualise l'écran
SDL_Delay (1000); // Je laisse 1 seconde pour voir le résultat
// Je libère la surface, quitte la sdl
SDL_FreeSurface (vide);
SDL_Quit();
return EXIT_SUCCESS;
}
Et voici l'image qu'il m'affiche :
[edit] : Vous avez compris que le problème viens des 3 cases qui ne s'affiche pas (pas de carré blanc)
D'où viens le problème à votre avis? De la boucle?
Merci d'avance,
Fifi ;-)
Dernière modification par fifidu42 (Le 29/07/2007, à 08:15)
La vie, c'est comme une boite de chocolat, on sait jamais sur quoi on va tomber...
Hors ligne
#2 Le 27/07/2007, à 19:04
- qqun
Re : [C] [DEMANDE D'AVIS] Problème de boucle (résolu)
attention
int grille[2][2]; // Tableau pour les cases de la grille
avec
for (by=0; by<3; by++) // Boucle des ordonnées
{
for (bx=0; bx<3; bx++) // Boucle des abcises
{
grille[bx][by] = 0;
}
}
ca peu deja pas marcher !!
deja declare int grille[3][3]; // Tableau pour les cases de la grille
#3 Le 27/07/2007, à 19:04
- abetsic
Re : [C] [DEMANDE D'AVIS] Problème de boucle (résolu)
ce n'est pas grille[2][2] mais grille[3][3].
Le chiffre correspond au nombre d'élément du tableau, soit trois dans ton cas. Et le premier élément est le 0, et le dernier 2.
Hors ligne
#4 Le 27/07/2007, à 19:27
- fifidu42
Re : [C] [DEMANDE D'AVIS] Problème de boucle (résolu)
Génial! Merci beaucoup!!!
Par contre, comment mettre toutes les valeurs du tableau à 0?
La vie, c'est comme une boite de chocolat, on sait jamais sur quoi on va tomber...
Hors ligne
#5 Le 27/07/2007, à 19:33
- qqun
Re : [C] [DEMANDE D'AVIS] Problème de boucle (résolu)
int grille[3][3]={{0},{0}};
#6 Le 27/07/2007, à 19:41
- fifidu42
Re : [C] [DEMANDE D'AVIS] Problème de boucle (résolu)
Super! Merci encore!
Dernière modification par fifidu42 (Le 29/07/2007, à 08:16)
La vie, c'est comme une boite de chocolat, on sait jamais sur quoi on va tomber...
Hors ligne
#7 Le 28/07/2007, à 23:13
- fifidu42
Re : [C] [DEMANDE D'AVIS] Problème de boucle (résolu)
Bon, j'ai fini le plus gros du programme, pouvez-vous me donner votre avis?
D'ailleurs je ne sais pas si je l'ai bien mis comme il faut, car chez moi lorsque je clique sur "Morpion" il marche, mais je n'ai pas essayer sur d'autre pc... J'utilise fmod et sdl
Merci d'avance pour vos conseils ;-)
Dernière modification par fifidu42 (Le 28/07/2007, à 23:41)
La vie, c'est comme une boite de chocolat, on sait jamais sur quoi on va tomber...
Hors ligne
#8 Le 29/07/2007, à 10:13
- qqun
Re : [C] [DEMANDE D'AVIS] Problème de boucle (résolu)
ca marche tres bien , sinon je vois pas de gros bug , sauf peut etre un peu imprecis pour la souris
(genre si tu clique sur la tete du type cela valide une croix dans la derniere colonne)
#9 Le 29/07/2007, à 13:21
- fifidu42
Re : [C] [DEMANDE D'AVIS] Problème de boucle (résolu)
J'ai corrigé le problème du clique.
Pour les sources, vous pouvez les voir ici
La vie, c'est comme une boite de chocolat, on sait jamais sur quoi on va tomber...
Hors ligne