Help C#

Ruben_Barbosa

Power Member
Boas malta eu tenho um trabalho de xadrez para fazer e para já o que consegui fazer até agora e ja foi bom foi isto;).

Como tal sou iniciante em C#, mas já vou dando os toques =).
O que eu queria por exemplo era como criar um peça de xadrez e dizer que moviemntos pode Fazer.
Algo do Genero

Código:
char T; // caracter Torre
agora n sei como criar um movimento dela :(
acho que tenho que usar matriz mas ainda não aprendi mas se alguem me pode-se dar uma maozinha agradecia ;)
cumps


Código:
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <conio2.h>

void Menu_principal();
void desenhar_op();
void back_menu();
int tabuleiro ();
void nome_jogador();


int main()
{
    setlocale(LC_ALL,"");
    Menu_principal();
}



// Função para Menu
void Menu_principal()
{

    char opcao;
    textbackground(BLUE);
    textcolor(WHITE);
    clrscr();
    setlocale(LC_ALL,"");
    desenhar_op();
    opcao = getch();
    switch(opcao)
    {
        case 'J':
        case 'j':
        nome_jogador();
        tabuleiro ();


        case 'O':
        case 'o':


        case 'S':
        case 's':
            exit;
            break;

        default :
            printf("\n\n Opção Invalida.\n\n Deseja Voltar ao menu Inicial (S/N)");
            back_menu();
    }

}

//funcao que desenha o opções do jogo
void desenhar_op()
{
    gotoxy(28,5);
    printf("Bem Vindo ao Jogo de Xadrez\n\n\n\n\n");
    textcolor(WHITE);
    gotoxy(26,10);
    printf("- - -   Opções de Jogo    - - -");
    gotoxy(32,14);
    printf("[J]- player vs player");
    gotoxy(32,16);
    printf("[O]-opções do jogo");
    gotoxy(32,18);
    printf("[S]-Sair do jogo ");
}

// funcao voltar ao menu
void back_menu()
{
    char op;
    op = getch();

    switch(op)
    {
        case 'S':
        case 's':
            clrscr();
            system("PAUSE");
            Menu_principal();
            break;

        case 'N':
        case 'n':
            exit;
            break;

            default:
                printf("\n Opção invalida. O Programa vai encerrar!\n\n");
                exit;
                break;
    }
}

int tabuleiro ()
{

    int tab[10][10],x, y ,i;
        clrscr();
        i=6;
    for(x=1; x<=10; x++)
    {
        i++;
        gotoxy(30,i);
    for(y=1; y<=10; y++)
    {
        if( (x+y)%2 == 0 ) textcolor(WHITE);
            else textcolor(BLACK);
                cprintf("%c%c",219,219);
    }
    }
    gotoxy(20,20);
    printf ("introduza as coordenadas a inprimir\n");
    gotoxy(20,21);
    scanf("%d %d",&x,&y);
    tab[x][y];
    printf("**", tab[x][y]);
}

void nome_jogador()
{
    char P1[25];
    char P2[25];
    clrscr();
    printf("\n Introduza o Nome do Primeiro jogador.\n");
    gotoxy(2,4);
    gets(P1);
    printf("\n Introduza o Nome do Segundo jogador.\n");
    gotoxy(2,8);
    gets(P2);
}
 
Das uns toques em c#???

Entendi mal ou não sabes que isso não é c#.

Espero ter entendido mal o texto, ou o que tentaste transmitir, porque se entedi de c# não sabes nada....
 
@Tomb4000: pus-me logo a pensar no problema e nem reparei que ele estava a usar C e nao C# :D

Isso está mesmo a pedir o uso de classes e enums, mas não sei até que ponto ja deste essa materia e a podes usar.

O modo mais básico é teres uma lista do tipo de peças (um enum), teres uma função que recebe a posicao da peça, a posiçao pretendida e o tipo de peça. Usas um switch para dependendo do tipo de peça recebido saber se é um movimento válido ou nao. Se for valido a peça passa para a nova posicao, caso contrario da erro.


O tabuleiro vai ter de passar a ser variavel global...
Provavelmente o melhor metodo de distinguires entre cores das peças é usares 'T' para torre preta e 't' para torre branca por exemplo.

A função que valida o movimento pode começar por ver se na posicao final nao excede o tabuleiro, depois se existe alguma peça da mesma cor na posicao final.
Se isto for validado entao podes validar o movimento da peca com o switch, no caso da torre, pos_final.x == pos_inicial.x ou pos_final.y == pos_inicial.y (com pos_inicial != pos_final)
 
Pois, mas dependendo da linguagem podes chegar a soluções diferentes... por exemplo... se for c não vais usar classes de certeza....
Cumprimentos...
 
Back
Topo