Ir ao conteúdo
  • Cadastre-se

C Batalha Naval Matriz 10x10


KC1

Posts recomendados

Preciso de ajudar com o seguinte:

 

Crie um jogo de batalha naval, onde haverá as seguintes opções:

Criar campo de batalha

Jogar

Resultado

Sair

O campo de batalha sera composto por uma matriz 10×10

Ao criar o campo de batalha o primeiro jogador, terá 10 jogadas para definir as posições(linha e coluna) onde:(1-Para fragata 2- para destróier e 3 – para submarino)

Ao escolher Jogar, o segundo jogador terá 10 jogadas, para dar o palpite das posições(linha e coluna) onde a cada posições que não for ZERO sera informado que este acertou e será sumarizado os pontos.

Ao escolher a opção 3 será exibido o total de pontos.

 

Criei isso aqui:

<

#include <stdio.h>
#include <stdlib.h>

int main() {
    int op, barco, ponto = 0;
    int campo[3][3];
    int i, j, l, c;

    //zera as entradas da matriz campo.
    for (i = 0; i < 3; i++) {
        for (j = 0; j < 3; j++) {
            campo[j] = 0;
        }
    }

    do {
        printf("\n\n\tBATALHA NAVAL\n\nMenu Principal:\n\t1 - Criar campo de batalha\n\t2 - Jogar\n\t3 - Resultado\n\t4 - Sair.\nOpcao Escolhida: ");
        scanf("%d", &op);
        system("cls");
        switch (op)//opcaoes do menu criado acima
        {
        case 1: {//Define o campo de batalha
            j = 3;
            printf("\n\n1 - CRIAR CAMPO DE BATALHA\n");
            for (i = 0; i < 3; i++) {

                printf("Escolha o tipo de embarcacao:\n\t1 - Fragata\n\t2 - Destroier\n\t3 - Submarino\n Digite a opcao:");
                scanf("%d", &barco);
                
                if (barco == 1) {
                    printf("\n\nDefina posicao da Fragata");
                }
                else {
                    if (barco == 2) {
                        printf("\n\nDefina posicao do Destroier");
                    }
                    else {
                        printf("\n\nDefina posicao do Submarino");
                    }
                }

                printf("\nLinha: ", i + 1);
                scanf("%d", &l);

                printf("Coluna: ");
                scanf("%d", &c);

                campo[l - 1][c - 1] = barco;

                if (j > 1) {
                    printf("Restam definir %d jogadas\n", j - 1);
                    j = j - 1;
                }
                else {
                    system("cls");
                    printf("As 10 posições ja foram defindas.\n\tBORA JOGAR!!!\n\n\n");
                    system("PAUSE");
                }
            }
            break;
        }
        case 2: {
            
          
        {for (i = 0; i < 3; i++) {
                printf("\n\n2 - JOGAR\n");
                printf("\tAtaque %d", i + 1);
                printf("\nLinha: ", i + 1);
                scanf("%d", &l);

                printf("Coluna: ");
                scanf("%d", &c);

                if (campo[l - 1][c - 1] == 0) {
                    printf("\nSplash! :(\n\n");
                }
                else {
                    printf("\nBoom! :)\n\n");
                    ponto += campo[l - 1][c - 1];
            }    }
            }

            break;
        }
        case 3: {
            printf("\n\n1 - PONTUACAO\n");
            printf("Sua pontucao: %d", ponto);
            break;
        }
        case 4: {
            printf("\n\nTCHAU!\n");
            //Sair do programa
            break;
        }
        default: {
            printf("Ops! Essa opcao nao existe!");
        }
    }
    } while (op != 4);
    
    system("PAUSE");
} >

 

No entanto preciso exibir o tabuleiro em [10] [10] no ambiente jogar, de acordo com a posição dos barcos selecionadas anteriormente

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@guhbrj    seria uma matriz de 10 x 10 para cada jogador , assim 

campo[10][10]; 
campo2[10][10]; 

o jogador 1 vai informar as posições campo2 e vice versa , aí você verifica se acertou em alguma embarcação , mas essa de informar 10 jogada de uma vez me parece que não seria bom , melhor seria uma jogada de cada vez para cada jogador , assim um jogador faz uma jogada e verifica se acertou ou não e tal , em seguida o outro jogador faz também uma jogada e verifica , e segue assim até o final .

Link para o comentário
Compartilhar em outros sites

vê se isso ajuda ? o código está com alguns erros, principalmente na exibição dos campos, tem pouca coisa pra corrigir. Podemos continuar desenvolvendo em paralelo, se quiser.

#include<stdio.h>
#include<windows.h>
#define L 10
#define  C 10
//prototipo das funcoes

int criaCampo(int campoJ1[L][C], int campoJ2[L][C]);
int rodaJogo(int campoJ1[L][C], int campoJ2[L][C]);
void exibeCampo(int campoJ1[L][C], int campoJ2[L][C], int vez);


int main()
{
	
	int campoJ1[L][C], campoJ2[L][C], op, game=1, campo=0;

printf("\n\n\t\t\t\t\t\t   BATALHA NAVAL\n\n\n\n");
printf("\t                               o o                                      \n");
printf("\t                                 o ooo\n");
printf("\t                                  o oo\n");
printf("\t                                      o o      |   #)\n");
printf("\t                                       oo     _|_|_#_\n");
printf("\t                                         o   | U505  |\n");
printf("\t    __                    ___________________|       |____________________  \n");
printf("\t   |   -_______-----------                                                )\n");
printf("\t  >|    _____                                                   Brasil   )\n");
printf("\t   |__ -     ---------_________________________________________________ )\n");


Sleep(2000);
	
	do{
	
	
	do
	{
	
	system("CLS");
	
	if(campo==1)
	{
		printf("\n\n\t\t\t\t\t\tMenu principal\n\n\n\n\n\t1 - Criar campo de batalha\n\t2 - Jogar (o)\n\t3 - Resultado\n\t4 - Sair\n\n\tEntre com uma opcao: ");	
	}
	else
	{
		printf("\n\n\t\t\t\t\t\tMenu principal\n\n\n\n\n\t1 - Criar campo de batalha\n\t2 - Jogar (x)\n\t3 - Resultado\n\t4 - Sair\n\n\tEntre com uma opcao: ");	
	}

	scanf("%d", &op);
	fflush(stdin);
	
	if((op!=1)&&(op!=2)&&(op!=3)&&(op!=4))
	{
		printf("\n\tOpcao invalida!");
		Sleep(1000);
	}
	
	}while((op!=1)&&(op!=2)&&(op!=3)&&(op!=4));
	
	
	
	switch(op)
	{
		case 1:
		campo=criaCampo(campoJ1, campoJ2);
		campo =1 ;
		break;
		
		case 2:
		if(campo==1)
		{
			rodaJogo(campoJ1, campoJ2);
		}
		else
		{
			printf("\nVoce deve criar o campo antes de jogar !");
			Sleep(2000);
		}
		
			
	}
	
	}while(game==1);
	
	
	
}


int criaCampo(int campoJ1[L][C], int campoJ2[L][C])
{
	system("CLS");
	printf("\n\n\t\t\t\t\t\tCRIAR CAMPO DE BATALHA");
	printf("\n\n\n\n\n\n\n\n\n\n\t\t\t\t\t\tCriando campo de batalha ...\n");
	Sleep(1000);
	printf("\r\t\t\t\t\t\t~~~~");
	Sleep(100);
	printf("\r\t\t\t\t\t\t~~~~~~");
	Sleep(100);
	printf("\r\t\t\t\t\t\t~~~~~~~~");
	Sleep(100);
	printf("\r\t\t\t\t\t\t~~~~~~~~~~");
	Sleep(100);
	printf("\r\t\t\t\t\t\t~~~~~~~~~~~~");
	Sleep(100);
	printf("\r\t\t\t\t\t\t~~~~~~~~~~~~~~");
	Sleep(100);
	printf("\r\t\t\t\t\t\t~~~~~~~~~~~~~~~~");
	Sleep(100);
	printf("\r\t\t\t\t\t\t~~~~~~~~~~~~~~~~~~~");
	Sleep(100);
	printf("\r\t\t\t\t\t\t~~~~~~~~~~~~~~~~~~~~~~");
	Sleep(100);
	printf("\r\t\t\t\t\t\t~~~~~~~~~~~~~~~~~~~~~~~~~");
	Sleep(100);
	printf("\n\n\t\t\t\t\t\t\tConcluido!\n");
	Sleep(1000);
	
	int i, j;
	
	for(i=0;i<L;i++)
	{
		for(j=0; j<C; j++)
		{
			campoJ1[i][j]=0;
			campoJ2[i][j]=0;
		}
	}
	
		return 1;
}
void exibeCampo(int campoJ1[L][C], int campoJ2[L][C], int vez)
{
	int i, j, quebra=0, num=0;
	
	printf("\nentrei em exibir VALOR DE VEZ: %d\n", vez);
	system("PAUSE");
	
	printf("  0    1     2     3     4     5     6     7     8     9   \n\n");
	
	if(vez==1)
	{
		
	for(i=0;i<=L;i++)
	{
		for(j=0; j<C; j++)
		{
			if(quebra<L)
			{
				if(campoJ2[i][j]==0)
				{
					printf(" ~~~~ ");
					quebra++;
					
				}
				else
				{
					if(campoJ2[i][j]==4)
					{
						printf(" (X)  ");
						quebra++;
					}
						if(campoJ2[i][j]==5)
						{
							printf("\\_X_/ ");
						}
				}
				
			}
			else
			{
				printf("\n%d  ", num);
				quebra=0;
				num++;
			}
		}
	}
	}
	//-----------------------------------------------------------------------------jogador 2------------------------------------------------------
	
	if(vez==2)
	{
		
	for(i=0;i<=L;i++)
	{
		for(j=0; j<=C; j++)
		{
			if(quebra<L)
			{
				if(campoJ1[i][j]==0)
				{
					printf(" ~~~~ ");
					quebra++;
					
				}
				else
				{
					if(campoJ1[i][j]==4)
					{
						printf(" (X)  ");
						quebra++;
					}
						if(campoJ1[i][j]==5)
						{
							printf("\\_X_/ ");
						}
				}
				
			}
			else
			{
				printf("\n");
				quebra=0;
			}
		}
	}
	}
	

}

int rodaJogo(int campoJ1[L][C], int campoJ2[L][C])
{
	int inserir=0, emb, col, lin, vez=1, hitJ1=0, hitJ2=0, jogadasJ1=0, jogadasJ2=0, validaJogada=0;
	
	do
	{
		do
		{
			system("CLS");
			printf("Jogador # 1\nEmbarcacoes inseridas: %d\n\n\n\n", inserir);
			printf("1 - Fragata\n2 - Destroyer\n3 - Sumarino\n\nEntre com o tipo de embarcacao que deseja inserir: ");
			scanf("%d", &emb);
			fflush(stdin);
			
			if((emb!=1)&&(emb!=2)&&(emb!=3))
			{
				printf("Entrada invalida!");
				Sleep(1000);
			}
		
		}while((emb!=1)&&(emb!=2)&&(emb!=3));
		
		do
		{
		
			printf("Entre com as coordenadas\nColuna: ");
			scanf("%d", &col);
			fflush(stdin);
			
			if((col!=0)&&(col!=1)&&(col!=2)&&(col!=3)&&(col!=4)&&(col!=5)&&(col!=6)&&(col!=7)&&(col!=8)&&(col!=9))
			{
				printf("\nPosicao invalida! Tente novamente.");
				Sleep(3000);
				system("CLS");
			}
			
		}while((col!=0)&&(col!=1)&&(col!=2)&&(col!=3)&&(col!=4)&&(col!=5)&&(col!=6)&&(col!=7)&&(col!=8)&&(col!=9));
			
		do
		{
			printf("Linha: ");
			scanf("%d", &lin);
			fflush(stdin);
			
			if((lin!=0)&&(lin!=1)&&(lin!=2)&&(lin!=3)&&(lin!=4)&&(lin!=5)&&(lin!=6)&&(lin!=7)&&(lin!=8)&&(lin!=9))
			{
				printf("\nPosicao invalida! Tente novamente.");
				Sleep(3000);
				system("CLS");
			}
				
		}while((lin!=0)&&(lin!=1)&&(lin!=2)&&(lin!=3)&&(lin!=4)&&(lin!=5)&&(lin!=6)&&(lin!=7)&&(lin!=8)&&(lin!=9));	
		
		if(campoJ1[col][lin]==0)
		{
			campoJ1[col][lin]=emb;	
			printf("\nEmbarcacao inserida.");
			Sleep(1000);
			inserir++;
		}
		else
		{
			printf("\nPosicao invalida. Escolha outra coordenada. Nesta, ja ha uma embarcacao");	
			Sleep(3000);
		}
		
	}while(inserir<2); // mudar depois

	inserir = 0;
	//-------------------------------------------------------------JOGADOR2-------------------------------------------------------------------------------------
	do
	{
		do
		{
			system("CLS");
			printf("Jogador # 2\nEmbarcacoes inseridas: %d\n\n\n\n", inserir);
			printf("1 - Fragata\n2 - Destroyer\n3 - Sumarino\n\nEntre com o tipo de embarcacao que deseja inserir: ");
			scanf("%d", &emb);
			fflush(stdin);
			
			if((emb!=1)&&(emb!=2)&&(emb!=3))
			{
				printf("Entrada invalida!");
				Sleep(1000);
			}
		
		}while((emb!=1)&&(emb!=2)&&(emb!=3));
		
		do
		{
		
			printf("Entre com as coordenadas\nColuna: ");
			scanf("%d", &col);
			fflush(stdin);
			
			if((col!=0)&&(col!=1)&&(col!=2)&&(col!=3)&&(col!=4)&&(col!=5)&&(col!=6)&&(col!=7)&&(col!=8)&&(col!=9))
			{
				printf("\nPosicao invalida! Tente novamente.");
				Sleep(3000);
				system("CLS");
			}
			
		}while((col!=0)&&(col!=1)&&(col!=2)&&(col!=3)&&(col!=4)&&(col!=5)&&(col!=6)&&(col!=7)&&(col!=8)&&(col!=9));
			
		do
		{
			printf("Linha: ");
			scanf("%d", &lin);
			fflush(stdin);
			
			if((lin!=0)&&(lin!=1)&&(lin!=2)&&(lin!=3)&&(lin!=4)&&(lin!=5)&&(lin!=6)&&(lin!=7)&&(lin!=8)&&(lin!=9))
			{
				printf("\nPosicao invalida! Tente novamente.");
				Sleep(3000);
				system("CLS");
			}
				
		}while((lin!=0)&&(lin!=1)&&(lin!=2)&&(lin!=3)&&(lin!=4)&&(lin!=5)&&(lin!=6)&&(lin!=7)&&(lin!=8)&&(lin!=9));	
		
		if(campoJ2[col][lin]==0)
		{
			campoJ2[col][lin]=emb;	
			printf("\nEmbarcacao inserida.");
			Sleep(1000);
			inserir++;
		}
		else
		{
			printf("\nPosicao invalida. Escolha outra coordenada. Nesta, ja ha uma embarcacao");	
			Sleep(3000);
		}
		
	}while(inserir<2); // mudar depois
	
	
	system("CLS");
	printf("\n\n\t\t\t\t\t\tTUDO PRONTO ! QUE A BATALHA COMECE !\n\n");
	
				
printf("\n\n				                                        ");
printf("\n 			                           .                 |");
printf("\n 			                           +                 |");
printf("\n 			                  .        |                *+W+-*");
printf("\n 			     .           +y        +W+              . H                 .");
printf("\n 			  .  +y            |I.   y  |               ! H= .           .  ^");
printf("\n 			  !   \\     .     |H '. //   |  ___.        .! H  !   +--.--y !  V");
printf("\n 			  !    \\     \\  +=|H|=='.=+ | |====\\   _  '_H_H__H_. H_//=  J !  !");
printf("\n 			. !     \\'    VVV_HHH_\\/__'._H |  E  \\_|=|_|========|_|==|____H. ! _______.");
printf("\n 			I-H_I=I=HH_==_|I_IIIII_I_I_=HH|======.I-I-I-=======-I=I=I=I_=H|=H'===I=I//");
printf("\n 			\\                                                                      ,");
printf("\n 			 |                                                                    //");
printf("\n 			 .___________________________________________________________________'\n\n\n");
	
	
	system("PAUSE");
	Sleep(1000);
	
	
	
do{
	
	
	do{
	
	
		do
		{
			exibeCampo(campoJ1, campoJ2, vez);
			
			printf("\nJogador #%d\n Entre com as coordenadas\nColuna: ", vez);
			scanf("%d", &col);
			fflush(stdin);
			
			if((col!=0)&&(col!=1)&&(col!=2)&&(col!=3)&&(col!=4)&&(col!=5)&&(col!=6)&&(col!=7)&&(col!=8)&&(col!=9))
			{
				printf("\nPosicao invalida! Tente novamente.");
				Sleep(3000);
				system("CLS");
			}
			
		}while((col!=0)&&(col!=1)&&(col!=2)&&(col!=3)&&(col!=4)&&(col!=5)&&(col!=6)&&(col!=7)&&(col!=8)&&(col!=9));
		
	
	
		do
		{
			printf("Linha: ");
			scanf("%d", &lin);
			fflush(stdin);
			
			if((lin!=0)&&(lin!=1)&&(lin!=2)&&(lin!=3)&&(lin!=4)&&(lin!=5)&&(lin!=6)&&(lin!=7)&&(lin!=8)&&(lin!=9))
			{
				printf("\nPosicao invalida! Tente novamente.");
				Sleep(3000);
				system("CLS");
			}
				
		}while((lin!=0)&&(lin!=1)&&(lin!=2)&&(lin!=3)&&(lin!=4)&&(lin!=5)&&(lin!=6)&&(lin!=7)&&(lin!=8)&&(lin!=9));	
	
	if(vez==1)
	{
		switch(campoJ2[col][lin])
		{
			case 0:
			
			printf("\nChuaaa... Acertou a agua !");
			campoJ2[col][lin] = 4;
			
			validaJogada = 1;
						
			break;
			
			case 4:
			
			printf("\nErr... voce já jogou nesta coordenada. Tente outra !");
			Sleep(1500);
			break;
			
			case 1:
			
			printf("\nBooom ... voce destruiu uma Fragata inimiga !");
			campoJ2[col][lin]=5;
			hitJ2++;
			validaJogada = 1;
			
			break;
			
			case 2:
			
			printf("\nBooom ... voce destruiu um Destroyer inimigo !");
			campoJ2[col][lin]=5;
			hitJ2++;
			validaJogada = 1;
			break;
			
			case 3:
			printf("\nBooom ... voce destruiu um Submarino inimigo !");
			campoJ2[col][lin]=5;
			hitJ2++;
			validaJogada = 1;
			break;
			
			case 5:
			printf("\nVoce ja destruiu essa embarcacao. Tente outra coordenada!");
			Sleep(1500);
			break;	
		}
		} //--------------------------------------------------------------------------------------------------------------------------------------
		
	if(vez==2)
	{
		switch(campoJ1[col][lin])
		{
			case 0:
			
			printf("\nChuaaa... Acertou a agua !");
			Sleep(1500);
			campoJ1[col][lin] = 4;
			
			validaJogada = 1;
						
			break;
			
			case 4:
			
			printf("\nErr... voce ja jogou nesta coordenada. Tente outra !");
			Sleep(1500);
			break;
			
			case 1:
			
			printf("\nBooom ... voce destruiu uma Fragata inimiga !");
			Sleep(1500);
			campoJ1[col][lin] = 5;
			hitJ1++;
			validaJogada = 1;
			
			break;
			
			case 2:
			campoJ1[col][lin] = 5;
			printf("\nBooom ... voce destruiu um Destroyer inimigo !");
			Sleep(1500);
			hitJ1++;
			validaJogada = 1;
			break;
			
			case 3:
			printf("\nBooom ... voce destruiu um Submarino inimigo !");
			Sleep(1500);
			campoJ1[col][lin] = 5;
			hitJ1++;
			validaJogada = 1;
			break;
			
			case 5:
			printf("\nVoce ja destruiu essa embarcacao. Tente outra coordenada!");
			Sleep(1500);
			break;
			
			system("CLS");
			exibeCampo(campoJ1, campoJ2, vez);
		}	
		}
		
		
		}while(validaJogada==0);
	
		validaJogada=0;
		vez++;
	
		if(vez==3)
		{
			vez=1;
		}

	}while((hitJ1<10)||(hitJ2<10));	
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Galera, arrumei o código e está funcionando perfeitamente. Só tem que mexer em uma entrada de dado, se não me engano quantidade de embarcações que serão usadas. Só implementar verificação da entrada válida. Então, divirtam-se

//by Gustavo Mello
//10.12.2018
//ascii art font "http://www.asciiarte.com/"

#include<stdio.h>
#include<windows.h>
#define L 10
#define  C 10
//prototipo das funcoes

int criaCampo(int campoJ1[L][C], int campoJ2[L][C]);
int rodaJogo(int campoJ1[L][C], int campoJ2[L][C]);
void exibeCampo(int campoJ1[L][C], int campoJ2[L][C], int vez, int bat);


int main()
{
	
	int campoJ1[L][C], campoJ2[L][C], op, game=1, campo=0;

	//system("MODE con cols=105 lines=50"); //opcional

printf("\n\n\t\t\t\t\t\t   BATALHA NAVAL\n\n\n\n");
printf("\t                               o o                                      \n");
printf("\t                                 o ooo\n");
printf("\t                                  o oo         ___      \n");
printf("\t                                      o o      | | #)\n");
printf("\t                                       oo     _|_|_#_\n");
printf("\t                                         o   | U505  |\n");
printf("\t    __                    ___________________|       |____________________  \n");
printf("\t   |   -_______-----------                                                )\n");
printf("\t  >|    _____                                                   Brasil   )\n");
printf("\t   |__ -     ---------_________________________________________________ )\n");


Sleep(2000);
	
	do{
	
	
	do
	{
	
	system("CLS");
	
	if(campo==1)
	{
		printf("\n\n\t\t\t\t\t\tMenu principal\n\n\n\n\n\t1 - Criar campo de batalha\n\t2 - Jogar (o)\n\t3 - Resultado\n\t4 - Sair\n\n\tEntre com uma opcao: ");	
	}
	else
	{
		printf("\n\n\t\t\t\t\t\tMenu principal\n\n\n\n\n\t1 - Criar campo de batalha\n\t2 - Jogar (x)\n\t3 - Resultado\n\t4 - Sair\n\n\tEntre com uma opcao: ");	
	}

	scanf("%d", &op);
	fflush(stdin);
	
	if((op!=1)&&(op!=2)&&(op!=3)&&(op!=4))
	{
		printf("\n\tOpcao invalida!");
		Sleep(1000);
	}
	
	}while((op!=1)&&(op!=2)&&(op!=3)&&(op!=4));
	
	
	
	switch(op)
	{
		case 1:
		campo=criaCampo(campoJ1, campoJ2);
		campo =1 ;
		break;
		
		case 2:
		if(campo==1)
		{
			rodaJogo(campoJ1, campoJ2);
		}
		else
		{
			printf("\nVoce deve criar o campo antes de jogar !");
			Sleep(2000);
		}
		
			
	}
	
	}while(game==1);
	
	
	
}


int criaCampo(int campoJ1[L][C], int campoJ2[L][C])
{
	system("CLS");
	printf("\n\n\t\t\t\t\t\tCRIAR CAMPO DE BATALHA");
	printf("\n\n\n\n\n\n\n\n\n\n\t\t\t\t\t\tCriando campo de batalha ...\n");
	Sleep(1000);
	printf("\r\t\t\t\t\t\t~~~~");
	Sleep(100);
	printf("\r\t\t\t\t\t\t~~~~~~");
	Sleep(100);
	printf("\r\t\t\t\t\t\t~~~~~~~~");
	Sleep(100);
	printf("\r\t\t\t\t\t\t~~~~~~~~~~");
	Sleep(100);
	printf("\r\t\t\t\t\t\t~~~~~~~~~~~~");
	Sleep(100);
	printf("\r\t\t\t\t\t\t~~~~~~~~~~~~~~");
	Sleep(100);
	printf("\r\t\t\t\t\t\t~~~~~~~~~~~~~~~~");
	Sleep(100);
	printf("\r\t\t\t\t\t\t~~~~~~~~~~~~~~~~~~~");
	Sleep(100);
	printf("\r\t\t\t\t\t\t~~~~~~~~~~~~~~~~~~~~~~");
	Sleep(100);
	printf("\r\t\t\t\t\t\t~~~~~~~~~~~~~~~~~~~~~~~~~");
	Sleep(100);
	printf("\n\n\t\t\t\t\t\t\tConcluido!\n");
	Sleep(1000);
	
	int i, j;
	
	for(i=0;i<L;i++)
	{
		for(j=0; j<C; j++)
		{
			campoJ1[i][j]=0;
			campoJ2[i][j]=0;
		}
	}
		return 1;
}

void exibeCampo(int campoJ1[L][C], int campoJ2[L][C], int vez, int bat)
{
	int i, j, num=0;
	
	if(bat==1)
	{

	printf("\n");
	printf("       0     1     2     3     4     5     6     7     8     9   \n\n");
	
	if(vez==1)
	{
		
		for(i=0;i<C;i++)
		{
			printf("%d    ",num);
			
			for(j=0; j<L; j++)
			{
				if((campoJ2[j][i]==0)||(campoJ2[j][i]==1)||(campoJ2[j][i]==2)||(campoJ2[j][i]==3))			
				{
					printf(" ~~~~ ");
				}
					
					if(campoJ2[j][i]==4)
					{
						printf("\\_X_/ ");
					}	
					
						if(campoJ2[j][i]==5)
						{			
							printf(" (X)  ");
						}
			}
			printf("\n\n");
			num++;			
		}
	}


	//-----------------------------------------------------------------------------jogador 2------------------------------------------------------
	
if(vez==2)
{
		
		for(i=0;i<C;i++)
		{
			printf("%d    ",num);
			
			for(j=0; j<L; j++)
			{
				if((campoJ1[j][i]==0)||(campoJ1[j][i]==1)||(campoJ1[j][i]==2)||(campoJ1[j][i]==3))
				{
					printf(" ~~~~ ");
				}
					
					if(campoJ1[j][i]==4)
					{
						printf(" (X)  ");
					}
						if(campoJ1[j][i]==5)
						{
							printf("\\_X_/ ");
						}				
			}
			
			printf("\n\n");
			num++;			
		}
}
}	
	else
	{
			
	if(vez==1)
	{
		printf("       0     1     2     3     4     5     6     7     8     9   \n\n");
		for(i=0;i<C;i++)
		{
			printf("%d    ",num);
			
			for(j=0; j<L; j++)
			{
				if((campoJ1[j][i]==1)||(campoJ1[j][i]==2)||(campoJ1[j][i]==3))
				{
					printf("\\___/ ");
				}
				else
				{
					printf(" ~~~~ ");
				}				
					
			}
			
			printf("\n\n");
			num++;			
		}
	}
	
	if(vez==2)
	{
{
		printf("       0     1     2     3     4     5     6     7     8     9   \n\n");
		for(i=0;i<C;i++)
		{
			printf("%d    ",num);
			
			for(j=0; j<L; j++)
			{
				if((campoJ2[j][i]==1)||(campoJ2[j][i]==2)||(campoJ2[j][i]==3))
				{
					printf("\\___/ ");
				}
				else
				{
					printf(" ~~~~ ");
				}				
					
			}
			
			printf("\n\n");
			num++;			
		}			
		}
	
	}	
}
}

int rodaJogo(int campoJ1[L][C], int campoJ2[L][C])
{	
	int inserir=0, emb, col, lin, vez=1, hitJ1=0, hitJ2=0, jogadasJ1=0, jogadasJ2=0, validaJogada=0, quant, bat=0;
	
	system("CLS");
	printf("\t\t\t\tJOGAR\n\n\n\nQuantas embarcacoes serao inseridas por jogador?\nEntre com o numero: ");
	scanf("%d", &quant);
	fflush(stdin);
	
	do
	{
		do
		{
			vez=1;
			system("CLS");
			printf("\t\t\tJogador # 1 e sua vez de inserir suas embarcacoes\n\n\n\tTipos de embarcacao\n\n");
			printf("\t1 - Fragata\n\t2 - Destroyer\n\t3 - Sumarino\n\n");
			exibeCampo(campoJ1, campoJ2, vez, bat);
			printf("Entre com o numero da embarcacao e tecle enter: ");
			scanf("%d", &emb);
			fflush(stdin);
			
			if((emb!=1)&&(emb!=2)&&(emb!=3))
			{
				printf("Entrada invalida!");
				Sleep(1000);
			}
		
		}while((emb!=1)&&(emb!=2)&&(emb!=3));
		
		do
		{
		
			printf("Entre com as coordenadas\nColuna: ");
			scanf("%d", &col);
			fflush(stdin);
			
			if((col!=0)&&(col!=1)&&(col!=2)&&(col!=3)&&(col!=4)&&(col!=5)&&(col!=6)&&(col!=7)&&(col!=8)&&(col!=9))
			{
				printf("\nPosicao invalida! Tente novamente.");
				Sleep(3000);
				system("CLS");
			}
			
		}while((col!=0)&&(col!=1)&&(col!=2)&&(col!=3)&&(col!=4)&&(col!=5)&&(col!=6)&&(col!=7)&&(col!=8)&&(col!=9));
			
		do
		{
			printf("Linha: ");
			scanf("%d", &lin);
			fflush(stdin);
			
			if((lin!=0)&&(lin!=1)&&(lin!=2)&&(lin!=3)&&(lin!=4)&&(lin!=5)&&(lin!=6)&&(lin!=7)&&(lin!=8)&&(lin!=9))
			{
				printf("\nPosicao invalida! Tente novamente.");
				Sleep(3000);
				system("CLS");
			}
				
		}while((lin!=0)&&(lin!=1)&&(lin!=2)&&(lin!=3)&&(lin!=4)&&(lin!=5)&&(lin!=6)&&(lin!=7)&&(lin!=8)&&(lin!=9));	
		
		if(campoJ1[col][lin]==0)
		{
			campoJ1[col][lin]=emb;	
			printf("\nEmbarcacao inserida.");
			Sleep(1000);
			inserir++;
		}
		else
		{
			printf("\nPosicao invalida. Escolha outra coordenada. Nesta, ja ha uma embarcacao");	
			Sleep(3000);
		}
		
		
	}while(inserir<quant);

	inserir = 0;
	//-------------------------------------------------------------JOGADOR2-------------------------------------------------------------------------------------
	do
	{
		do
		{
			vez=2;
			system("CLS");
			printf("\t\t\tJogador # 2 e sua vez de inserir suas embarcacoes\n\n\n\tTipos de embarcacao\n\n");
			printf("\t1 - Fragata\n\t2 - Destroyer\n\t3 - Sumarino\n\n");
			exibeCampo(campoJ1, campoJ2, vez, bat);
			printf("Entre com o numero da embarcacao e tecle enter: ");
			scanf("%d", &emb);
			fflush(stdin);
						
			if((emb!=1)&&(emb!=2)&&(emb!=3))
			{
				printf("Entrada invalida!");
				Sleep(1000);
			}
		
		}while((emb!=1)&&(emb!=2)&&(emb!=3));
		
		do
		{
		
			printf("Entre com as coordenadas\nColuna: ");
			scanf("%d", &col);
			fflush(stdin);
			
			if((col!=0)&&(col!=1)&&(col!=2)&&(col!=3)&&(col!=4)&&(col!=5)&&(col!=6)&&(col!=7)&&(col!=8)&&(col!=9))
			{
				printf("\nPosicao invalida! Tente novamente.");
				Sleep(3000);
				system("CLS");
			}
			
		}while((col!=0)&&(col!=1)&&(col!=2)&&(col!=3)&&(col!=4)&&(col!=5)&&(col!=6)&&(col!=7)&&(col!=8)&&(col!=9));
			
		do
		{
			printf("Linha: ");
			scanf("%d", &lin);
			fflush(stdin);
			
			if((lin!=0)&&(lin!=1)&&(lin!=2)&&(lin!=3)&&(lin!=4)&&(lin!=5)&&(lin!=6)&&(lin!=7)&&(lin!=8)&&(lin!=9))
			{
				printf("\nPosicao invalida! Tente novamente.");
				Sleep(3000);
				system("CLS");
			}
				
		}while((lin!=0)&&(lin!=1)&&(lin!=2)&&(lin!=3)&&(lin!=4)&&(lin!=5)&&(lin!=6)&&(lin!=7)&&(lin!=8)&&(lin!=9));	
		
		if(campoJ2[col][lin]==0)
		{
			campoJ2[col][lin]=emb;	
			printf("\nEmbarcacao inserida.");
			Sleep(1000);
			inserir++;
		}
		else
		{
			printf("\nPosicao invalida. Escolha outra coordenada. Nesta, ja ha uma embarcacao");	
			Sleep(3000);
		}
		
	}while(inserir<quant);
	bat = 1 ;
	vez=1;
	system("CLS");
	printf("\n\n\t\t\t\t\t\tTUDO PRONTO ! QUE A BATALHA COMECE !\n\n");
	
				
printf("\n\n			                                        ");
printf("\n 		                           .                 |");
printf("\n 		                           +                 |");
printf("\n 		                  .        |                *+W+-*");
printf("\n 		     .           +y        +W+              . H                 .");
printf("\n 		  .  +y            |I.   y  |               ! H= .           .  ^");
printf("\n 		  !   \\     .     |H '. //   |  ___.        .! H  !   +--.--y !  V");
printf("\n 		  !    \\     \\  +=|H|=='.=+ | |====\\   _  '_H_H__H_. H_//=  J !  !");
printf("\n 		. !     \\'    VVV_HHH_\\/__'._H |  E  \\_|=|_|========|_|==|____H. ! _______.");
printf("\n 		I-H_I=I=HH_==_|I_IIIII_I_I_=HH|======.I-I-I-=======-I=I=I=I_=H|=H'===I=I//");
printf("\n 		\\                                                                      ,");
printf("\n 		 |                                                                    //");
printf("\n 		 .___________________________________________________________________'\n\n\n");
	
	
	system("PAUSE");
	Sleep(1000);
	
	//-----------------------------------------------------------batalha ---------------------------------------------
	
do{
	
	
	do{
	
	
		do
		{
			system("CLS");
			
			
			printf("\t\t    JOGADOR #%d E SUA VEZ DE JOGAR\n\n\n\n", vez);
			exibeCampo(campoJ1, campoJ2, vez, bat);
			
			printf("\n\nEntre com as coordenadas\nColuna: ", vez);
			scanf("%d", &col);
			fflush(stdin);
			
			if((col!=0)&&(col!=1)&&(col!=2)&&(col!=3)&&(col!=4)&&(col!=5)&&(col!=6)&&(col!=7)&&(col!=8)&&(col!=9))
			{
				printf("\nPosicao invalida! Tente novamente.");
				Sleep(3000);
				system("CLS");
			}
			
		}while((col!=0)&&(col!=1)&&(col!=2)&&(col!=3)&&(col!=4)&&(col!=5)&&(col!=6)&&(col!=7)&&(col!=8)&&(col!=9));
		
	
	
		do
		{
			printf("Linha: ");
			scanf("%d", &lin);
			fflush(stdin);
			
			if((lin!=0)&&(lin!=1)&&(lin!=2)&&(lin!=3)&&(lin!=4)&&(lin!=5)&&(lin!=6)&&(lin!=7)&&(lin!=8)&&(lin!=9))
			{
				printf("\nPosicao invalida! Tente novamente.");
				Sleep(3000);
				system("CLS");
			}
				
		}while((lin!=0)&&(lin!=1)&&(lin!=2)&&(lin!=3)&&(lin!=4)&&(lin!=5)&&(lin!=6)&&(lin!=7)&&(lin!=8)&&(lin!=9));	
	
	if(vez==1)
	{
		switch(campoJ2[col][lin])
		{
			case 0:
			
			printf("\nChuaaa... Acertou a agua !");
			campoJ2[col][lin] = 4;
			
			validaJogada = 1;
						
			break;
			
			case 4:
			
			printf("\nErr... voce ja jogou nesta coordenada. Tente outra !");
			break;
			
			case 1:
			
			printf("\nBooom ... voce destruiu uma Fragata inimiga !");
			campoJ2[col][lin]=5;
			hitJ2++;
			validaJogada = 1;
			
			break;
			
			case 2:
			
			printf("\nBooom ... voce destruiu um Destroyer inimigo !");
			campoJ2[col][lin]=5;
			hitJ2++;
			validaJogada = 1;
			break;
			
			case 3:
			printf("\nBooom ... voce destruiu um Submarino inimigo !");
			campoJ2[col][lin]=5;
			hitJ2++;
			validaJogada = 1;
			break;
			
			case 5:
			printf("\nVoce ja destruiu essa embarcacao. Tente outra coordenada!");
			break;	
			
			
		}
			Sleep(1500);
			system("CLS");
		} //--------------------------------------------------------------------------------------------------------------------------------------
		
	if(vez==2)
	{
		switch(campoJ1[col][lin])
		{
			case 0:
			
			printf("\nChuaaa... Acertou a agua !");
			Sleep(1500);
			campoJ1[col][lin] = 4;
			
			validaJogada = 1;
						
			break;
			
			case 4:
			
			printf("\nErr... voce ja jogou nesta coordenada. Tente outra !");
			break;
			
			case 1:
			
			printf("\nBooom ... voce destruiu uma Fragata inimiga !");
			Sleep(1500);
			campoJ1[col][lin] = 5;
			hitJ1++;
			validaJogada = 1;
			
			break;
			
			case 2:
			campoJ1[col][lin] = 5;
			printf("\nBooom ... voce destruiu um Destroyer inimigo !");
			Sleep(1500);
			hitJ1++;
			validaJogada = 1;
			break;
			
			case 3:
			printf("\nBooom ... voce destruiu um Submarino inimigo !");
			Sleep(1500);
			campoJ1[col][lin] = 5;
			hitJ1++;
			validaJogada = 1;
			break;
			
			case 5:
			printf("\nVoce ja destruiu essa embarcacao. Tente outra coordenada!");
			
			break;
		}	
			Sleep(1500);
			system("CLS");
		}
		
		
		}while(validaJogada==0);
	
		validaJogada=0;
		vez++;
	
		if(vez==3)
		{
			vez=1;
		}

	}while((hitJ1<quant)&&(hitJ2<quant));
	printf("\n\nJOGO ACABOU");	
	
	if(hitJ1>hitJ2)
	{
		printf("\n\nJogador #2 e o vencedor !");
	}
	else
	{
		printf("\n\nJogador #1 e o vencedor !\n\n");
	}
	system("PAUSE");
}


	
	
	
	
	
	
	

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!