C/Visual C - Urgente NeleK ayuda chance

 
Vista:

Urgente NeleK ayuda chance

Publicado por Diego (15 intervenciones) el 24/07/2006 23:04:10
me dieron chance pal miercoles hice lo de la etiqueta y todo salio bien no se sale pero ahora cuando coloco una x o una O me aparece el menu y no me deja jugar y cuando vuelve a empezar la casilla que yo habia jugado en lam partida anterior en la nueva aparece ocupada o sea que la matriz no se borra como hago. te mando el programa pa que lo veas. por eso te pregunte como se borra la memoria porq la matriz no toma valores nuevos.

#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <stdlib.h>
char j1[20],j2[20],m[3][3];
int c1,c2,lv,i,j;
char continuar;
leer ()
{
int i,j,sitio;
c1=0;
c2=0;
lv=0;

gotoxy(10,2);printf("BIENVENIDO AL GRAN JUEGO DE LA VIEJA\n");
gotoxy(10,6);printf("Ingrese Nombre del jugador 1\n");
gotoxy(15,8);scanf("%s",&j1);
gotoxy(10,10);printf("Ingrese Nombre del jugador 2\n");
gotoxy(15,12);scanf("%s",&j2);
}
mostrar()
{
clrscr();
m[i][j]=0;
c1=0;
c2=0;
lv=0;
textcolor(GREEN);
gotoxy(1,2);cprintf("Instituto Universitario de Tecnologia José Antonio Anzoategui\n");
gotoxy(20,3);cprintf("I.U.J.A.A\n");
textcolor(YELLOW);
gotoxy(15,1);cprintf("''''''''''LA VIEJA''''''''''\n");
gotoxy(1,13);cprintf("%s [X]:%d\n",j1,c1);
gotoxy(1,15);cprintf("%s [O]:%d\n",j2,c2);
gotoxy(1,17);cprintf("vieja :%d\n",lv);
gotoxy(30,8);printf("%s juega con casillas\n",j1);gotoxy(56,8);printf("%s juega con casillas\n",j2);
gotoxy(16,11);printf(" | | \n");gotoxy(40,9);printf(" | | \n");gotoxy(65,9);printf(" | | \n");
gotoxy(16,12);printf(" | | \n");gotoxy(40,10);printf(" 1 | 2 | 3 \n");gotoxy(65,10);printf(" 10 | 11 | 12 \n");
gotoxy(16,13);printf(" | | \n");gotoxy(40,11);printf("---|---|---\n");gotoxy(65,11);printf("----|----|----\n");
gotoxy(16,14);printf("-----|-----|-----\n");gotoxy(40,12);printf(" 4 | 5 | 6 \n");gotoxy(65,12);printf(" 13 | 14 | 15 \n");
gotoxy(16,15);printf(" | | \n");gotoxy(40,13);printf("---|---|---\n");gotoxy(65,13);printf("----|----|----\n");
gotoxy(16,16);printf(" | | \n");gotoxy(40,14);printf(" 7 | 8 | 9 \n");gotoxy(65,14);printf(" 16 | 17 | 18 \n");
gotoxy(16,17);printf(" | | \n");gotoxy(40,15);printf(" | | \n");gotoxy(65,15);printf(" | | \n");
gotoxy(16,18);printf("-----|-----|-----\n");
gotoxy(16,19);printf(" | | \n");
gotoxy(16,20);printf(" | | \n");
gotoxy(16,21);printf(" | | \n");
}
usuarios ()
{
int i,j,sitio;

for(sitio=1;sitio<=19;sitio++)
for (i=1;i<=3;i++)
for (j=1;j<=3;j++)
gotoxy(1,13);cprintf("%s [X]:%d\n",j1,c1);c1=c1+1;
gotoxy(1,15);cprintf("%s [O]:%d\n",j2,c2);c2=c2+1;
gotoxy(1,17);cprintf("vieja :%d\n",lv);
{
do
{
gotoxy(1,4);printf("Ingrese el sitio de tu jugada [1-18]: ");
scanf("%d",&sitio);

/*Jugadas para 'X'*/
if (sitio<=0 || sitio>18)
{gotoxy (1,6); printf ("Entrada incorrecta, introduzca un no. valido:");}
else if (sitio==1) {i=j=1;}
else if (sitio==2) {i=1; j=2;}
else if (sitio==3) {i=1; j=3;}
else if (sitio==4) {i=2; j=1;}
else if (sitio==5) {i=j=2;}
else if (sitio==6) {i=2; j=3;}
else if (sitio==7) {i=3; j=1;}
else if (sitio==8) {i=3; j=2;}
else if (sitio==9) {i=j=3;}
/*Jugadas Para 'O'*/
else if (sitio==10) {i=j=1;}
else if (sitio==11) {i=1; j=2;}
else if (sitio==12) {i=1; j=3;}
else if (sitio==13) {i=2; j=1;}
else if (sitio==14) {i=j=2;}
else if (sitio==15) {i=2; j=3;}
else if (sitio==16) {i=3; j=1;}
else if (sitio==17) {i=3; j=2;}
else if (sitio==18) {i=j=3;}

if (m[i][j]=='O'||m[i][j]=='X')
{gotoxy (1,5); printf ("Esta casilla esta  ocupada, introduzca una nueva: ");
sitio=0;}
}
/*Formula para imprimir la jugada donde corresponda*/
while (sitio <=0 || sitio>18);
{

if(sitio<10)
{gotoxy(((j+1)*6)+6,((i+1)*3)+7); printf ("X");
m[i][j]='X';}

if(sitio>9)
{gotoxy(((j+1)*6)+6,((i+1)*3)+7); printf ("O");
m[i][j]='O';}

}

/*Revisar Ganador para 'X'*/
if (m[1][1]=='X'&& m[1][1]==m[2][2]&& m[2][2]==m[3][3])
{
gotoxy(14,23);printf("%s Gano la Partida\n",j1);
gotoxy(18,13); printf ("\\");gotoxy(24,16); printf ("\\");gotoxy(30,19); printf ("\\");
return 0;}
if (m[3][1]=='X'&& m[3][1]==m[2][2]&& m[2][2]==m[1][3])
{
gotoxy(14,23);printf("%s Gano la Partida\n",j1);
gotoxy(30,13); printf ("/");gotoxy(24,16); printf ("/");gotoxy(18,19); printf ("/");
return 0;}
if (m[1][1]=='X'&& m[1][1]==m[2][1]&& m[2][1]==m[3][1])
{
gotoxy(14,23);printf("%s Gano la Partida\n",j1);
gotoxy(18,13); printf ("|");gotoxy(18,16); printf ("|");gotoxy(18,19); printf ("|");
return 0;}
if (m[1][2]=='X'&& m[1][2]==m[2][2]&& m[2][2]==m[3][2])
{
gotoxy(14,23);printf("%s Gano la Partida\n",j1);
gotoxy(24,13); printf ("|");gotoxy(24,16); printf ("|");gotoxy(24,19); printf ("|");
return 0;}
if (m[1][3]=='X'&& m[1][3]==m[2][3]&& m[2][3]==m[3][3])
{
gotoxy(14,23);printf("%s Gano la Partida\n",j1);
gotoxy(30,13); printf ("|");gotoxy(30,16); printf ("|");gotoxy(30,19); printf ("|");
return 0;}
if (m[1][1]=='X'&& m[1][1]==m[1][2]&& m[1][2]==m[1][3])
{
gotoxy(14,23);printf("%s Gano la Partida\n",j1);
gotoxy(18,13); printf ("_"); gotoxy(24,13); printf ("_");gotoxy(30,13); printf ("_");
return 0;}
if (m[2][1]=='X'&& m[2][1]==m[2][2]&& m[2][2]==m[2][3])
{
gotoxy(14,23);printf("%s Gano la Partida\n",j1);
gotoxy(18,16); printf ("_"); gotoxy(24,16); printf ("_");gotoxy(30,16); printf ("_");
return 0;}
if (m[3][1]=='X'&& m[3][1]==m[3][2]&& m[3][2]==m[3][3])
{
gotoxy(14,23);printf("%s Gano la Partida\n",j1);
gotoxy(18,19); printf ("_"); gotoxy(24,19); printf ("_");gotoxy(30,19); printf ("_");
return 0;}

/*Revisar Ganador para 'O'*/

if (m[1][1]=='O'&& m[1][1]==m[2][2]&& m[2][2]==m[3][3])
{
gotoxy(14,23);printf("%s Gano la Partida\n",j2);
gotoxy(18,13); printf ("\\");gotoxy(24,16); printf ("\\");gotoxy(30,19); printf ("\\");
return 0;}
if (m[3][1]=='O'&& m[3][1]==m[2][2]&& m[2][2]==m[1][3])
{
gotoxy(14,23);printf("%s Gano la Partida\n",j2);
gotoxy(30,13); printf ("/");gotoxy(24,16); printf ("/");gotoxy(18,19); printf ("/");
return 0;}
if (m[1][1]=='O'&& m[1][1]==m[2][1]&& m[2][1]==m[3][1])
{
gotoxy(14,23);printf("%s Gano la Partida\n",j2);
gotoxy(18,13); printf ("|");gotoxy(18,16); printf ("|");gotoxy(18,19); printf ("|");
return 0;}
if (m[1][2]=='O'&& m[1][2]==m[2][2]&& m[2][2]==m[3][2])
{
gotoxy(14,23);printf("%s Gano la Partida\n",j2);
gotoxy(24,13); printf ("|");gotoxy(24,16); printf ("|");gotoxy(24,19); printf ("|");
return 0;}
if (m[1][3]=='O'&& m[1][3]==m[2][3]&& m[2][3]==m[3][3])
{
gotoxy(14,23);printf("%s Gano la Partida\n",j2);
gotoxy(30,13); printf ("|");gotoxy(30,16); printf ("|");gotoxy(30,19); printf ("|");
return 0;}
if (m[1][1]=='O'&& m[1][1]==m[1][2]&& m[1][2]==m[1][3])
{
gotoxy(14,23);printf("%s Gano la Partida\n",j2);
gotoxy(18,13); printf ("_"); gotoxy(24,13); printf ("_");gotoxy(30,13); printf ("_");
return 0;}
if (m[2][1]=='O'&& m[2][1]==m[2][2]&& m[2][2]==m[2][3])
{
gotoxy(14,23);printf("%s Gano la Partida\n",j2);
gotoxy(18,16); printf ("_"); gotoxy(24,16); printf ("_");gotoxy(30,16); printf ("_");
return 0;}
if (m[3][1]=='O'&& m[3][1]==m[3][2]&& m[3][2]==m[3][3])
{
gotoxy(14,23);printf("%s Gano la Partida\n",j2);
gotoxy(18,19); printf ("_"); gotoxy(24,19); printf ("_");gotoxy(30,19); printf ("_");
return 0;}
}
}


main()
{

int opcion;
clrscr();
leer ();
StarLabel:
m[i][J]=0;
mostrar ();
usuarios ();

printf ("\n\n\n");
printf ("Que deseas hacer?");
printf ("Opcion 1: continuar");
printf ("Opcion 2:salir");
scanf ("%d", &opcion);
switch (opcion)
{
case 1:goto StarLabel;

case 2:return 0;
}
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Urgente NeleK ayuda chance

Publicado por Nelek (816 intervenciones) el 25/07/2006 10:12:32
Mmm,

a primera vista te diría que tienes un fallo cuando reinicias la partida. Le estas diciendo:

int opcion;
clrscr();
leer ();
StarLabel:
m[i][J]=0;
mostrar ();
usuarios ();

En primer lugar la "j" la estas poniendo mayuscula, lo que hace que no la reconozca como el contador porque, que yo sepa, hay difencias "Case sensitive" (Maysc y mins). En segundo lugar estas reiniciando la matriz en una solo comando, sin recorrera con ningun "for" por lo que como mucho te pondra un 0 en una sola casilla. Y en tercer lugar... creo que puedes tener conflictos entre variables globales y locales. Ten en cuenta que te has declarado "i" y "j" al principio del todo y luego las estas volviendo a declarar dentro de las funciones, por lo que "machacas" la variable global con variables locales. Esto ultimo que te he dicho, puede que no te afecte al funcionamiento, pero es un fallo de estructuracion/diseño.

el contenido del main yo lo dejaria como...

int opcion;
clrscr();
leer ();
StarLabel:
reiniciar ();
mostrar ();
usuarios ();

y luego en la funcion reiniciar:

void reiniciar ()
{
for (i = 0; i < limite?; i++)
{
for (j = 0; j < limite?; j++)
{
m[i][j] = 0;
}
}
}

Nota: lo que puse de "limite", ajustalo a lo que te convenga.

Pruebalo y me dices algo, a ver si aun me da tiempo a leerte antes de irme a casa, que el desfase horario...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar