[ Foro de C ]
# include <stdio.h>
# include <stdlib.h>
typedef enum {False=0, True=1}boolean;
boolean sortir;
int cont_A=0, cont_B=0,tirada=0;//Son variables global
char v[9];//dimensio maxima de la taula de caracters sera de 9 posicions de 0 a 8
void ImprimirMenu();//Accio on mostrarem les opcions del joc
void inicialitzar();//Inicialitzem la taula per a que no surtin valors extranys
void mostrar_tauler();// Mostrarem el taule de joc a cada tirada
int triar_num(char carac);// Funcio per guardar el numero a la taula
int main()
{
sortir=False;
while(!sortir){
ImprimirMenu();
}
system("PAUSE");
return(0);
}
void inicialitzar(){//Inicialitzem la taula amb 'X' per saber quan ocupem una posicio
int i=0;
for(i=0;i<9;i++){
v[i]='X';
}
cont_A=0;
cont_B=0;
tirada=0;
}
void mostrar_tauler(){//Mostrarem el tauler de joc
int i=0;
for(i=0;i<9;i++){
printf("Numero: %d conte el valor %c\n",i+1,v[i]);
}
printf("Contador A: %d\n",cont_A);
printf("Contador B: %d\n",cont_B);
}
int triar_num(char carac){
int num=0, i=0;
printf("Indica el numero: ");
scanf("%d",&num);
if(num!=-1){
while((v[num-1]!='X' || cont_A+num>15 && cont_B+num>15)){// si a la posicio num-1 es diferent de X vol dir que ja esta agafat aquell numero, pertant s'ha de tornar a tirar
printf("Numero ja introduit o suma superior a 15, indica nou valor: ");
scanf("%d",&num);
}
v[num-1]=carac;
if(carac=='A'){//hem creat un contador de A on vagi sumant totes les posicions que conta A, el mateix per B
cont_A=cont_A+num;
}
else{
cont_B=cont_B+num;
}
}
return(num);
}
void ImprimirMenu()
{
int opcio, valor, num;
printf("1 Mostrar el tauler de joc \n");
printf("2 Inici Joc \n");
printf("3 Finalitzar\n");
printf ("\nEscollir la opcio: \n");
scanf ("%d",&opcio);
switch(opcio)
{
case 1:
inicialitzar();
mostrar_tauler();
break;
case 2:
inicialitzar();
while((cont_A<15) && (cont_B<15) && (valor!=-1)){
if(tirada%2==0){//les tirades parelles seran per al jugador A
printf("Tira el jugador A\n");
valor=triar_num('A');
mostrar_tauler();
if((tirada==2) && (cont_A>=15)){
printf("Torna a iniciar, son tres tirades com a minim");
sortir=True;
}
if((cont_A==15)&&(tirada!=2)){
printf("Guanya el jugador A\n");
}
}
else{ // els senars seran les tirades per al jugador B
printf("Tira el jugador B\n");
valor=triar_num('B');
mostrar_tauler();
if((tirada==3) && (cont_B>=15)){
printf("Torna a iniciar, son tres tirades com a minim: \n");
sortir=True;
}
if((cont_B==15)&& (tirada!=3)){
printf("Guanya el jugador B\n");
}
}
tirada=tirada+1;
}
break;
case 3:
sortir=True;
printf("Finalitzar\n");
break;
}
}
No entiendo el problema: la mayoría de variables ya son locales:
void inicialitzar(){
int i=0;
void ImprimirMenu()
{
int opcio, valor, num;
Las pocas que no son locales son acciones como "sortir" (salir), que es razonable que no lo sean, porque se usan para compartir información entre distintas funciones.
No, pero mi profesora no me deja utilizar las variables globales:
int cont_A=0, cont_B=0,tirada=0;//Son variables global
char v[9];//dimensio maxima de la taula de caracters sera de 9 posicions de 0 a 8
Las que están arriba del todo, tengo que ponerlas como locales o paso por parámetro.
He intentado hacerlo pero no me funciona.
Este es el que he intentado:
//Joc de sumar 15 Jugador A Vs Jugador B
# include <stdio.h>
# include <stdlib.h>
typedef enum {False=0, True=1}boolean;// variable global
boolean sortir;
void ImprimirMenu();//Accio on mostrarem les opcions del joc
void inicialitzar();//Inicialitzem la taula per a que no surtin valors extranys
void mostrar_tauler();// Mostrarem el taule de joc a cada tirada
int triar_num(char carac);// Funcio per guardar el numero a la taula
int main()
{
int cont_A=0, cont_B=0,tirada=0;
char v[9];//dimensio maxima de la taula de caracters sera de 9 posicions de 0 a 8
sortir=False;
while(!sortir){
ImprimirMenu();
}
system("PAUSE");
return(0);
}
void inicialitzar(){//Inicialitzem la taula amb 'X' per saber quan ocupem una posicio
int i=0, cont_A, cont_B, tirada;
char v[9];
for(i=0;i<9;i++){
v[i]='X';
}
cont_A=0;
cont_B=0;
tirada=0;
}
void mostrar_tauler(){//Mostrarem el tauler de joc
int i=0, c1, c2;
char ve[9];
for(i=0;i<9;i++){
printf("Numero: %d conte el valor %c\n",i+1,ve[i]);
}
printf("Contador A: %d\n",c1);
printf("Contador B: %d\n",c2);
}
int triar_num(char carac){
int num=0, i=0, cA, cB;
char vec[9];
printf("Indica el numero: ");
scanf("%d",&num);
if(num!=-1){
while((vec[num-1]!='X' || cA+num>15 && cB+num>15)){// si a la posicio num-1 es diferent de X vol dir que ja esta agafat aquell numero, pertant s'ha de tornar a tirar
printf("Numero ja introduit o suma superior a 15, indica nou valor: ");
scanf("%d",&num);
}
vec[num-1]=carac;
if(carac=='A'){//hem creat un contador de A on vagi sumant totes les posicions que conta A, el mateix per B
cA=cA+num;
}
else{
cB=cB+num;
}
}
return(num);
}
void ImprimirMenu()//Hem fet una accio on mostri les opcions del joc
{
int opcio, valor;
char v[9];
printf("1 Mostrar el tauler de joc \n");
printf("2 Inici Joc \n");
printf("3 Finalitzar\n");
printf ("\nEscollir la opcio: \n");
scanf ("%d",&opcio);
switch(opcio)
{
case 1:
inicialitzar();
mostrar_tauler();
break;
case 2:
inicialitzar();
int cA=0, cB=0, tirada=0;
while((cA<15) && (cB<15) && (valor!=-1)){
if(tirada%2==0){//les tirades parelles seran per al jugador A
printf("Tira el jugador A\n");
valor=triar_num('A');
mostrar_tauler();
if((tirada==2) && (cA>=15)){
printf("Torna a iniciar, son tres tirades com a minim");
sortir=True;
}
if((cA==15)&&(tirada!=2)){
printf("Guanya el jugador A\n");
}
}
else{ // els senars seran les tirades per al jugador B
printf("Tira el jugador B\n");
valor=triar_num('B');
mostrar_tauler();
if((tirada==3) && (cB>=15)){
printf("Torna a iniciar, son tres tirades com a minim: \n");
sortir=True;
}
if((cB==15)&& (tirada!=3)){
printf("Guanya el jugador B\n");
}
}
tirada=tirada+1;
}
break;
case 3:
sortir=True;
printf("Finalitzar\n");
break;
}
}
HOLA CORDIAL SALUDO.
PODRIAN INDICARNOS DE QUE VA ESTE PROGRAMA, PARA ENTENDER LO QUE HACE? MIL GRACIAS POR SU AYUDA
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)