Untitled

 avatar
unknown
plain_text
2 years ago
7.3 kB
3
Indexable
#include<stdio.h>
#include<ctype.h>
#include<stdlib.h>
#include<conio.h>
#include<time.h>

//FUNCIONES

//Funcion ubicacion de los barcos en la matriz de manera aleatoria
void barcos(char mbarcos[10][10]){
	int sx,sy,i,j,cont;
	srand (time(NULL));
	for(i=0;i<10;i++){
		for(j=0;j<10;j++){
			mbarcos[j][i]='0';
		}
	}
	//primer barco
	//se inicializo con %8 para que no repitiera la posicion o chocara con otros barcos
	sx=rand()%8+1; 
	sy=rand()%8+1;
	
	for(cont=0;cont<3;cont++){
		mbarcos[sx][sy]='1';
		sx++;
	}
	//segundo barco
	//se inicializo con %9 para que no repitiera la posicion o chocara con otros barcos
	a:sx=rand()%9+2;
	sy=rand()%9+2;
	if(mbarcos[sx][sy]=='0'&&mbarcos[sx][sy+1]=='0'){
		mbarcos[sx][sy]='1';
		mbarcos[sx][sy+1]='1';
	}
	else{
		goto a;
	}
	//tercer barco
	//se inicializo con %10 para que no repitiera la posicion o chocara con otros barcos
	b:sx=rand()%10+2;
	sy=rand()%10+2;
	if(mbarcos[sx][sy]=='0'){
		mbarcos[sx][sy]='1';
	}
	else{
		goto b;
	}
}
//funcion para las columnas de la matriz
int col(char l){
	switch(toupper(l)){
		case 'A': return 0;
		case 'B': return 1;
		case 'C': return 2;
		case 'D': return 3;
		case 'E': return 4;
		case 'F': return 5;
		case 'G': return 6;
		case 'H': return 7;
		case 'I': return 8;
		case 'J': return 9;
		default: return 10;
    	}
	}

//funcion para las filas de la matriz
int fil(char l){
	switch(l){
		case '0': return 0;
		case '1': return 1;
		case '2': return 2;
		case '3': return 3;
		case '4': return 4;
		case '5': return 5;
		case '6': return 6;
		case '7': return 7;
		case '8': return 8;
		case '9': return 9;
		default: return 10;
	}
}
//funcion que crea la matriz
void imp(char mapa[10][10]){
	int i,j;
	printf("\tA\tB\tC\tD\tE\tF\tG\tH\tI\tJ\n");
		for(i=0;i<10;i++){
			printf("%d\t",i);
		
			for(j=0;j<10;j++){
				printf("%c",mapa[j][i]);
					printf(":\t");
			}
			printf("\n");
		}
}
//FUNCION PRINCIPAL
int main(){
	char mar[10][10],l,tab[10][10],cx,cy,var;
	int i,j,turn,sx,sy,gan=0;
	
	do{
		for(i=0;i<10;i++){
			for(j=0;j<10;j++){
				mar[j][i]=0;
			}
		}
		barcos(tab);
		system("cls");
		printf("BIENVENIDO A:");
		printf("=====================================BATALLA NAVAL==========================================\n");
		printf("\n");
		printf(".....................................INSTRUCCIONES...........................................\n");
		printf("El juego de Batalla Naval consiste en la distribucion de un tablero de 10x10 que representa \n");
		printf("el mar abierto, en el se ubican tres barcos de manera aleatoria.\n");
		printf("\n");
		printf("El jugador debe derribar los barcos por medio de disaros aleatorios segun su eleccion \n");
		printf("en un numero de 10 intentos, cada disparo los realizara indicando las\n");
		printf("coordenadas (x,y)) o posicion a la que desee disparar, cabe destacar que los barcos no se muestran \n");
		printf("en pantalla por lo tanto el jugador deberá adivinar la posición a medida que dispara, la letra X en pantalla \n");
		printf("indicara los tiros fallidos y los asteriscos * indicaran los tiros acertados o barcos derribados. \n");
		printf("\n");
		printf("Si derriba la flota enemiga por completo o almenos en su mayoria, ganara el juego.\n");
		printf("\n");
		printf("\t//Presione una tecla observar el tablero// \n");
		getch();
		printf("Tablero de Juego");
		printf("-Las letras en mayuscula corresponden a las columnas\n");
		printf("-Los numeros corresponden a las filas de la matriz\n");
		printf("-para disparar debe indicar las coordenadas, colocando primero las columna y luego la fila\n");
		printf("\n");
		printf("\t         A    B    C    D    E    F    G    H    I    J\n");
	    printf("\t       ___________________________________________________\n");
	    printf("\t   0   |    |    |    |    |    |    |    |    |    |    |\n");
	    printf("\t       ___________________________________________________\n");
	    printf("\t   1   |    |    |    |    |    |    |    |    |    |    |\n");
	    printf("\t       ___________________________________________________\n");
	    printf("\t   2   |    |    |    |    |    |    |    |    |    |    |\n");
	    printf("\t       ___________________________________________________\n");
	    printf("\t   3   |    |    |    |    |    |    |    |    |    |    |\n");
	    printf("\t       ___________________________________________________\n");
	    printf("\t   4   |    |    |    |    |    |    |    |    |    |    |\n");
	    printf("\t       ___________________________________________________\n");
	    printf("\t   5   |    |    |    |    |    |    |    |    |    |    |\n");
	    printf("\t       ___________________________________________________\n");
	    printf("\t   6   |    |    |    |    |    |    |    |    |    |    |\n");
	    printf("\t       ___________________________________________________\n");
	    printf("\t   7   |    |    |    |    |    |    |    |    |    |    |\n");
	    printf("\t       ___________________________________________________\n");
	    printf("\t   8   |    |    |    |    |    |    |    |    |    |    |\n");
	    printf("\t       ___________________________________________________\n");
	    printf("\t   9   |    |    |    |    |    |    |    |    |    |    |\n");
	    printf("\t       ___________________________________________________\n");
	    printf("\n");
	    printf("\t\t\t\t PRESIONE CUALQUIER TECLA PARA JUGAR :)\n");
		getch();
		printf("\n");
		
		system("cls");
		for(turn=0;turn<10;turn++){
			t1:printf("Turnos restantes: %d\n",10-turn);
			//si desea ver la matriz de los barcos se tiene 
			//imp(tab);
			system("cls");
			printf("El mapa actual es: \n");
			imp(mar);
			printf("\n");
			printf("Marinero! Ingrese las coordenadas del disparo, primero la columna (de A-J) y luego la fila (de 0-9)\n");
			scanf("%c%c",&cx,&cy);
			scanf("%*c");
			sx=col(cx);
			sy=fil(cy);
			
			if(sx==10||sy==10){
				printf("\n");
				printf("error de cordenada :( ingrese las columnas y filas como se indico, presione tecla para continuar");
				getch();
				system("cls");
				goto t1;
			}
			if(tab[sx][sy]=='1'){
				mar[sx][sy]='*';
				printf("\n");
				printf("Felicidades! el misil le dio a un barco, presione tecla para continuar\n");
				
				gan++; //acumulador
			}else{
				mar[sx][sy]='X';
				printf("\n");
				printf("Ups! parece que el misil no dio a un barco, sigue intentando!\n");
				
			}
			system("cls");
			printf("\n");
			printf("El mapa actual es: \nLas X marcan misiles fallidos, los * marcan misiles que dieron al blanco\n");
			imp(mar);
			getch();
			if(gan==6){
				turn=10;
			}
			system("cls");
		}
		if(gan==6){
			printf("\n");
			printf("FELICIDADES MARINERO DERROTASTE TODOS LOS BARCOS!!! GANASTE!!\n");
		}else{
			printf("La suerte no estuvo de tu lado :( PERDISTE\n");
		}
		printf("Resultado del mapa de la partida\nLas X marcan misiles fallidos, los * marcan misiles que dieron al blanco\n");
		printf("\n");
		imp(mar);
		printf("Si desea jugar otra partida presione 1, si desea salir del juego presione cualquier tecla :)\n");
		scanf("%c",&var);
	}while(var=='1');
}
Editor is loading...