codigo c++ de juego (PROYECTO Buenas dias amigos y amigas! les informo que he terminado un proyecto y se los quiero compartir, tambien quisiera si lo aprovechan me ayuden a poner una tabla de score para saber cuantos "peones" tiene cada jugador en cada jugada o al final de juego
printf("\n\t "); // muestra los numéros des columnas
for(int i=0;i<8;i++)
printf("%d ",i+1);
printf("\n");
#include<stdio.h>
#include<stdlib.h>
#include<time.h> //para inicializar srand(), rand()
#include <string.h>
#include <conio.h>
//'fonction macro' m(): conversion mayuscula a minusscula //
#define menos(c) ((c>='A')&&(c<='Z')? c+='a'-'A':c)
// clase principal : juego
struct juego
{
//datos
int * tablero; // tablero dinamico de enteros 8,8
//Funciones
// asignación de las 64 casillas del tablero
juego() // creador
{ tablero=(int*)malloc(64*sizeof(int));}
void start();
void muestra();
void jugador1(bool); // fase de juego (blanco ou negro)
bool posible(bool); // comprueba el juego sea posible, 1= blancoo, 0=negro
bool jugada(bool,int,int); // jugada de jugador
int jugada_PC(bool); // determina jugada de computadora
int ganador(); // quien tiene mas *
};
/////////////////////////////////////////////////////////////////////////
//llenando el tablero al principio
void juego::start()// tablero de pantalla inicial
{
for(int i=0;i<64;i++) // espacios en blanco
*(tablero+i)=0;
*(tablero+27)=1; /// llena las 4 cajas del centro
*(tablero+28)=2;
*(tablero+35)=2;
*(tablero+36)=1;
this->muestra();
}
void juego::muestra() // vista de tablero
{ //Caracteres *de dibujo*
char ver=(char) 179, hor=(char)196;
char hg=(char) 218, h=(char)194, cr=(char)197, hd=(char)191;
char g=(char)195, d=(char)180;
char bg=(char) 192, b=(char) 193, bd=(char) 217;
char hhgg=(char)201,hh=(char)205, hhdd=(char)187;
char vv=(char)186;
char bbgg=(char)200,bbdd=(char)188;
char bl=(char)177, nr=(char)219;
printf("\n\t "); // muestra los numéros des columnas
for(int i=0;i<8;i++)
printf("%d ",i+1);
printf("\n");
//parte superior de tablero
printf("\t%c",hhgg);
for(int j=0;j<27;j++)
printf("%c",hh);
printf("%c\n\t",hhdd);
printf("%c %c%c",vv,hg,hor);
for(int k=0;k<7;k++)
printf("%c%c%c",hor,h,hor);
printf("%c%c %c\n",hor,hd,vv);//fin de la parte superior de tablero
// relleno de tablero
for(int l=0;l<8;l++)
{
printf(" %c\t%c %c",'a'+l,vv,ver);// muestra el comienzo de cada fila
//llenado de fila
for(int c=0;c<8;c++)
{
switch (*(tablero+8*l+c))
{
case 0:
{printf(" %c",ver);break;}
case 1:
{printf("%c%c%c",bl,bl,ver);break;}
case 2:
{printf("%c%c%c",nr,nr,ver);break;}
default: break;
}
}
printf(" %c\n",vv); // va a la fila
if (l!=7) //muestra fila transversal
{
printf("\t%c %c%c",vv,g,hor);
for(int j=0;j<7;j++)
printf("%c%c%c",hor,cr,hor);
printf("%c%c %c\n",hor,d,vv);
}
}
//parte baja del tablero
printf("\t%c %c%c",vv,bg,hor);
for(int t=0;t<7;t++)
printf("%c%c%c",hor,b,hor);
printf("%c%c %c\n",hor,bd,vv);
printf("\t%c",bbgg);
for(int s=0;s<27;s++)
printf("%c",hh);
printf("%c\n\t",bbdd);
//fin de la parte baja del tablero
}
int juego::ganador() // devuelve peon blanco- peon negro ////////////////////
{
int diferente=0;
for(int i=0;i<64;i++)
switch (*(tablero+i))
{
case 1: {diferente++; break;}
case 2: {diferente--; break;}
default: {break;}
}
return diferente;
}
//jugador pone un token /////
bool juego::jugada(bool blanco,int i, int j)
{
int pion=8*i+j; //i=fila; j=columna
bool ok=false; //por default : fracasa
// si la caja no esta vacia
if (*(tablero+pion)!=0)
return false; //salir con fracaso
// teniendo en cuenta a jugador1
int yo, el; //mi color & su color
if (blanco)
{
yo=1; //yo juego blanco
el=2; //el juega negro
}
else
{
yo=2; //el juega negro
el=1; //el juega blanco
}
//A la derecha////////////////
int c=j+1;
while((*(tablero+8*i+c)==el) && (c<7))
c++;
if ((*(tablero+8*i+c)==yo) && (c>j+1))
{
ok=true;
for (int k=j;k<c;k++)
*(tablero+8*i+k)=yo;
}
//////////////////////////
//A izquierda////////////////
c=j-1;
while ((*(tablero+8*i+c)==el) && (c>0))
c--;
if ((*(tablero+8*i+c)==yo) && (c<j-1))
{
ok=true;
for (int k2=j;k2>c;k2--)
*(tablero+8*i+k2)=yo;
}
//////////////////////////
//abajo//////////////////
int l=i+1;
while ((*(tablero+8*l+j)==el) && (l<7))
l++;
if ((*(tablero+8*l+j)==yo) && (l>i+1))
{
ok=true;
for (int k=i;k<l;k++)
*(tablero+8*k+j)=yo;
}
//arriba/////////////////
l=i-1;
while ((*(tablero+8*l+j)==el) && (l>0))
l--;
if ((*(tablero+8*l+j)==yo) && (l<i-1))
{
ok=true;
for (int k=i;k>l;k--)
*(tablero+8*k+j)=yo;
}
//parte superior izquierda////////
int ld1=i-1;
int cd1=j-1;
while ((*(tablero+8*ld1+cd1)==el) && (ld1>0) && (cd1>0))
{
cd1--;
ld1--;
}
if ((*(tablero+8*ld1+cd1)==yo) && (cd1<j-1))
{
ok=true;
for(int k=8*i+j;k>8*ld1+cd1;k-=9)
*(tablero+k)=yo;
}
//parte superior derecha///////
int ld2=i-1;
int cd2=j+1;
while ((*(tablero+8*ld2+cd2)==el) && (ld2>0) && (cd2<7))
{
cd2++;
ld2--;
}
if ((*(tablero+8*ld2+cd2)==yo) && (cd2>j+1))
{
ok=true;
for(int k=8*i+j;k>8*ld2+cd2;k-=7)
*(tablero+k)=yo;
}
//parta inferior izquierda//////////
int ld3=i+1;
int cd3=j-1;
while ((*(tablero+8*ld3+cd3)==el) && (ld3<7) && (cd3>0))
{
cd3--;
ld3++;
}
if ((*(tablero+8*ld3+cd3)==yo) && (ld3>i+1))
{
ok=true;
for(int k=8*i+j;k<8*ld3+cd3;k+=7)
*(tablero+k)=yo;
}
// parte superior derecha //
int ld4=i+1;
int cd4=j+1;
while ((*(tablero+8*ld4+cd4)==el) && (ld4<7) && (cd4<7))
{
cd4++;
ld4++;
}
if ((*(tablero+8*ld4+cd4)==yo) && (ld4>i+1))
{
ok=true;
for(int k=8*i+j;k<8*ld4+cd4;k+=9)
*(tablero+k)=yo;
}
return ok;
}
Última edición por bigguns; 02/12/2012 a las 11:31 |