Juego de Ajedrez en C++

Ovidi
06 de Enero del 2006
Muy buenas, estoy estudianto Telecos y me han mandado hacer un proyecto que tiene que dejarte jugar al ajedrez. Si alguien tiene la bondad de ayudar-me se lo agradeceria mucho. Hasta el momento tengo el siguiente codigo:

consola.cpp

#include <windows.h>
#include <wincon.h>
#include "consola.h"
#include <iostream>
using namespace std;

DWORD cNumRead;

int res;
HANDLE hCon;
const COORD punt_base={0,20};

void esborra_linia(int y)
{
COORD p={0,y};
char _espais[51]=" ";
hCon=GetStdHandle(STD_OUTPUT_HANDLE);
WriteConsoleOutputCharacter(hCon,_espais,50,p,&cNumRead);
}

void mostra_text(text missatge)
{
COORD p={punt_base.X,punt_base.Y-1};
esborra_linia(p.Y);
int i=0;
while (missatge[i]!='') {
WriteConsoleOutputCharacter(hCon,&missatge[i],1,p,&cNumRead);
p.X++,i++;
}
}

void mostra_forsa(int f1,int f2)
{
text t;
sprintf(t,"Punts: B=%d N=%d",f1,f2);
mostra_text(t);
}

bool llegeix_punt(char& lletra,char& numero,text missatge)
{
// Obtenir handle a la consola
hCon=GetStdHandle(STD_OUTPUT_HANDLE);

esborra_linia(punt_base.Y);

COORD p=punt_base;
int i=0;
while (missatge[i]!='') {
WriteConsoleOutputCharacter(hCon,&missatge[i],1,p,&cNumRead);
p.X++,i++;
}

// Posa el cursor a continuació
p.X++;
SetConsoleCursorPosition(hCon,p);

// Llegeix 2 caracters
cin >> lletra;
if (lletra=='.') return false;
cin >> numero;
return numero!='.';
}

void dibuixa_cuadricula()
{
char _dalt[26]={32,201,205,205,203,205,205,203,205,205,203,205,205,203,
205,205,203,205,205,203,205,205,203,205,205,187};
char _mig1[26]={32,186, 32, 32,186, 32, 32,186, 32, 32,186, 32, 32,186,
32, 32,186, 32, 32,186, 32, 32,186, 32, 32,186};
char _mig2[26]={32,204,205,205,206,205,205,206,205,205,206,205,205,206,
205,205,206,205,205,206,205,205,206,205,205,185};
char _baix[26]={32,200,205,205,202,205,205,202,205,205,202,205,205,202,
205,205,202,205,205,202,205,205,202,205,205,188};

for (int i=0;i<25;i++) esborra_linia(i);

// Obtenir handle a la consola
hCon=GetStdHandle(STD_OUTPUT_HANDLE);

// Escriure la cuadricula
COORD p={0,0};
WriteConsoleOutputCharacter(hCon,_dalt,26,p,&cNumRead); p.Y++;
for (int i=0;i<7;i++) {
WriteConsoleOutputCharacter(hCon,_mig1,26,p,&cNumRead); p.Y++;
WriteConsoleOutputCharacter(hCon,_mig2,26,p,&cNumRead); p.Y++;
}
WriteConsoleOutputCharacter(hCon,_mig1,26,p,&cNumRead); p.Y++;
WriteConsoleOutputCharacter(hCon,_baix,26,p,&cNumRead);

// Escriure números & lletres
char numeros[9]="87654321";
for (int i=0;i<8;i++) {
COORD p2={0,i*2+1};
WriteConsoleOutputCharacter(hCon,&numeros[i],1,p2,&cNumRead);
}
char lletres[9]="abcdefgh";
for (int i=0;i<8;i++) {
COORD p2={2+3*i,17};
WriteConsoleOutputCharacter(hCon,&lletres[i],1,p2,&cNumRead);
}

// Situar la posició del cursor a sota el taulell
SetConsoleCursorPosition(hCon,punt_base);
}

void dibuixa_caracters(char c1,char c2,int x,int y)
{
// Obtenir handle a la consola
hCon=GetStdHandle(STD_OUTPUT_HANDLE);

// Guardar informació de la consola (per la posició del cursor)
CONSOLE_SCREEN_BUFFER_INFO info;
GetConsoleScreenBufferInfo(hCon,&info);

// Escriure el caràcter
COORD p;
p.X=(x+1)*3-1,p.Y=(y+1)*2-1;
WriteConsoleOutputCharacter(hCon,&c1,1,p,&cNumRead); p.X++;
WriteConsoleOutputCharacter(hCon,&c2,1,p,&cNumRead);

// Restaurar la posició del cursor
SetConsoleCursorPosition(hCon,info.dwCursorPosition);
}


consola.hpp

#ifndef __CONSOLA_H__
#define __CONSOLA_H__

typedef char text[51];
void dibuixa_caracters(char c1,char c2,int x,int y);
void dibuixa_cuadricula();
void mostra_text(text missatge);
void mostra_forsa(int f1,int f2);
bool llegeix_punt(char& x,char& y,text missatge);

#endif

sofia
06 de Enero del 2006
hola te felicito,por ser un as en la programacion yo tambien desearia ser como tu pero no se como empezar, tu que me recomiendas , sabes tengo nocion de la programacion pero la verdad no soy buena , pero quiero serlo y quiero empezar de cero y por ello recurri a este foro por favor aconsejame.