Este es el codigo fuente del conecta 4 ke he echo, pero hay un problema y no se como solucionarlo y es el siguiente:
Al pulsar la letra p el programa se keda pausado, y hay se deveria kedar hasta pulsar otra vez la letra p, pero si yo pulso el Enter el programa se salta el pausado y me suelta una ficha. A ver si alguno me puedo modificar eso please, lo tengo ke entregar el dia 5 para poder aprobar.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
int matriz[6][7]={{0,0,0,0,0,0,0},{0,0,0,0,0,0,0},{0,0,0,0,0,0,0},{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},{0,0,0,0,0,0,0}};
void cuadricula()
{
textcolor(MAGENTA);
gotoxy(20,6);
cprintf("ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»");
gotoxy(20,7);
cprintf("º º");
gotoxy(20,8);
cprintf("ÌÍÍÍËÍÍÍËÍÍÍËÍÍÍËÍÍÍËÍÍÍËÍÍ͹");
gotoxy(20,9);
cprintf("º º º º º º º º");
gotoxy(20,10);
cprintf("ÌÍÍÍÎÍÍÍÎÍÍÍÎÍÍÍÎÍÍÍÎÍÍÍÎÍÍ͹");
gotoxy(20,11);
cprintf("º º º º º º º º");
gotoxy(20,12);
cprintf("ÌÍÍÍÎÍÍÍÎÍÍÍÎÍÍÍÎÍÍÍÎÍÍÍÎÍÍ͹");
gotoxy(20,13);
cprintf("º º º º º º º º");
gotoxy(20,14);
cprintf("ÌÍÍÍÎÍÍÍÎÍÍÍÎÍÍÍÎÍÍÍÎÍÍÍÎÍÍ͹");
gotoxy(20,15);
cprintf("º º º º º º º º");
gotoxy(20,16);
cprintf("ÌÍÍÍÎÍÍÍÎÍÍÍÎÍÍÍÎÍÍÍÎÍÍÍÎÍÍ͹");
gotoxy(20,17);
cprintf("º º º º º º º º");
gotoxy(20,18);
cprintf("ÌÍÍÍÎÍÍÍÎÍÍÍÎÍÍÍÎÍÍÍÎÍÍÍÎÍÍ͹");
gotoxy(20,19);
cprintf("º º º º º º º º");
gotoxy(20,20);
cprintf("ÈÍÍÍÊÍÍÍÊÍÍÍÊÍÍÍÊÍÍÍÊÍÍÍÊÍÍͼ");
}
int valorx(int posicion)
{int x;
if(posicion==5)
x=19;
if(posicion==4)
x=17;
if(posicion==3)
x=15;
if(posicion==2)
x=13;
if(posicion==1)
x=11;
if(posicion==0)
x=9;
return x;
}
int valory(int posicion)
{int y;
if (posicion==22)
y=0;
if (posicion==26)
y=1;
if (posicion==30)
y=2;
if (posicion==34)
y=3;
if (posicion==38)
y=4;
if (posicion==42)
y=5;
if (posicion==46)
y=6;
return y;
}
int comprobar(int x, int y)
{ int raya=0;
if(matriz
{
if((matriz
- [y]==matriz[x+1][y]) && (matriz
- [y]==matriz[x+2][y]) && (matriz
- [y]==matriz[x+3][y]))
{
raya=1;
}
if((matriz
- [y]==matriz
- [y+1]) && (matriz
- [y]==matriz
- [y+2]) && (matriz
- [y]==matriz
- [y+3]))
{
raya=1;
}
if((matriz
- [y]==matriz
- [y-1]) && (matriz
- [y]==matriz
- [y-2]) && (matriz
- [y]==matriz
- [y-3]))
{
raya=1;
}
if((matriz
- [y]==matriz[x+1][y+1]) && (matriz
- [y]==matriz[x+2][y+2]) && (matriz
- [y]==matriz[x+3][y+3]))
{
raya=1;
}
if((matriz
- [y]==matriz[x+1][y-1]) && (matriz
- [y]==matriz[x+2][y-2]) && (matriz
- [y]==matriz[x+3][y-3]))
{
raya=1;
}
}
if(matriz
{
if((matriz
- [y]==matriz[x+1][y]) && (matriz
- [y]==matriz[x+2][y]) && (matriz
- [y]==matriz[x+3][y]))
{
raya=2;
}
if((matriz
- [y]==matriz
- [y+1]) && (matriz
- [y]==matriz
- [y+2]) && (matriz
- [y]==matriz
- [y+3]))
{
raya=2;
}
if((matriz
- [y]==matriz
- [y-1]) && (matriz
- [y]==matriz
- [y-2]) && (matriz
- [y]==matriz
- [y-3]))
{
raya=2;
}
if((matriz
- [y]==matriz[x+1][y+1]) && (matriz
- [y]==matriz[x+2][y+2]) && (matriz
- [y]==matriz[x+3][y+3]))
{
raya=2;
}
if((matriz
- [y]==matriz[x+1][y-1]) && (matriz
- [y]==matriz[x+2][y-2]) && (matriz
- [y]==matriz[x+3][y-3]))
{
raya=2;
}
}
return raya;
}
main()
{char letra;
int posicion=22;
int x=5; //controla la posicion de cuadros arriba||abajo
int t=19; //controla la X del gotoxy
int y; //controla la posicion de cuadros de un lado a otro
int jugada=1;
int n=0;
int i;
int j;
int p=0;
int raya;
clrscr();
textcolor(LIGHTBLUE);
cprintf(" I:INICIO=======P:PAUSA=======S:SALIR=======A:AYUDA");
cuadricula();
gotoxy(posicion,7);
_setcursortype(_NOCURSOR);
do
{
letra=getch();
if (letra==105) //si la tecla pulsada es I, empieza el juego
{
gotoxy(20,3);
textcolor(RED);
cprintf("TU TURNO: JUGADOR 1");
gotoxy(17,25);
printf(" ");
gotoxy(22,7);
_setcursortype(_SOLIDCURSOR);
do
{
letra=getch();
x=5;
if (letra==75)
{
posicion=posicion-4;
gotoxy(posicion,7);
if (posicion<22)
{
posicion=22;
gotoxy(posicion,7);
}
}
if (letra==77)
{
posicion=posicion+4;
gotoxy(posicion,7);
if (posicion>46)
{
posicion=46;
gotoxy(posicion,7);
}
}
if (letra==112) //si la tecla es P, se pausa el juego
{
_setcursortype(_NOCURSOR);
gotoxy(25,24);
textcolor(RED);
cprintf("Juego en pausa");
letra=getch();
if (letra==112)
{
gotoxy(25,24);
printf(" ");
_setcursortype(_SOLIDCURSOR);
gotoxy(27,7);
}
}
if (letra==105)
{
for (i=0;i<6;i++)
{
for (j=0;j<7;j++)
{
matriz
[j]=0;
jugada=1;
}
}
clrscr();
textcolor(LIGHTBLUE);
cprintf(" I:INICIO=======P:PAUSA======S:SALIR======A:AYUDA");
gotoxy(20,3);
textcolor(RED);
cprintf("TU TURNO: JUGADOR 1");
cuadricula();
gotoxy(posicion,7);
_setcursortype(_SOLIDCURSOR);
}
if (letra==13) //si se pulsa ENTER, comienza el juego
{
y=wherex();
y=valory(y);
if ((jugada%2)!=0)
{
n=0;
}
if ((jugada%2)==0)
{
n=1;
}
jugada++;
if (n==0)
{
if (matriz
{
matriz
t=valorx(x);
gotoxy(posicion,t);
textcolor(BLUE);
cprintf("O");
gotoxy(20,3);
textcolor(RED);
cprintf("TU TURNO: JUGADOR 2");
gotoxy(posicion,7);
_setcursortype(_SOLIDCURSOR);
}
else
{
do{
x=x-1;
}while(matriz
matriz
t=valorx(x);
if(t>19)
{
t=9;
}
gotoxy(posicion,t);
textcolor(BLUE);
cprintf("O");
gotoxy(20,3);
textcolor(RED);
cprintf("TU TURNO: JUGADOR 2");
gotoxy(posicion,7);
_setcursortype(_SOLIDCURSOR);
}
p=comprobar(x,y);
if (p==1)
{
gotoxy(31,5);
textcolor(RED);
cprintf("JUGADOR 1: GANADOR");
}
if (p==2)
{
gotoxy(31,5);
textcolor(RED);
cprintf("JUGADOR 2: GANADOR");
}
}
if (n==1)
{
if (matriz
{
matriz
t=valorx(x);
gotoxy(posicion,t);
textcolor(GREEN);
cprintf("O");
gotoxy(20,3);
textcolor(RED);
cprintf("TU TURNO: JUGADOR 1");
gotoxy(posicion,7);
_setcursortype(_SOLIDCURSOR);
}
else
{
do{
x=x-1;
}while(matriz
matriz
t=valorx(x);
if(t>19)
{
t=9;
}
gotoxy(posicion,t);
textcolor(GREEN);
cprintf("O");
gotoxy(20,3);
textcolor(RED);
cprintf("TU TURNO: JUGADOR 1");
gotoxy(posicion,7);
_setcursortype(_SOLIDCURSOR);
}
p=comprobar(x,y);
if (p==1)
{
gotoxy(31,5);
textcolor(RED);
cprintf("JUGADOR 1: GANA");
}
if (p==2)
{
gotoxy(31,5);
textcolor(RED);
cprintf("JUGADOR 2: GANA");
}
}
}
}
while(letra!=115 && p==0);
if (p==1 || p==2)
{
gotoxy(20,22);
textcolor(RED);
cprintf("Juego acabado");
gotoxy(17,25);
textcolor(RED);
cprintf("Pulse la tecla ESC para salir");
}
if (letra==115)
{
_setcursortype(_NOCURSOR);
gotoxy(17,25);
textcolor(RED);
cprintf("Pulse la tecla ESC para salir");
}
}
if (letra==115)
{
_setcursortype(_NOCURSOR);
gotoxy(17,25);
textcolor(RED);
cprintf("Pulse la tecla ESC para salir");
}
if (letra==97)
{
clrscr();
printf(" MENU DE AYUDA\n\n");
printf("Si usted pulsa la tecla I, el juego empezara\n\n");
printf("Si usted pulsa la tecla P, el juego quedara pausado\n\n");
printf("Si usted desea terminar el juego pulse la tecla S\n\n");
printf("Si usted desea moverse por la pantalla utilice las teclas de direcci¢n\n\n");
printf("Cuando usted dese depositar una ficha en la casilla elegida pulse la tecla ENTER\n\n");
letra=getch();
if (letra==97)
{
clrscr();
textcolor(LIGHTBLUE);
cprintf(" I:INICIO=====P:PAUSA======S:SALIR======A:AYUDA");
cuadricula();
gotoxy(posicion,7);
_setcursortype(_NOCURSOR);
}
}
}
while(letra!=27);
return 0;
}