Juego de Ajedrez en C++
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
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
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.