Problème pour passer de windows à Unbuntu
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| # #include <stdio.h>
# #include <stdlib.h>
#
# char grille[6][7];/*ce tableau represente une delimitation du nombre de case de la grille*/
# int remplissage[7];/* ce tableau définit le nombre de jeton qu'il y a dans la colonne..maximum 6.*/
#
# int dansGrille(int x,int y)
# /*la fonction prend 2 entiers x et y et renvoie vrai s'il existe une case de coordonnées(x,y)dans grille.*/
# {
# if ((x>=0)&&(x<=5)&&(y>=0)&&(y<=6))/* x appartient aux six cases d'une colone 0~5
# y appartient aux septs case d'une ligne 0~6*/
# return |
Blindage des codes lettres?
Mes erreurs ont été réparé, je vous remercie de votre aide.
Cependant, j'ai un nouveau problème, lorsque je veux demander à l'utilisateur de rentrer une ligne ou colonne ( en fonction des cases vides) et donc de mettre un chiffre, j'aimerai blinder le caractère des lettres, afin d'empecher "l'idiot" qui appuyerait sur des lettres au lieu des chiffres...
Si quelqu'un a une idée...
Merci d'avance!
pour ne pas faire de double post, je reviens vers vous, avec une solution, adaptée mais qui ne fonctionne pas aussi bien que je le pensais.
Donc voila quand, l'utilisateur rentre une lettre le message s'affiche mais voila: il s'affiche sans s'arreter... en boucle... (mon problème vient certainement de "do while" mais je ne vois pas ou...)
A nouveaux des problèmes...
D'accord merci diogène du coup, je comprend mieux, et ton code est beaucoup plus simple. Si cela ne te dérange pas, je vais me l'approprier et le rentrer dans mon code. Cependant, autant sur ce code que l'autre un problème se pose, à vrai dire j'ai plusieurs problèmes aux quels je ne trouve aucune solution:
1) Lorsque que l'on fait un partie, le programme compte le nombre de coups de chaque utilisateur. En une partie imaginons l'utilisateur gagne en 5 coups, le programme affiche correctement, "Blabla gagne en 5 coups".
L'utilisateur peut alors redémarrer une partie, neuve. La grille se vide, et cette fois-ci le joueur regagne en 5 coups. Le programme affiche "blabla gagne en 10 coups". Je pense qu'il y a un problème de mémoire cache a vidé, j'ai pensé au "system("clear") mais apparemment, ce n'est pas pour cela... De plus vous remarquerez que le nombre de coups total est de 11, le joueur ne peut gagner en 5.5 coups...Mais je n'ai trouvé que cette solution pour l'instant...
Code ou le compteur compte:
Code:
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
| #include <stdio.h>
#include <stdlib.h>
#include "incage.h"
#include "possible.h"
#include "placerpion.h"
#include "dessincage.h"
#include "caseutilise.h"
#include "adjacent.h"
#include "gagnant.h"
int jeu ()
{
int a,b,joueur=0,col,li;
int m=0,compt1=0;
const N=50;
char nom1[N],nom2[N],tryagain;
printf("Veuillez entrer le nom du premier joueur:\n");
scanf("%s",&nom1[N]);
printf("Veuillez entrer le nom du deuxieme joueur:\n");
scanf("%s",&nom2[N]);
dessincage();
do
{
for (a=0;a<6;a++)
{
for (b=0;b<7;b++)
{
cage[a][b]=' ';
}
}
for(b=0;b<7;b++)
{
remp[b]=0;
}
do
{
if (joueur%2==0)
{
printf("%s, C'est à vous!\n",&nom1[N]);// on rentre son nom
col=placerpion();
li=remp[col];//remplissage définit les lignes de la colonne
cage[li][col]='O';
remp[col]=remp[col]+1;
compt1++;
dessincage();
if( gagnant(col,li)==1)// si la partie est gagnée
{
printf("%s gagne en %d coup\n",&nom1[N],compt1/2+1);
}
}
if(joueur%2!=0)
{
printf("%s, a vous.\n",&nom2[N]);
col=placerpion();
li=remp[col];
cage[li][col]='X';
remp[col]=remp[col]+1;
compt1++;
dessincage();
if( gagnant(col,li)==1)
{
printf("%s gagne en %d coup\n",&nom2[N],compt1/2);
}
}
joueur=joueur+1;//on incremente le joueur
} while(( !caseutilise() && !gagnant(col,li) ) );// répéter tant que c'est pas rempli
do
{
printf("\t\tVoulez-vous recommencer une autre partie?");
scanf("%c",&tryagain);
}while(tryagain!='o' && tryagain!='n');
printf("\n");
}while (tryagain=='o');
} |
2) j'ai a nouveau un problème de boucle infinie, pour le menu, si l'utilisateur rentre une lettre le programme défile sans s'arreter, et la solution qui m'avait été donné pour résoudre mon problème précédent ne fonctionne pas pour le menu, malheureusement ...Normalement, cela est censé rentrer dans le "default" du menu...
Code du menu:
Code:
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
| #include <stdio.h>
#include <stdlib.h>//utilisation pour unix//
//#include <unistd.h>//
#include "menu.h"// Menu au début du pgrm pour le choix, que pour le fun...//
#include "jeu.c"//main du jeu//
#include "Regles.h"// fichier regle.h contenant le texte regles a afficher//
int main(){
int choix,fin=1;
printf("\n\n\n\n\t\t\t\tPuissance 4\n");
sleep(3);
menu();
while(fin){
printf("\n\t\t\t ************************\n\t\t\t *Quel est votre choix ?* \n\t\t\t ************************\n");
scanf("%d",&choix);
switch(choix){
case 1: {
jeu();
//Permet de jouer en compagnie d'un joueur plus précisemment contre celui-ci//
}break;
case 2: {
printf("\t\t\t\tVoici les R\x8Agles :\n");
Regle();
// Regle du jeu//
}break;
case 3: { //Permet de quitter le jeu //
printf("\n\t\t\tMerci d'avoir particip\x82\n");
sleep(1); //Permet de mettre un délai avant d'éxécuter les instructions//
printf("veuillez patienter 5 secondes avant la fermeture ...\n");
printf("5...\n");
sleep(1);
printf("4...\n");
sleep(1);
printf("3...\n");
sleep(1);
printf("2...\n");
sleep(1);
printf("1...\n");
sleep(1);
exit(0);break;}
default: printf("ce choix n'existe pas! Veuillez entrer un chiffre entre 1 et 3,Merci.\n");}
}
return 0;
} |
3) Je suis entrain de recréer une fonction qui au lieu d'afficher un puissance 4, laisse le choix à l'utilisateur de rentrer une grille Nxn avec N et n choisi par lui même. Le problème c'est que à chaque tour, le programme redemande de rentrer une valeur pour les N et n... Pour l'instant on peut dire que j'arrive plus ou moins, mais alors parfois cela ramène plein de petits problèmes annexes...
4)Problèmes facultatifs qui se règlent à la fin (mais toutes les idées sont bonne à prendre):
-Le tableau est compréssé sous le terminal et dès que l'on rentre un pion dans une colonne, il se met correctement... ( Action du saint Esprit?)
-Les accents sont des caractères étranger en c...
-Parfois j'ai l'impression que le joueur gagne prématurément... Le tableau est presque rempli, alors que le joueur met un pion quelque part ou le jeu ne peut pas être gagner, et le jeu se termine en disant que le joueur a gagné... ( bon je reconnais que c'est utile pour le loto mais la...)
Bref, voila, je pense que quand j'aurai résolu, toutes ces choses, je pense que je pourrais souffler jusqu'a un éventuel Puissance4 2.0 ;D.
En attendant, encore merci à toute l'aide que vous me fournissez, vous n'avez pas idée comment cela m'aide... et me fais avancer...
Ps: je supprime les posts hors sujets postés auparavant pour des raisons personelles, je les remettrai prochainement!