Ir para conteúdo

POWERED BY:

Arquivado

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

kossoski

Como faço para passar de c++ para java

Recommended Posts

#include <stdio.h>


#define N 6 // Linhas do tabuleiro


#define M 7 // Colunas do tabuleiro


/* ---------------------------------------------------------


1. Nome : Esta Cheio


2. Função : Verifica se todas as colunas estão cheias


3. Argumentos : Tabuleiro


4. Retorno : 0 = não cheio / 1 = cheio


--------------------------------------------------------- */


int estaCheio(int tab[N][M]) {


int i;


for (i = 0; i < M; i++) {


if (tab[0] == '.') {


return 0;


}


}


return 1;


}


/* ---------------------------------------------------------


1. Nome : Escreve Tabuleiro


2. Função : Exibe as colunas na tela com '.','O' ou 'X'


3. Argumentos : Tabuleiro


4. Retorno : -- NADA --


--------------------------------------------------------- */


void escreveTabuleiro(int tab[N][M]) {


int i, j;


printf("-------------\n");


for (i = -1; i < N; i++) {


for (j = 0; j < M; j++) {


if (i == -1) {


printf("%d ",(j + 1));


continue;


}


printf("%c ",tab[j]);


}


printf("\n");


}


printf("-------------\n");


}


/* ---------------------------------------------------------


1. Nome : Lê Jogada


2. Função : Exibe quem é o jogador e captura a jogada


3. Argumentos : Jogador


4. Retorno : Coluna escolhida


--------------------------------------------------------- */


int leJogada(int jogador) {


char coluna;


printf("Jogador (%d)\n",jogador);


printf("Digite uma coluna: ");


scanf("\n%c",&coluna);


return ((int) coluna - 48);


}


/* ---------------------------------------------------------


1. Nome : Jogada Válida


2. Função : Verifica se coluna é válida e ñ está cheia


3. Argumentos : Tabuleiro e Coluna escolhida


4. Retorno : 0 = irregular / 1 = válida


--------------------------------------------------------- */


int jogadaValida(int tab[N][M], int coluna) {


if (coluna < 1 || coluna > M) {


return 0;


}


if (tab[0][coluna - 1] != '.') {


return 0;


}


return 1;


}


/* ---------------------------------------------------------


1. Nome : Executa Jogada


2. Função : Preenche tabuleiro com 'O' ou 'X'


3. Argumentos : Tabuleiro, Jogador e Coluna escolhida


4. Retorno : -- NADA --


--------------------------------------------------------- */


void executaJogada(int tab[N][M], int jogador, int coluna) {


int i;


char pecas[2] = {'O','X'};


coluna--;


for (i = N; i >= 0; i--) {


if (tab[coluna] == '.') {


tab[coluna] = pecas[jogador - 1];


break;


}


}


}


/* ---------------------------------------------------------


1. Nome : Direção (AUXILIAR da função: Ganhou)


2. Função : Contagem de caracteres semelhantes em linha


3. Argumentos : Tabuleiro, Caracter, PosX, PosY e Direção


4. Retorno : Quantidade de semelhantes "nesta direção"


--------------------------------------------------------- */


int direcao(int tab[][M], char c, int x, int y, char * dir) {


int i, p = 0;


for (i = 1; i <= 3; i++) {


int x_ = x;


if (strcmp(dir,"NO") == 0 || strcmp(dir,"SO") == 0 || strcmp(dir,"O") == 0) {


x_ = x - i;


} else if (strcmp(dir,"NE") == 0 || strcmp(dir,"SE") == 0 || strcmp(dir,"L") == 0) {


x_ = x + i;


}


int y_ = y;


if (strcmp(dir,"NO") == 0 || strcmp(dir,"NE") == 0) {


y_ = y - i;


} else if (strcmp(dir,"SO") == 0 || strcmp(dir,"SE") == 0 || strcmp(dir,"S") == 0) {


y_ = y + i;


}


if ((x_ >= 0) && (x_ < M) && (y_ >= 0) && (y_ < N)) {


if (tab[y_][x_] == c) {


p++;


}


} else {


return p;


}


}


return p;


}


/* ---------------------------------------------------------


1. Nome : Ganhou


2. Função : Verifica se houve vencedor na jogada atual


3. Argumentos : Tabuleiro e Coluna Escolhida


4. Retorno : 0 = continuar jogo / 1 = FIM DE JOGO


--------------------------------------------------------- */


int ganhou(int tab[][M], int coluna) {


int i;


char c = 0;


coluna--;


for (i = 0; i < N; i++) {


if (tab[coluna] != 46) {


c = tab[coluna];


break;


}


}


if (c == 0) {


return 0;


}


int verificacao = direcao(tab, c, coluna, i, "NO") + direcao(tab, c, coluna, i, "SE");


if (verificacao < 3) {


verificacao = direcao(tab, c, coluna, i, "NE") + direcao(tab, c, coluna, i, "SO");


if (verificacao < 3) {


verificacao = direcao(tab, c, coluna, i, "O") + direcao(tab, c, coluna, i, "L");


if (verificacao < 3) {


verificacao = direcao(tab, c, coluna, i, "S");


if (verificacao < 3) {


return 0;


}


}


}


}


return 1;


}


/* ---------------------------------------------------------


1. Nome : Principal (main)


2. Função : Gerenciamento das outras funções


3. Argumentos : Numero e Valores de argumentos do PROMPT


4. Retorno : 0 = OK


--------------------------------------------------------- */


int main(void) {


int tab[N][M];


int i, j;


for (i = 0; i < N; i++) {


for (j = 0; j < M; j++) {


tab[j] = '.';


}


}


int jogada = 0, jogador, coluna, fim = 0;


char tmp, * final = (char *) malloc(50);


do {


jogador = (jogada % 2) + 1;


if (estaCheio(tab)) {


final = "EMPATE!";


fim = 1;


break;


}


system("pause");


escreveTabuleiro(tab);


coluna = leJogada(jogador);


if (jogadaValida(tab, coluna)) {


executaJogada(tab, jogador, coluna);


fim = ganhou(tab, coluna);


if (fim) {


sprintf(final," Vencedor: \n [Jogador %c]",jogador + 48);


}


jogada++;


continue;


}


printf("Jogada inválida!\n");


printf("Tente novamente!\n");


scanf("\n%c",&tmp);


} while (!fim);


system("pause");


escreveTabuleiro(tab);


printf(" (FIM)\n");


printf("%s\n",final);


printf("-------------\n");


return 0;


}

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.