Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

blg

jogo bagha-chall em c

Recommended Posts

olá, preciso desenvoler um programa em c que permite ao usuário jogar bagha-chall, o programa executará em modo texto em uma janela de terminal, mas não estou conseguindo, sou novata nisso e estou tendo dificuldade, o jogo é disputado num tabuleiro com 25 intersecções (5x5), começando com 4 tigres nos cantos e 20 cabras fora. As peças são colocadas nas intersecções das linhas e os movimentos seguem as linhas determinadas no tabuleiro. o objetivo do jogador que está jogando com os tigres é capturar as cabras e do jogador que joga com as cabras, é imobilizar os quatro tigres. As cabras não podem se movimentar até que as 20 estejam no tabuleiro, já os tigres podem se movimentar desde o começo do jogo.

 

o tabuleiro é simples , ficaria assim no terminal:

 

T - tigres

 

T---+---+---+---T

| \ | / | \ | / |

| \ | / | \ | / |

| \ | / | \ | / |

+---+---+---+---+

| / | \ | / | \ |

| / | \ | / | \ |

| / | \ | / | \ |

+---+---+---+---+

| \ | / | \ | / |

| \ | / | \ | / |

| \ | / | \ | / |

+---+---+---+---+

| / | \ | / | \ |

| / | \ | / | \ |

| / | \ | / | \ |

T---+---+---+---T

 

 

se alguém puder me dar uma luz eu agradeço

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Suponho que já deves saber algo sobre teoria de videogames não?

-gameloop

-Gestão de eventos para teclado nesse caso.

- IA no caso de ter que jogar com a maquina.

 

As barras invertidas para poder imprimir elas devemos por 2 barras \\ para que saia uma.

Vou deixar um exemplo que apesar de não saber si te vai funcionar por causa do getch, te deveria dar uma ideia.

#include <iostream>
#include <windows.h>
#include <conio.h>
using namespace std;

void gotoxy ( int x, int y ) {
    HANDLE hcon;
    hcon = GetStdHandle ( STD_OUTPUT_HANDLE );
    COORD dwPos;
    dwPos.X = x;
    dwPos.Y = y;
    SetConsoleCursorPosition ( hcon, dwPos );
}

int main () {
    char mapa[17][27] = {
        {"+-----+-----+-----+-----+"},
        {"| \\   |   / | \\   |   / |"},
        {"|  \\  |  /  |  \\  |  /  |"},
        {"|   \\ | /   |   \\ | /   |"},
        {"+-----+-----+-----+-----+"},
        {"|   / | \\   |   / | \\   |"},
        {"|  /  |  \\  |  /  |  \\  |"},
        {"| /   |   \\ | /   |   \\ |"},
        {"+-----+-----+-----+-----+"},
        {"| \\   |   / | \\   |   / |"},
        {"|  \\  |  /  |  \\  |  /  |"},
        {"|   \\ | /   |   \\ | /   |"},
        {"+-----+-----+-----+-----+"},
        {"|   / | \\   |   / | \\   |"},
        {"|  /  |  \\  |  /  |  \\  |"},
        {"| /   |   \\ | /   |   \\ |"},
        {"+-----+-----+-----+-----+"}
    };
    
    
    for ( int y = 0; y < 17; y++ ) {
        for ( int x = 0; x < 27; x++ ) {
            cout << mapa[y][x];
        }
        cout << endl;
    }
    
    int x = 0;
    int y = 16;
    int cx = 0;
    int cy = 0;
    
    //inicia em:
    gotoxy ( 0, 16 );
    printf ( "T" );
    
    int ch;
    while ( ( ch = _getch() ) ) {
        if ( ch == 27 ) {
            return 0;
        }
        if ( ch == 72 ) {
            //cout << "up" << endl;
            if ( y > 0 ) {
                gotoxy ( x, y );
                printf ( "+" );
                y = y - 4;
                gotoxy ( x, y );
                printf ( "T" );
            }
            
        } else if ( ch == 75 ) {
            //cout << "left" << endl;
            if ( x > 0 ) {
                gotoxy ( x, y );
                printf ( "+" );
                x = x - 6;
                gotoxy ( x, y );
                printf ( "T" );
            }
            
        } else if ( ch == 77 ) {
            //cout << "right" << endl;
            if ( x <= 20 ) {
                gotoxy ( x, y );
                printf ( "+" );
                x = x + 6;
                gotoxy ( x, y );
                printf ( "T" );
            }
            
            
        } else if ( ch == 80 ) {
            //cout << "down" << endl;
            if ( y <= 12 ) {
                gotoxy ( x, y );
                printf ( "+" );
                y = y + 4;
                gotoxy ( x, y );
                printf ( "T" );
            }
            
        } else {
            gotoxy ( x, y );
            printf ( "+" );
            cx = x;
            cy = y;
            gotoxy ( x, y );
            printf ( "T" );
            x = cx;
            y = cy;
        }
        
    }
    
    cin.ignore();
    return 0;
}

Esta feito e compilado com codeblocks e mingw-64, em windows7 de 32 bits. Si não te funciona busca o header conio.h.

Esse código se pode melhorar muito, até mesmo prescindir do conio.h que esse header não vale nada. :yes:

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.