Como llevo poco tiempo con C#, cosa de 1 mes y pico, pues que mejor para aprender que ponerte hacer una aplicación, ¿aplicación? prefiero los videojuegos, pues venga, hago un juego ¿sobre que? pues ya que estoy con los arrays me pongo a hacer algo que tenga que ver, venga va, el juego de hundir los barquitos. Así es como ha surgido la cosa.
Notas:- Muestra en el mapa del J1 los 0 con agua, 1 con barcos y 2 con barcos hundidos
- 1 jugador contra la máquina
- Sólo permite colocar 6 barcos de una única casilla
Update v0.1 - 2/12/12 -------------------------------
- Añadidas estadísticas de juego
- Validación de la colocación y del ataque (mejorado)
- Cuando destruyes un barco, puedes volver a atacar (como en el parchís)
- Alternación de rondas entre J1 y J2 cada vez que das en agua...hasta destruir los 6 barcos
- Evitada la colocación de más de un barco en la misma casilla (se eliminaba el barco anterior)
- Ahora puedes elegir entre colocar los barcos automáticamente o manualmente.
Update v0.2 - 12/12/12----------------------------------
- Mejorado el diseño de los mapas
- Asignación de identidades con carácteres. B = Barco. A = Agua. X = Hundido.- = Desconocido
- Marcado en el mapa donde se haya atacado en agua para no volver a dar en la misma posición
- Se ocultan los barcos del J2, sin embargo permanecen en la misma posición
- Optimizado el sistema de elección aleatoria
- Si atacas a una posición ya atacada anteriormente pierdes turno
- Creado un menú principal
- Se muestra el turno del usuario con su nombre introducido al iniciar
- Ahora puedes indicar en opciones con cuantos barcos quieres jugar en el mapa. Igual nº para J1 y J2.
Update v0.3 - 02/02/13----------------------------------- Ordenado todo el código por POO
- Arreglado problema al dar J1 a J2 en pos de barco hundido(X) deberia perder turno
- Solucionado problema al cargar los barcos de forma manual de J1
- Agregada notificacion de "cargando barcos..." para avisar del tiempo
- Pequeños cambios en el diseño
- Permite agregar nombre al jugador 2 (máquina)
- Al colocar los barcos manualmente, se muestran en el mapa los barcos que vayas introduciendo
- Solucionado lo de colocar barco en pos ya coloc antes (colocación manual)
- Agregada la opción de activar efectos de sonido
Descargar Proyecto Completo https://mega.co.nz/#!Z09x2ITI!KxleE3AQDo9O-NgI1JyL33mOKBRRwu3qUHcpCPiDH14http://www.mediafire.com/download.php?9onxw63bbklne5bDescargar sólo Ejecutable https://mega.co.nz/#!okNwnB5Z!PhOglj7hC3Oz-5R9_1S0p22JGfcMCd3k1JX__vrfR4Ahttp://www.mediafire.com/?cpocl71xwyb22ybPrincipal.csusing System;
using System.IO;
using System.Threading;
namespace Hundir_la_Flota{
public class Program{
public static void Main(string[] args){
ColocacionDeBarcos colocBarcos
= new ColocacionDeBarcos
(); Turnos turnos
= new Turnos
(); System.Media.SoundPlayer player
= new System.Media.SoundPlayer();
Console.Title = "Hundir la flota 0.3";
bool validar = false, volverAtras = true, sonido = false;
int opcion1 = 0, opcion2 = 0, opcion3 = 0, barcosIniciales = 6;
string nombreJ1 = null, nombreJ2 = null;
do{ // Validación del menu principal
if(sonido == true){
player.SoundLocation = ".\\sonido\\FondoDeUnaCueva.wav";
player.Play();
}
colocBarcos.menu();
Console.SetCursorPosition(24, 11);Console.Write("#############################");
Console.SetCursorPosition(24, 12);Console.Write("# #");
Console.SetCursorPosition(24, 13);Console.Write("# Selecciona una categoría: #");
Console.SetCursorPosition(24, 14);Console.Write("# #");
Console.SetCursorPosition(24, 15);Console.Write("# (1) Comenzar #");
Console.SetCursorPosition(24, 16);Console.Write("# (2) Opciones #");
Console.SetCursorPosition(24, 17);Console.Write("# (3) Salir #");
Console.SetCursorPosition(24, 18);Console.Write("# Versión 0.3 #");
Console.SetCursorPosition(24, 19);Console.Write("# #");
Console.SetCursorPosition(24, 20);Console.Write("#############################\n\n");
for(int i=0; i<=79; i++){
Console.Write("_");
}
for(int i=0; i<=79; i++){
Console.Write("=");
Thread.Sleep(8);
}
Console.Write(">>> ");
validar = int.TryParse(Console.ReadLine(), out opcion1);
switch(opcion1){
case 1:
do{ // Validación del menú secundario
if(sonido == true){
player.SoundLocation = ".\\sonido\\MenuOpciones.wav";
player.Play();
}
colocBarcos.menu();
Console.SetCursorPosition(24, 11);Console.Write("Introduce tu nombre: ");
nombreJ1 = Console.ReadLine();
while(nombreJ1.Length>7){ // Validación en el nombre de J1
colocBarcos.menu();
Console.SetCursorPosition(24, 11);Console.Write("Pon un nombre más corto: ");
nombreJ1 = Console.ReadLine();
}
turnos.setNombreJ1(nombreJ1);
colocBarcos.setNombreJ1(nombreJ1);
Console.SetCursorPosition(24, 13);Console.Write("Coloca tus embarcaciones\n");
Console.SetCursorPosition(24, 14);Console.Write("------------------------\n");
Console.SetCursorPosition(24, 15);Console.Write("(1) Automáticamente\n");
Console.SetCursorPosition(24, 16);Console.Write("(2) Manualmente\n");
Console.SetCursorPosition(24, 18);Console.Write(">>> ");
validar = int.TryParse(Console.ReadLine(), out opcion2);
}while(opcion2!=1 && opcion2!=2);
switch(opcion2){
case 1:
colocBarcos.colocacionBarcosAutomatJ1();
break;
case 2:
colocBarcos.colocacionBarcosManualJ1();
break;
}
colocBarcos.colocacionBarcosAutomatJ2();
turnos.setTablero1(colocBarcos.getTableroJ1());
turnos.setTablero2(colocBarcos.getTableroJ2());
turnos.setPosJ2(colocBarcos.getPosJ2());
turnos.setBarcosJ1(colocBarcos.getBarcosJ1());
turnos.setBarcosJ2(colocBarcos.getBarcosJ2());
do{ // Cambia el turno de J1 a J2 y viceversa
do{ // Vuelve a tirar J1 si hunde un barco
turnos.introducirFila();
turnos.introducirColumna();
turnos.realizarComprobacionesJ1();
}while(colocBarcos.getTableroJ2()[turnos.getFila()-1,turnos.getColumna()-1] == (char)'X' && turnos.getRepetirTirada() == true);
do{ // Vuelve a tirar J2 si hunde un barco
turnos.ataqueAlAzarDeJ2();
turnos.realizarComprobacionesJ2();
}while(colocBarcos.getTableroJ1()[turnos.getFila()-1,turnos.getColumna()-1] == (char)'X' && turnos.getRepetirTirada() == true);
if(turnos.getBarcosJ1() == 0){
Console.Write("Has perdido la partida. La próxima vez será.");
Console.ReadKey();
break;
}
}while(turnos.getBarcosJ2() != 0); // Si todos los barcos enemigos están hundidos, se acabó la partida
Console.Write("Has ganado la partida. Enhorabuena!!");
break;
case 2:
do{
if(sonido == true){
player.SoundLocation = ".\\sonido\\FondoDeUnaCueva.wav";
player.Play();
}
colocBarcos.menu();
Console.SetCursorPosition(24, 11);Console.Write("(1) Elegir cantidad de barcos\n");
Console.SetCursorPosition(24, 12);Console.Write("(2) Poner nombre al jugador 2\n");
Console.SetCursorPosition(24, 13);Console.Write("(3) Activar efectos de sonido\n");
Console.SetCursorPosition(24, 14);Console.Write("(4) Volver al menú\n");
Console.SetCursorPosition(24, 16);Console.Write(">>> ");
validar = int.TryParse(Console.ReadLine(), out opcion2);
switch(opcion2){
case 1:
do{
colocBarcos.menu();
Console.SetCursorPosition(24, 11);Console.Write("¿Con cuántos barcos quieres jugar? (Máx 30)");
Console.SetCursorPosition(24, 13);Console.Write(">>> ");
validar = int.TryParse(Console.ReadLine(), out barcosIniciales);
}while(barcosIniciales<1 || barcosIniciales>30);
colocBarcos.setBarcosIniciales(barcosIniciales);
Console.SetCursorPosition(24, 15);Console.Write("Cambios guardados correctamente!");
Thread.Sleep(1250);
break;
case 2:
colocBarcos.menu();
Console.SetCursorPosition(24, 11);Console.Write("Introduce el nombre de tu oponente ");
Console.SetCursorPosition(24, 13);Console.Write(">>> ");
nombreJ2 = Console.ReadLine();
while(nombreJ2.Length>7){
colocBarcos.menu();
Console.SetCursorPosition(24, 11);Console.Write("Pon un nombre más corto");
Console.SetCursorPosition(24, 13);Console.Write(">>> ");
nombreJ2 = Console.ReadLine();
}
turnos.setNombreJ2(nombreJ2);
Console.SetCursorPosition(24, 15);Console.Write("Nombre guardado correctamente!");
Thread.Sleep(1250);
break;
case 3:
colocBarcos.menu();
Console.SetCursorPosition(24, 11);Console.Write("¿Qué desea hacer?");
Console.SetCursorPosition(24, 12);Console.Write("-----------------");
Console.SetCursorPosition(24, 13);Console.Write("(1) Activar efectos de sonido ");
Console.SetCursorPosition(24, 14);Console.Write("(2) Desactivar efectos de sonido (defecto)");
Console.SetCursorPosition(24, 16);Console.Write(">>> ");
validar = int.TryParse(Console.ReadLine(), out opcion3);
if(opcion3 == 1){
DirectoryInfo DIR
= new DirectoryInfo
(".\\sonido"); if (!DIR.Exists){
Console.SetCursorPosition(24, 18);Console.Write("Error. No se encuentra la carpeta 'sonido'.");
Thread.Sleep(1750);
}else{
sonido = true;
Console.SetCursorPosition(24, 18);Console.Write("Sonido activado correctamente!");
Thread.Sleep(1250);
}
}else if(opcion3 == 2){
sonido = false;
Console.SetCursorPosition(24, 18);Console.Write("Sonido desactivado correctamente!");
Thread.Sleep(1250);
}
turnos.setSonido(sonido);
colocBarcos.setSonido(sonido);
break;
case 4:
volverAtras = false;
break;
}
}while(volverAtras == true);
break;
case 3:
break;
}
}while(opcion1!=3);
}
}
}
ColocacionDeBarcos.csusing System;
using System.IO;
using System.Threading;
namespace Hundir_la_Flota{
public class ColocacionDeBarcos{
Program ppal
= new Program
(); System.Media.SoundPlayer player
= new System.Media.SoundPlayer();
private bool validar = false, sonido = false;
private int[,
] tableroJ1
= new int[6,
8], tableroJ2
= new int[6,
8], posJ2
= new int[6,
8]; private int fila = 0, columna = 0, colocarBarco = 1; // Fil + Colum = Agua (0) || Barco (1) || Hundido (2)
private int barcosIniciales = 6, barcosJ1 = 0, barcosJ2 = 0;
private string nombreJ1 = null;
public int[,] getTableroJ1(){
return tableroJ1;
}
public int[,] getTableroJ2(){
return tableroJ2;
}
public int[,] getPosJ2(){
return posJ2;
}
public int getBarcosJ1(){
return barcosJ1;
}
public int getBarcosJ2(){
return barcosJ2;
}
public void setBarcosIniciales(int barcosIniciales){
this.barcosIniciales = barcosIniciales;
}
public void setNombreJ1(string nombreJ1){
this.nombreJ1 = nombreJ1;
}
public void setSonido(bool sonido){
this.sonido = sonido;
}
public void colocacionBarcosAutomatJ1(){
menu();
Console.Write("\n\n Cargando barcos");
for(int i=0;i<barcosIniciales;i++){
int hfila = h.Next(1,6), hcolumna = h.Next(1,8);
fila=hfila; columna=hcolumna;
if(tableroJ1[fila-1,columna-1] != colocarBarco){
tableroJ1[fila-1,columna-1] = colocarBarco;
barcosJ1++;
Console.Write(".");
}else{
i--;
}
}
Console.Write("Listo!");
Thread.Sleep(1500);
}
public void colocacionBarcosManualJ1(){
for(int i=0;i<barcosIniciales;i++){
do{
menu2();
Console.SetCursorPosition(30, 11);Console.Write("Barquito velero "+(i+1));
Console.SetCursorPosition(30, 12);Console.Write("-----------------");
Console.SetCursorPosition(30, 14);Console.Write("Fila: ");
validar = int.TryParse(Console.ReadLine(), out fila);
}while(fila<1 || fila>6);
do{
menu2();
Console.SetCursorPosition(30, 11);Console.Write("Barquito velero "+(i+1));
Console.SetCursorPosition(30, 12);Console.Write("-----------------");
Console.SetCursorPosition(30, 14);Console.Write("Fila: "+fila);
Console.SetCursorPosition(30, 15);Console.Write("Columna: ");
validar = int.TryParse(Console.ReadLine(), out columna);
}while(columna<1 || columna>10);
if(tableroJ1[fila-1,columna-1] != (char)'B'){
tableroJ1[fila-1,columna-1] = colocarBarco;
barcosJ1++;
if(sonido == true){
player.SoundLocation = ".\\sonido\\ColocarBarco.wav";
player.Play();
}
menu2();
Console.SetCursorPosition(30, 11);Console.Write("Barquito velero "+(i+1));
Console.SetCursorPosition(30, 12);Console.Write("-----------------");
Console.SetCursorPosition(30, 14);Console.Write("Fila: "+fila);
Console.SetCursorPosition(30, 15);Console.Write("Columna: "+columna);
Console.SetCursorPosition(30, 17);Console.Write("Barco "+(i+1)+" colocado correctamente!");
Thread.Sleep(1250);
}else if(tableroJ1[fila-1,columna-1] == (char)'B'){
if(sonido == true){
player.SoundLocation = ".\\sonido\\PosicionYaDada.wav";
player.Play();
}
menu2();
Console.SetCursorPosition(30, 11);Console.Write("Barquito velero "+(i+1)+"\n\n");
Console.SetCursorPosition(30, 12);Console.Write("-----------------");
Console.SetCursorPosition(30, 14);Console.Write("Fila: "+fila+"\n");
Console.SetCursorPosition(30, 15);Console.Write("Columna: "+columna);
Console.SetCursorPosition(30, 17);Console.Write("Ya has colocado un barco en esta posición.");
Thread.Sleep(1250);
i--;
}
} // Fin for
} // Fin método
public void colocacionBarcosAutomatJ2(){
for(int i=0;i<barcosIniciales;i++){
int rfila = r.Next(1,6), rcolumna = r.Next(1,8);
fila=rfila; columna=rcolumna;
if(tableroJ2[fila-1,columna-1] != colocarBarco){
tableroJ2[fila-1,columna-1] = colocarBarco;
barcosJ2++;
}else{
i--;
}
}
}
public void menu(){
Console.Clear();
Console.Write(" _ _\n");
Console.Write(" |_| | | |\\ | | \\ | |_|\n");
Console.Write(" | | |_| | \\| |__| | | \\\n");
Console.Write(" _ __ _ ___ __\n");
Console.Write(" | |_| |__ | | | | |__|\n");
Console.Write(" |__ | | | |__ |_| | | |\t\t _|_\n");
Console.Write("\t\t\t\t\t ___|___\n");
Console.Write("\t\t\t\t\t \\______/\n");
Console.Write("__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\\n");
Console.Write("\n A B C D E F G H\t\t\n");
Console.Write(" 1 - - - - - - - -\n");
Console.Write(" 2 - - - - - - - -\n");
Console.Write(" 3 - - - - - - - -\n");
Console.Write(" 4 - - - - - - - -\n");
Console.Write(" 5 - - - - - - - -\n");
Console.Write(" 6 - - - - - - - -\n\n\n");
}
public void menu2(){
Console.Clear();
Console.Write(" _ _\n");
Console.Write(" |_| | | |\\ | | \\ | |_|\n");
Console.Write(" | | |_| | \\| |__| | | \\\n");
Console.Write(" _ __ _ ___ __\n");
Console.Write(" | |_| |__ | | | | |__|\n");
Console.Write(" |__ | | | |__ |_| | | |\t\t _|_\n");
Console.Write("\t\t\t\t\t ___|___\n");
Console.Write("\t\t\t\t\t \\______/\n");
Console.Write("__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\");
Console.Write("\n\n");
Console.Write(" Mapa de "+nombreJ1+"\n");
Console.Write(" ---------------\n\n");
for(int j=0;j<tableroJ1.GetLength(0);j++){
for(int k=0;k<tableroJ1.GetLength(1);k++){
if(tableroJ1[j,k] == 1){
tableroJ1[j,k] = (char)'B';
}
if(tableroJ1[j,k] == 0){
tableroJ1[j,k] = (char)'-';
}
Console.Write(" "+(char)tableroJ1[j,k]);
}
Console.Write("\n");
}
}
} // Fin clase
} // Fin namespace
Turnos.csusing System;
using System.IO;
using System.Threading;
namespace Hundir_la_Flota{
public class Turnos{
Program ppal
= new Program
(); ColocacionDeBarcos coloc
= new ColocacionDeBarcos
(); System.Media.SoundPlayer player
= new System.Media.SoundPlayer();
private bool validar = false, repetirTirada = true, sonido = false;
private int[,
] tableroJ1
= new int[6,
8], tableroJ2
= new int[6,
8], posJ2
= new int[6,
8]; private int fila = 0, columna = 0;
private int barcosJ1 = 0, barcosJ2 = 0, hundidoJ1 = 0, hundidoJ2 = 0, rondasJ1 = 0, rondasJ2 = 0;
private string nombreJ1 = null, nombreJ2 = "Máquina";
public void setNombreJ1(string nombreJ1){
this.nombreJ1 = nombreJ1;
}
public void setNombreJ2(string nombreJ2){
this.nombreJ2 = nombreJ2;
}
public void setTablero1(int[,] tableroJ1){
this.tableroJ1 = tableroJ1;
}
public void setTablero2(int[,] tableroJ2){
this.tableroJ2 = tableroJ2;
}
public void setPosJ2(int[,] posJ2){
this.posJ2 = posJ2;
}
public void setBarcosJ1(int barcosJ1){
this.barcosJ1 = barcosJ1;
}
public void setBarcosJ2(int barcosJ2){
this.barcosJ2 = barcosJ2;
}
public void setSonido(bool sonido){
this.sonido = sonido;
}
public bool getRepetirTirada(){
return repetirTirada;
}
public int getFila(){
return fila;
}
public int getColumna(){
return columna;
}
public int getBarcosJ1(){
return barcosJ1;
}
public int getBarcosJ2(){
return barcosJ2;
}
public void introducirFila(){
do{
Console.Clear();
Console.Write("\n Mapa Jugador 1");
Console.Write("\n ----------------\n\n"); // Muestra los barcos J1
for(int i=0;i<tableroJ1.GetLength(0);i++){
for(int j=0;j<tableroJ1.GetLength(1);j++){
if(tableroJ1[i,j]==1){
tableroJ1[i,j]=(char)'B';
}
if(tableroJ1[i,j]==0){
tableroJ1[i,j]=(char)'-';
}
Console.Write(" "+(char)tableroJ1[i,j]);
}
Console.Write("\n");
}
Console.Write("\n\n Mapa Jugador 2");
Console.Write("\n ----------------\n\n");
for(int i=0;i<tableroJ2.GetLength(0);i++){ // Muestra los barcos J2
for(int j=0;j<tableroJ2.GetLength(1);j++){
posJ2[i,j]=0;
if(tableroJ2[i,j]==1){ // Si hay un barco
posJ2[i,j]=tableroJ2[i,j]; // Guardo su posición
tableroJ2[i,j]=(char)'-'; // y muestro agua por pantalla
}
if(tableroJ2[i,j]==0){
tableroJ2[i,j]=(char)'-';
}
Console.Write(" "+(char)tableroJ2[i,j]);
}
Console.Write("\n");
}
//------
for(int i=0;i<tableroJ2.GetLength(0);i++){
for(int j=0;j<tableroJ2.GetLength(1);j++){
if(posJ2[i,j]==1){
tableroJ2[i,j]=posJ2[i,j]; // Revivo los barcos J2 (antes los borré del mapa)
}
}
}
Console.SetCursorPosition(32, 1);Console.Write("Turno J1 - "+nombreJ1);
Console.SetCursorPosition(32, 2);Console.Write("-----------------\n\n");
Console.SetCursorPosition(32, 4);Console.Write("Barcos: "+barcosJ1);
Console.SetCursorPosition(32, 5);Console.Write("Has hundido: "+hundidoJ1);
Console.SetCursorPosition(32, 6);Console.Write("Te han hundido: "+hundidoJ2);
Console.SetCursorPosition(32, 7);Console.Write("Rondas: "+rondasJ1);
Console.SetCursorPosition(32, 9);Console.Write("Atacar J1 ==> Fila: ");
validar = int.TryParse(Console.ReadLine(), out fila);
}while(fila<1 || fila>6);
}
public void introducirColumna(){
do{
Console.Clear();
Console.Write("\n Mapa Jugador 1");
Console.Write("\n ----------------\n\n");
for(int i=0;i<tableroJ1.GetLength(0);i++){
for(int j=0;j<tableroJ1.GetLength(1);j++){
if(tableroJ1[i,j]==1){
tableroJ1[i,j]=(char)'B';
}
if(tableroJ1[i,j]==0){
tableroJ1[i,j]=(char)'-';
}
Console.Write(" "+(char)tableroJ1[i,j]);
}
Console.Write("\n");
}
Console.Write("\n\n Mapa Jugador 2");
Console.Write("\n ----------------\n\n");
for(int i=0;i<tableroJ2.GetLength(0);i++){
for(int j=0;j<tableroJ2.GetLength(1);j++){
if(tableroJ2[i,j]==1){ // Si hay un barco
posJ2[i,j]=tableroJ2[i,j]; // Guardo su posición
tableroJ2[i,j]=(char)'-'; // y muestro agua por pantalla
}
if(tableroJ2[i,j]==0){
tableroJ2[i,j]=(char)'-';
}
Console.Write(" "+(char)tableroJ2[i,j]);
}
Console.Write("\n");
}
//------
for(int i=0;i<tableroJ2.GetLength(0);i++){
for(int j=0;j<tableroJ2.GetLength(1);j++){
if(posJ2[i,j]==1){
tableroJ2[i,j]=posJ2[i,j];
}
}
}
Console.SetCursorPosition(32, 1);Console.Write("Turno J1 - "+nombreJ1);
Console.SetCursorPosition(32, 2);Console.Write("-----------------\n\n");
Console.SetCursorPosition(32, 4);Console.Write("Barcos: "+barcosJ1);
Console.SetCursorPosition(32, 5);Console.Write("Has hundido: "+hundidoJ1);
Console.SetCursorPosition(32, 6);Console.Write("Te han hundido: "+hundidoJ2);
Console.SetCursorPosition(32, 7);Console.Write("Rondas: "+rondasJ1);
Console.SetCursorPosition(32, 9);Console.Write("Atacar J1 ==> Fila: "+fila);
Console.SetCursorPosition(32, 10);Console.Write(" ==> Columna: ");
validar = int.TryParse(Console.ReadLine(), out columna);
}while(columna<1 || columna>8);
Console.Write("\n\n");
}
public void realizarComprobacionesJ1(){
repetirTirada = true;
if(tableroJ2[fila-1,columna-1] == 1){ // Realiza el ataque a la posición indicada
Console.SetCursorPosition(32, 12);Console.Write("Barco Hundido. Vuelves a atacar J1.\n");
tableroJ2[fila-1,columna-1]=(char)'X';
if(sonido == true){
player.SoundLocation = ".\\sonido\\Explosion.wav";
player.Play();
}
hundidoJ1++;
barcosJ2--;
}else if(tableroJ2[fila-1,columna-1] == (char)'A'){
if(sonido == true){
player.SoundLocation = ".\\sonido\\PosicionYaDada.wav";
player.Play();
}
Console.SetCursorPosition(32, 12);Console.Write("Ya has atacado esta posición. Pasas turno.");
}else if(tableroJ2[fila-1,columna-1] == (char)'X'){
if(sonido == true){
player.SoundLocation = ".\\sonido\\PosicionYaDada.wav";
player.Play();
}
Console.SetCursorPosition(32, 12);Console.Write("Ya has hundido este barco. Pasas turno.");
repetirTirada = false;
}else{
if(sonido == true){
player.SoundLocation = ".\\sonido\\NoHayBarco.wav";
player.Play();
}
Console.Clear();
tableroJ2[fila-1,columna-1] = (char)'A';
Console.Write("\n Mapa Jugador 1");
Console.Write("\n ----------------\n\n");
for(int i=0;i<tableroJ1.GetLength(0);i++){
for(int j=0;j<tableroJ1.GetLength(1);j++){
Console.Write(" "+(char)tableroJ1[i,j]);
}
Console.Write("\n");
}
Console.Write("\n\n Mapa Jugador 2");
Console.Write("\n ----------------\n\n");
for(int i=0;i<tableroJ2.GetLength(0);i++){
for(int j=0;j<tableroJ2.GetLength(1);j++){
if(tableroJ2[i,j]==1){ // Si hay un barco
posJ2[i,j]=tableroJ2[i,j]; // Guardo su posición
tableroJ2[i,j]=(char)'-'; // y muestro agua por pantalla
}
if(tableroJ2[i,j]==0){
tableroJ2[i,j]=(char)'-';
}
Console.Write(" "+(char)tableroJ2[i,j]);
}
Console.Write("\n");
}
//------
for(int i=0;i<tableroJ2.GetLength(0);i++){
for(int j=0;j<tableroJ2.GetLength(1);j++){
if(posJ2[i,j]==1){
tableroJ2[i,j]=posJ2[i,j];
}
}
}
Console.SetCursorPosition(32, 1);Console.Write("Turno J1 - "+nombreJ1);
Console.SetCursorPosition(32, 2);Console.Write("-----------------\n\n");
Console.SetCursorPosition(32, 4);Console.Write("Barcos: "+barcosJ1);
Console.SetCursorPosition(32, 5);Console.Write("Has hundido: "+hundidoJ1);
Console.SetCursorPosition(32, 6);Console.Write("Te han hundido: "+hundidoJ2);
Console.SetCursorPosition(32, 7);Console.Write("Rondas: "+rondasJ1);
Console.SetCursorPosition(32, 9);Console.Write("Atacar J1 ==> Fila: "+fila);
Console.SetCursorPosition(32, 10);Console.Write(" ==> Columna: "+columna);
Console.SetCursorPosition(32, 12);Console.Write("Has tocado agua. Pasas turno a J2.\n");
}
rondasJ1++;
Thread.Sleep(2000);
}
public void ataqueAlAzarDeJ2(){
Console.Clear();
Random r
= new Random
(); // elige Fila y Columna AL AZAR EN CADA RONDA pa atacar int rfila7 = r.Next(1,6), rcolumna7 = r.Next(1,8);
Console.Clear();
Console.Write("\n Mapa Jugador 1");
Console.Write("\n ----------------\n\n");
for(int i=0;i<tableroJ1.GetLength(0);i++){
for(int j=0;j<tableroJ1.GetLength(1);j++){
if(tableroJ1[i,j]==1){
tableroJ1[i,j]=(char)'B';
}
if(tableroJ1[i,j]==0){
tableroJ1[i,j]=(char)'-';
}
Console.Write(" "+(char)tableroJ1[i,j]);
}
Console.Write("\n");
}
Console.Write("\n\n Mapa Jugador 2");
Console.Write("\n ----------------\n\n");
for(int i=0;i<tableroJ2.GetLength(0);i++){ // Muestra los barcos J2
for(int j=0;j<tableroJ2.GetLength(1);j++){
posJ2[i,j]=0;
if(tableroJ2[i,j]==1){ // Si hay un barco
posJ2[i,j]=tableroJ2[i,j]; // Guardo su posición
tableroJ2[i,j]=(char)'-'; // y muestro agua por pantalla
}
if(tableroJ2[i,j]==0){
tableroJ2[i,j]=(char)'-';
}
Console.Write(" "+(char)tableroJ2[i,j]);
}
Console.Write("\n");
}
//------
for(int i=0;i<tableroJ2.GetLength(0);i++){
for(int j=0;j<tableroJ2.GetLength(1);j++){
if(posJ2[i,j]==1){
tableroJ2[i,j]=posJ2[i,j]; // Revivo los barcos J2 (antes los borré del mapa)
}
}
}
Console.SetCursorPosition(32, 1);Console.Write("Turno J2 - "+nombreJ2);
Console.SetCursorPosition(32, 2);Console.Write("------------------\n\n");
Console.SetCursorPosition(32, 4);Console.Write("Barcos: "+barcosJ2);
Console.SetCursorPosition(32, 5);Console.Write("Has hundido: "+hundidoJ2);
Console.SetCursorPosition(32, 6);Console.Write("Te han hundido: "+hundidoJ1);
Console.SetCursorPosition(32, 7);Console.Write("Rondas: "+rondasJ2);
Console.SetCursorPosition(32, 9);Console.Write("Atacar J2 ==> Fila: "); // Atacar J2 a J1
Thread.Sleep(1500);
Console.Write(rfila7);
fila=rfila7;
Console.SetCursorPosition(32, 10);Console.Write(" ==> Columna: ");
Thread.Sleep(1500);
Console.Write(rcolumna7);
columna=rcolumna7;
Thread.Sleep(1000);
Console.Write("\n\n");
}
public void realizarComprobacionesJ2(){
repetirTirada = true;
if(tableroJ1[fila-1,columna-1] == (char)'B'){
Console.SetCursorPosition(32, 12);Console.Write("Barco Hundido. Vuelves a atacar jugador 2.\n");
tableroJ1[fila-1,columna-1] = (char)'X';
if(sonido == true){
player.SoundLocation = ".\\sonido\\Explosion.wav";
player.Play();
}
hundidoJ2++;
barcosJ1--;
}else if(tableroJ1[fila-1,columna-1] == (char)'A'){
if(sonido == true){
player.SoundLocation = ".\\sonido\\PosicionYaDada.wav";
player.Play();
}
Console.SetCursorPosition(32, 12);Console.Write("Ya has atacado esta posición. Pasas turno.");
}else if(tableroJ1[fila-1,columna-1] == (char)'X'){
if(sonido == true){
player.SoundLocation = ".\\sonido\\PosicionYaDada.wav";
player.Play();
}
Console.SetCursorPosition(32, 12);Console.Write("Ya has hundido este barco. Pasas turno.");
repetirTirada = false;
}else{
if(sonido == true){
player.SoundLocation = ".\\sonido\\NoHayBarco.wav";
player.Play();
}
Console.SetCursorPosition(32, 12);Console.Write("Has tocado agua. Pasas turno a J1.\n");
tableroJ1[fila-1,columna-1]=(char)'A';
}
rondasJ2++;
Thread.Sleep(2000);
}
}
}
Lo iré actualizando poquito a poco con el tiempo, así que nada de prisas ya que simplemente lo hago por aprender y el segundo motivo, por aburrimiento. Espero que os guste.
Feliz Navidad gente!