[C con Clase] juego 4 en linea
Luis Enrique Rojas Desales
a_cracia_ en hotmail.com
Dom Mayo 18 21:59:12 CEST 2008
hola miren tengo un problema con este juego de 4 en linea el problema es que me falta evaluar si gano en direccion diagonal de derecha a izquierda lo intente acer decrementando los rangos de valor como si estuviera evaluadno las diagonasles de izquierda a derecha pero no me da si lo ago de esa manera se cicla espero me puedan ayudar
desde ya gracias
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
int tablero[6][7];
int indice[2];
int ctr,lineas,a;
int f=0,c=0;
int h1=0,h2=0,n=0,d1=0;
int ctrplayer=1;
//
//
//
int main(int argc, char** argv) {
textbackground(1);
for (f=0;f<6;f++) {
for (c=0;c<7;c++) {
tablero[f][c]='-';
}
}
for (c=0;c<7;c++) {
tablero[5][c]='_';
}
for (ctr=0;ctr<42;) {
clrscr();
printf("\n\n\n\n\n\n");
cprintf(" 0 1 2 3 4 5 6");
for (f=0;f<6;f++) {
printf(" \n ");
textbackground(1);
cprintf("\n%d", f);
textbackground(1);
for (c=0;c<7;c++) {
cprintf(" %c ", tablero[f][c]);
textbackground(1);
}
}
printf("\n\n turno fichas %c. Introduce el indice del tiro (fil):",ctrplayer);
scanf("%d",& indice[0]);
printf("\n\n turno fichas %c. Introduce el indice del tiro (col):",ctrplayer);
scanf("%d",& indice[1]);
f=indice[0];
c=indice[1];
if (ctrplayer==1) {
if (tablero[f][c]=='_') {
tablero[f][c]=1;
ctr++;
ctrplayer++;
tablero [--f][c]='_';
++f;
n=0;
/*Filtro para las verticales*/
for (n=0;n<5;) {
if (tablero[n][c]==1) {
if (tablero[++n][c]==1) {
if (tablero[++n][c]==1) {
if (tablero[++n][c]==1) {
h1=1;
}
}
}
}
else n++;
}
/*filtro para horizontales*/
for (n=0;n<6;) {
if (tablero[f][n]==1) {
if (tablero[f][++n]==1) {
if (tablero[f][++n]==1) {
if (tablero[f][++n]==1) {
h1=1;
}
}
}
}
else n++;
}
/*Filtro para las diagonales / fila5*/
for (n=0;n<4;) {
if (tablero[5][n]==1) {
if (tablero[4][++n]==1) {
if (tablero[3][++n]==1) {
if (tablero[2][++n]==1) {
h1=1;
}
}
}
}
else n++;
}/*Filtro para las diagonales / fila 4*/
for (n=0;n<4;) {
if (tablero[4][n]==1) {
if (tablero[3][++n]==1) {
if (tablero[2][++n]==1) {
if (tablero[1][++n]==1) {
h1=1;
}
}
}
}
else n++;
}/*Filtro para las diagonales / fila 3*/
for (n=0;n<4;) {
if (tablero[3][n]==1) {
if (tablero[2][++n]==1) {
if (tablero[1][++n]==1) {
if (tablero[0][++n]==1) {
h1=1;
}
}
}
}
else n++;
}
/*Filtro para las diagonales \ fila 3*/
for (n=0;n<4;) {
if (tablero[5][n--]==1) {
if (tablero[4][n--]==1) {
if (tablero[3][n--]==1) {
if (tablero[2][n--]==1) {
d1=1;
}
}
}
}
else n++;
}
if (h1==1 || d1=1) {
clrscr();
for (f=0;f<6;f++) {
printf("\n \n");
for (c=0;c<7;c++) {
cprintf(" %c ", tablero[f][c]);
textbackground(1);
}
}
printf("\n \n Fichas Negras Ganan");
getch();
return 0;
}
}
else if (tablero [f][c]==1 || tablero [f][c]==2) {
printf(" \n La localidad ya ha sido ocupada \n");
getch();
}
else if (tablero [f][c]=='-') {
printf("\n La localidad esta desactivada \n");
getch();
}
}
else if (ctrplayer==2)
{
if (tablero[f][c]=='_') {
tablero[f][c]=2;
ctr++;
ctrplayer--;
tablero [--f][c]='_';
++f;
n=0;
/*Filtro para las verticales*/
for (n=0;n<5;) {
if (tablero[n][c]==2) {
if (tablero[++n][c]==2) {
if (tablero[++n][c]==2) {
if (tablero[++n][c]==2) {
h2=1;
}
}
}
}
else n++;
}
/*filtro para horizontales*/
for (n=0;n<6;) {
if (tablero[f][n]==2) {
if (tablero[f][++n]==2) {
if (tablero[f][++n]==2) {
if (tablero[f][++n]==2) {
h2=1;
}
}
}
}
else n++;
}
/*Filtro para las diagonales / fila5*/
for (n=0;n<4;) {
if (tablero[5][n]==2) {
if (tablero[4][++n]==2) {
if (tablero[3][++n]==2) {
if (tablero[2][++n]==2) {
h2=1;
}
}
}
}
else n++;
}/*Filtro para las diagonales / fila 4*/
for (n=0;n<4;) {
if (tablero[4][n]==2) {
if (tablero[3][++n]==2) {
if (tablero[2][++n]==2) {
if (tablero[1][++n]==2) {
h2=1;
}
}
}
}
else n++;
}/*Filtro para las diagonales / fila 3*/
for (n=0;n<4;) {
if (tablero[3][n]==2) {
if (tablero[2][++n]==2) {
if (tablero[1][++n]==2) {
if (tablero[0][++n]==2) {
h2=1;
}
}
}
}
else n++;
}
if (h2==1) {
clrscr();
for (f=0;f<6;f++) {
printf("\n \n");
for (c=0;c<7;c++) {
cprintf(" %c ", tablero[f][c]);
textbackground(1);
}
}
printf("\n \n Fichas Blancas Ganan");
break;
}
}
else if (tablero [f][c]==1 || tablero [f][c]==2) {
printf(" \n La localidad ya ha sido ocupada \n");
getch();
}
else if (tablero [f][c]=='-') {
printf("\n La localidad esta desactivada \n");
getch();
}
}
}
getch();
return 0;
}
_________________________________________________________________
Los mejores conciertos en exclusiva por MSN in concert
http://video.msn.com/?mkt=es-mx
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20080518/6e2f2629/attachment.html>
Más información sobre la lista de distribución Cconclase