Tout Blanc tout noir
2 participants
Page 1 sur 1
Tout Blanc tout noir
Bonjour à tous,
J'ai commencé cette année l'informatique (le langage C) et dans l'ensemble sava mais j'ai un programme que je dois faire et je bloque.
Il s'agit du jeu du tout noir, tout Blanc
Support : une grille à m lignes et n collones avec des cases pouvant prendre deux couleurs ( noir ou blanc).
Au départ toutes les cases sont noires. En retournant une case noir, le joueur en change sa couleur ainsi que celle des 4 voisines ( nord, sud, est, ouest)
But : le but est de rendre la grille toute blanche.
Projet : Construire une telle zone de jeu, ou l'utilisateur qui clique sur une case en change la couleur ainsi que celle des voisines.
Je pensez faire ce programme à base d'un graphique.
#include <stdio.h>
#include "graphsimple.h"
Je pense qu'ensuite il faut mettre tout le graphique en noir en utilisant RectanglePlein
Puis faire avec les coordonnées
Mias après le me perd avec des boucles et des tableau pour faire des cases ce qui me fait planter tout mon programme
Merci à ceux qui pourront m('aider
C'est très important pour moi de réussir ce programme
J'ai commencé cette année l'informatique (le langage C) et dans l'ensemble sava mais j'ai un programme que je dois faire et je bloque.
Il s'agit du jeu du tout noir, tout Blanc
Support : une grille à m lignes et n collones avec des cases pouvant prendre deux couleurs ( noir ou blanc).
Au départ toutes les cases sont noires. En retournant une case noir, le joueur en change sa couleur ainsi que celle des 4 voisines ( nord, sud, est, ouest)
Projet : Construire une telle zone de jeu, ou l'utilisateur qui clique sur une case en change la couleur ainsi que celle des voisines.
Je pensez faire ce programme à base d'un graphique.
#include <stdio.h>
#include "graphsimple.h"
Je pense qu'ensuite il faut mettre tout le graphique en noir en utilisant RectanglePlein
Puis faire avec les coordonnées
Mias après le me perd avec des boucles et des tableau pour faire des cases ce qui me fait planter tout mon programme
Merci à ceux qui pourront m('aider
C'est très important pour moi de réussir ce programme
amelie- Messages : 6
Date d'inscription : 21/11/2009
Re: Tout Blanc tout noir
Avant de le lancer dans le graphisme, qui est une chose compliquée et non portable, je ferais le jeu en mode texte. Il est même possible de le faire en mode 'conversationnel", c'est à dire en mode standard (printf() ...), sans placement direct à l'écran ni effacement.amelie a écrit:Il s'agit du jeu du tout noir, tout Blanc
Support : une grille à m lignes et n colonnes avec des cases pouvant prendre deux couleurs ( noir ou blanc).
Au départ toutes les cases sont noires. En retournant une case noir, le joueur en change sa couleur ainsi que celle des 4 voisines ( nord, sud, est, ouest)But :le but est de rendre la grille toute blanche.
Projet : Construire une telle zone de jeu, ou l'utilisateur qui clique sur une case en change la couleur ainsi que celle des voisines.
Je pensez faire ce programme à base d'un graphique.
Il suffit d'afficher le nouveau terrain de jeu après chaque modification. C'est pas très joli, mais ça permet de tester "l'intelligence" du programme sans perdre de temps.
Il faut bien déterminer quels sont les évènements qui agissent sur ton système, et réagir en conséquence par la modification adéquate du tableau. Le tableau est très certainement un tableau à 2 dimensions.
Re: Tout Blanc tout noir
Bonjour,
Merci de votre réponse
En fait le prof nous a dit de le faire plustot en graphique qu'en texte
C'est pour ca que je suis partie sur un graphique
Avez vous une idée de comment je peux faire avec un graphe ?
Merci
Merci de votre réponse
En fait le prof nous a dit de le faire plustot en graphique qu'en texte
C'est pour ca que je suis partie sur un graphique
Avez vous une idée de comment je peux faire avec un graphe ?
Merci
amelie- Messages : 6
Date d'inscription : 21/11/2009
Re: Tout Blanc tout noir
Certes, mais il n'empêche qu'il est plus logique de procéder en 2 étapes :amelie a écrit:Bonjour,
Merci de votre réponse
En fait le prof nous a dit de le faire plustot en graphique qu'en texte
C'est pour ca que je suis partie sur un graphique
Avez vous une idée de comment je peux faire avec un graphe ?
Merci
1 - je valide le principe du jeux (sa logique dans le cadre bien connu : entrée -> traitement -> sortie) :
1.1 - une boucle qui attend des commandes (coordonnée de la pièce à retourner, par eemple)
1.2 - un traitement qui met à jour le tableau selon les critères définis.
1.3 - un affichage simpliste de contrôle qui permet de vérifier le résultat et donc la validité de la logique réalisée en 2.
Une fois que c'est au point,
2 - je réalise une interface E/S en mode graphique qui
2.1 - initialise le mode graphique
Dans une boucle :
2.2 - gère les entrées en mode graphique (clavier ? Souris ?)
2.3 - appelle la fonction de traitement (1.2) qui agit sur le tableau en fonction des coordonnées de la pièce
2.4 - modifie l'affichage en fonction du nouveau contenu du tableau
Comme toujours, avant de coder quoique ce soit, il faut bien définir ce que l'on veut faire (spécifications) , puis trouver les moyens de le réaliser (Analyse)
Re: Tout Blanc tout noir
Merci beaucoup,
Il faudra faire marcher ce jeux avec la souris.
Par contre j'ai une autre question, il va falloir faire avec des procédures mais je n'arrive pas à les faires :
# include <stdio.h>
void remplissage_tableau(int a, int b)
for ( i=0, i>NMAX;i++);
printf(tableau[a][b]=1)
Mais je n'arrive pas à faire les autres procedures.
Désolé l'info commence en ce moment à ce compliquer pour moi.
Merci
Il faudra faire marcher ce jeux avec la souris.
Par contre j'ai une autre question, il va falloir faire avec des procédures mais je n'arrive pas à les faires :
# include <stdio.h>
void remplissage_tableau(int a, int b)
for ( i=0, i>NMAX;i++);
printf(tableau[a][b]=1)
Mais je n'arrive pas à faire les autres procedures.
Désolé l'info commence en ce moment à ce compliquer pour moi.
Merci
amelie- Messages : 6
Date d'inscription : 21/11/2009
Re: Tout Blanc tout noir
Alors il faut utiliser des fonctions non standards qui dépendent de ta plateforme ou d'une bibliothèque tierce. Mais pour le moment, on en est pas là...amelie a écrit:Merci beaucoup,
Il faudra faire marcher ce jeux avec la souris.
Une 'procédure' en C est une fonction qui ne retourne rien (void).
Par contre j'ai une autre question, il va falloir faire avec des procédures mais je n'arrive pas à les faire :
- Code:
# include <stdio.h>
void remplissage_tableau(int a, int b)
for ( i=0, i>NMAX;i++);
printf(tableau[a][b]=1)
Il faut bien relire ton cours de C. Pour écrire une fonction, il y a une syntaxe bien précise à respecter.
- Code:
<type retourné> <nom de la fonction> (<parametres> ou void)
{
<instructions>
}
Enfin, même si c'est techniquement possible, (le C possède 40.000 manières d'écrire du code illisible) il est préférable de ne pas mélanger les actions :
= sert à affecter
printf() sert à afficher.
ensuite, on ne voit pas bien ce que sont a et b... Si le tableau a 2 dimensions, il faut 2 boucles imbriquées et 2 indices (traditionnellement i et j).
Il semble que tu ne connaisses pas du tout les bases les plus élémentaires de la programmation. Tu as raté les cours ?
Dernière édition par -ed- le Dim 22 Nov 2009 - 14:54, édité 1 fois
Re: Tout Blanc tout noir
Merci, Non je n'ai pas raté les cours puisque que nous n'en n'avons pas, on fait tous sur les TP donc j'ai appris avec un livre de la BU.
Merci pour votre aide
Merci pour votre aide
amelie- Messages : 6
Date d'inscription : 21/11/2009
Re: Tout Blanc tout noir
A moins d'avoir beaucoup de temps pour expérimenter soi-même, ou d'être très doué(e) (ok, ça arrive), il me semble difficile d'apprendre la programmation et le langage C tout(e) seul(e). Quelle est donc cette école qui prétend que c'est possible ?amelie a écrit:Non je n'ai pas raté les cours puisque que nous n'en n'avons pas, on fait tous sur les TP donc j'ai appris avec un livre de la BU.
Re: Tout Blanc tout noir
Alors le programme devrait donner :
- Code:
# include <stdio.h>
# define NBRELIGNES 5
# define NBRECOLLONES 5
int grille[m][n];
void initialiser_grille(int tab[m][n]){
for(i=1 ; i > Nbrelignes ; i++)
for (j=1, j>nbrecollones ; i++)
tab[m][n]=0 je considère 0 cases noires et 1 cases blanches
printf("tab[%d][%d]", m, n);
Dernière édition par -ed- le Dim 22 Nov 2009 - 14:53, édité 1 fois (Raison : Penser à utiliser les balises de code...)
amelie- Messages : 6
Date d'inscription : 21/11/2009
Re: Tout Blanc tout noir
Je pense que tu devrais te relire avant d'écrire des énormités !amelie a écrit:Alors le programme devrait donner :qu'en pensez vous ? Mais après je ne sais pas.
- Code:
# include <stdio.h>
# define NBRELIGNES 5
# define NBRECOLLONES 5
int grille[m][n];
void initialiser_grille(int tab[m][n]){
for(i=1 ; i > Nbrelignes ; i++)
for (j=1, j>nbrecollones ; i++)
tab[m][n]=0 je considère 0 cases noires et 1 cases blanches
printf("tab[%d][%d]", m, n);
D'abord, il faut un 'main()'.
- Code:
int main (void)
{
return 0;
}
- Code:
#define NB_LIGNES 5
#define NB_COLONNES 5
int main (void)
{
int grille[NB_LIGNES][NB_COLONNES];
return 0;
}
Ensuite, on va définir la fonction 'vide' et l'appeler correctement :
- Code:
#define NB_LIGNES 5
#define NB_COLONNES 5
void initialiser_grille (int tab[NB_LIGNES][NB_COLONNES])
{
}
int main (void)
{
int grille[NB_LIGNES][NB_COLONNES];
initialiser_grille (grille);
return 0;
}
- Code:
#define NB_LIGNES 5
#define NB_COLONNES 5
/* je considère 0 cases noires et 1 cases blanches */
#define NOIR 0
#define BLANC 1
void initialiser_grille (int tab[NB_LIGNES][NB_COLONNES])
{
int i;
for (i = 0; i < NB_LIGNES; i++)
{
int j;
for (j =0; j < NB_COLONNES; j++)
{
tab[i][j] = NOIR;
}
}
}
int main (void)
{
int grille[NB_LIGNES][NB_COLONNES];
initialiser_grille (grille);
return 0;
}
Je mets le squelette et l'appel, à toi de compléter le code de la fonction d'affichage :
- Code:
#define NB_LIGNES 5
#define NB_COLONNES 5
/* je considère 0 cases noires et 1 cases blanches */
#define NOIR 0
#define BLANC 1
void initialiser_grille (int tab[NB_LIGNES][NB_COLONNES])
{
int i;
for (i = 0; i < NB_LIGNES; i++)
{
int j;
for (j =0; j < NB_COLONNES; j++)
{
tab[i][j] = NOIR;
}
}
}
void afficher_grille (int tab[NB_LIGNES][NB_COLONNES])
{
/* a completer */
}
int main (void)
{
int grille[NB_LIGNES][NB_COLONNES];
initialiser_grille (grille);
afficher_grille (grille);
return 0;
}
- Code:
ooooo
ooooo
ooooo
ooooo
ooooo
Process returned 0 (0x0) execution time : 0.042 s
Press any key to continue.
Re: Tout Blanc tout noir
je vous remercie énormément de votre aide et du temps que vous y consacré.
Juste une question pour après changé les cases noires en blanches et vices versa je reste bloqué car j'ai essayé avec une valeur temporaire pour échanger les cases mais cela ne donne rien.
Merci
Juste une question pour après changé les cases noires en blanches et vices versa je reste bloqué car j'ai essayé avec une valeur temporaire pour échanger les cases mais cela ne donne rien.
Merci
amelie- Messages : 6
Date d'inscription : 21/11/2009
Re: Tout Blanc tout noir
Et je suis censé deviner quel est le code qui ne fonctionne pas ?amelie a écrit:Juste une question pour après changé les cases noires en blanches et vices versa je reste bloqué car j'ai essayé avec une valeur temporaire pour échanger les cases mais cela ne donne rien.
Pour faire un 'toggle', il n'y a pas besoin de variable intermédiaire. C'est un bête automate d'état dont les évènements sont
init (déjà fait) et
toggle (inversion).
Les états sont ANY (indeterminé), NOIR et BLANC
Les 3 transitions sont
ANY -> NOIR / INIT
NOIR -> BLANC / TOGGLE
BLANC -> NOIR / TOGGLE
L'algorithme de toggle est donc
- Code:
SI etat est NOIR
etat devient BLANC
SINON, SI etat est BLANC
etat devient NOIR
SINON
grave erreur
FIN SI
- Code:
void inverser_element (int tab[NB_LIGNES][NB_COLONNES], int i, int j)
{
}
Avec
- Code:
<...>
int main (void)
{
int grille[NB_LIGNES][NB_COLONNES];
initialiser_grille (grille);
afficher_grille (grille);
inverser_element (grille, 1, 2);
afficher_grille (grille);
return 0;
}
- Code:
ooooo
ooooo
ooooo
ooooo
ooooo
ooooo
oo*oo
ooooo
ooooo
ooooo
Process returned 0 (0x0) execution time : 0.115 s
Press any key to continue.
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|