elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  [Source C#] Juego: Hundir la flota v0.3
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [Source C#] Juego: Hundir la flota v0.3  (Leído 15,018 veces)
Dryken

Desconectado Desconectado

Mensajes: 117


El arte de vencer se aprende en las derrotas


Ver Perfil WWW
[Source C#] Juego: Hundir la flota v0.3
« en: 5 Diciembre 2012, 21:07 pm »

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-NgI1JyL33mOKBRRwu3qUHcpCPiDH14

http://www.mediafire.com/download.php?9onxw63bbklne5b

Descargar sólo Ejecutable

https://mega.co.nz/#!okNwnB5Z!PhOglj7hC3Oz-5R9_1S0p22JGfcMCd3k1JX__vrfR4A

http://www.mediafire.com/?cpocl71xwyb22yb


Principal.cs
Código
  1. using System;
  2. using System.IO;
  3. using System.Threading;
  4.  
  5. namespace Hundir_la_Flota{
  6. public class Program{    
  7.  
  8. public static void Main(string[] args){
  9.  
  10. ColocacionDeBarcos colocBarcos = new ColocacionDeBarcos();
  11. Turnos turnos = new Turnos();
  12. System.Media.SoundPlayer player = new System.Media.SoundPlayer();
  13.  
  14. Console.Title = "Hundir la flota 0.3";
  15. bool validar = false, volverAtras = true, sonido = false;
  16. int opcion1 = 0, opcion2 = 0, opcion3 = 0, barcosIniciales = 6;
  17. string nombreJ1 = null, nombreJ2 = null;
  18.  
  19. do{ // Validación del menu principal
  20. if(sonido == true){
  21. player.SoundLocation = ".\\sonido\\FondoDeUnaCueva.wav";
  22. player.Play();
  23. }
  24. colocBarcos.menu();
  25. Console.SetCursorPosition(24, 11);Console.Write("#############################");
  26. Console.SetCursorPosition(24, 12);Console.Write("#    #");
  27. Console.SetCursorPosition(24, 13);Console.Write("# Selecciona una categoría: #");
  28. Console.SetCursorPosition(24, 14);Console.Write("#    #");
  29. Console.SetCursorPosition(24, 15);Console.Write("# (1)  Comenzar            #");
  30. Console.SetCursorPosition(24, 16);Console.Write("# (2)  Opciones            #");
  31. Console.SetCursorPosition(24, 17);Console.Write("# (3)  Salir               #");
  32. Console.SetCursorPosition(24, 18);Console.Write("# Versión 0.3 #");
  33. Console.SetCursorPosition(24, 19);Console.Write("#    #");
  34. Console.SetCursorPosition(24, 20);Console.Write("#############################\n\n");
  35. for(int i=0; i<=79; i++){
  36. Console.Write("_");
  37. }
  38. for(int i=0; i<=79; i++){
  39.   Console.Write("=");
  40.   Thread.Sleep(8);
  41. }
  42. Console.Write(">>> ");
  43. validar = int.TryParse(Console.ReadLine(), out opcion1);
  44.  
  45. switch(opcion1){
  46. case 1:
  47. do{ // Validación del menú secundario
  48. if(sonido == true){
  49. player.SoundLocation = ".\\sonido\\MenuOpciones.wav";
  50. player.Play();
  51. }
  52. colocBarcos.menu();
  53. Console.SetCursorPosition(24, 11);Console.Write("Introduce tu nombre: ");
  54. nombreJ1 = Console.ReadLine();
  55. while(nombreJ1.Length>7){ // Validación en el nombre de J1
  56. colocBarcos.menu();
  57. Console.SetCursorPosition(24, 11);Console.Write("Pon un nombre más corto: ");
  58. nombreJ1 = Console.ReadLine();
  59. }
  60. turnos.setNombreJ1(nombreJ1);
  61. colocBarcos.setNombreJ1(nombreJ1);
  62. Console.SetCursorPosition(24, 13);Console.Write("Coloca tus embarcaciones\n");
  63. Console.SetCursorPosition(24, 14);Console.Write("------------------------\n");
  64. Console.SetCursorPosition(24, 15);Console.Write("(1)  Automáticamente\n");
  65. Console.SetCursorPosition(24, 16);Console.Write("(2)  Manualmente\n");
  66. Console.SetCursorPosition(24, 18);Console.Write(">>> ");
  67. validar = int.TryParse(Console.ReadLine(), out opcion2);
  68. }while(opcion2!=1 && opcion2!=2);
  69. switch(opcion2){
  70. case 1:
  71. colocBarcos.colocacionBarcosAutomatJ1();
  72.     break;
  73.     case 2:
  74.     colocBarcos.colocacionBarcosManualJ1();
  75.       break;
  76. }
  77. colocBarcos.colocacionBarcosAutomatJ2();
  78.  
  79. turnos.setTablero1(colocBarcos.getTableroJ1());
  80. turnos.setTablero2(colocBarcos.getTableroJ2());
  81. turnos.setPosJ2(colocBarcos.getPosJ2());
  82. turnos.setBarcosJ1(colocBarcos.getBarcosJ1());
  83. turnos.setBarcosJ2(colocBarcos.getBarcosJ2());
  84.  
  85. do{ // Cambia el turno de J1 a J2 y viceversa
  86. do{ // Vuelve a tirar J1 si hunde un barco
  87. turnos.introducirFila();
  88. turnos.introducirColumna();
  89. turnos.realizarComprobacionesJ1();
  90. }while(colocBarcos.getTableroJ2()[turnos.getFila()-1,turnos.getColumna()-1] == (char)'X' && turnos.getRepetirTirada() == true);
  91.  
  92. do{ // Vuelve a tirar J2 si hunde un barco
  93. turnos.ataqueAlAzarDeJ2();
  94. turnos.realizarComprobacionesJ2();
  95. }while(colocBarcos.getTableroJ1()[turnos.getFila()-1,turnos.getColumna()-1] == (char)'X' && turnos.getRepetirTirada() == true);
  96.  
  97. if(turnos.getBarcosJ1() == 0){
  98. Console.Write("Has perdido la partida. La próxima vez será.");
  99. Console.ReadKey();
  100. break;
  101. }
  102.  
  103. }while(turnos.getBarcosJ2() != 0); // Si todos los barcos enemigos están hundidos, se acabó la partida
  104. Console.Write("Has ganado la partida. Enhorabuena!!");
  105. break;
  106. case 2:
  107.  do{
  108. if(sonido == true){
  109. player.SoundLocation = ".\\sonido\\FondoDeUnaCueva.wav";
  110. player.Play();
  111. }
  112. colocBarcos.menu();
  113. Console.SetCursorPosition(24, 11);Console.Write("(1)  Elegir cantidad de barcos\n");
  114. Console.SetCursorPosition(24, 12);Console.Write("(2)  Poner nombre al jugador 2\n");
  115. Console.SetCursorPosition(24, 13);Console.Write("(3)  Activar efectos de sonido\n");
  116. Console.SetCursorPosition(24, 14);Console.Write("(4)  Volver al menú\n");
  117. Console.SetCursorPosition(24, 16);Console.Write(">>> ");
  118. validar = int.TryParse(Console.ReadLine(), out opcion2);
  119. switch(opcion2){
  120. case 1:
  121. do{
  122. colocBarcos.menu();
  123. Console.SetCursorPosition(24, 11);Console.Write("¿Con cuántos barcos quieres jugar? (Máx 30)");
  124. Console.SetCursorPosition(24, 13);Console.Write(">>> ");
  125. validar = int.TryParse(Console.ReadLine(), out barcosIniciales);
  126. }while(barcosIniciales<1 || barcosIniciales>30);
  127. colocBarcos.setBarcosIniciales(barcosIniciales);
  128. Console.SetCursorPosition(24, 15);Console.Write("Cambios guardados correctamente!");
  129. Thread.Sleep(1250);
  130. break;
  131. case 2:
  132. colocBarcos.menu();
  133. Console.SetCursorPosition(24, 11);Console.Write("Introduce el nombre de tu oponente ");
  134. Console.SetCursorPosition(24, 13);Console.Write(">>> ");
  135. nombreJ2 = Console.ReadLine();
  136. while(nombreJ2.Length>7){
  137. colocBarcos.menu();
  138. Console.SetCursorPosition(24, 11);Console.Write("Pon un nombre más corto");
  139. Console.SetCursorPosition(24, 13);Console.Write(">>> ");
  140. nombreJ2 = Console.ReadLine();
  141. }
  142. turnos.setNombreJ2(nombreJ2);
  143. Console.SetCursorPosition(24, 15);Console.Write("Nombre guardado correctamente!");
  144. Thread.Sleep(1250);
  145. break;
  146. case 3:
  147. colocBarcos.menu();
  148. Console.SetCursorPosition(24, 11);Console.Write("¿Qué desea hacer?");
  149. Console.SetCursorPosition(24, 12);Console.Write("-----------------");
  150. Console.SetCursorPosition(24, 13);Console.Write("(1)  Activar efectos de sonido ");
  151. Console.SetCursorPosition(24, 14);Console.Write("(2)  Desactivar efectos de sonido (defecto)");
  152. Console.SetCursorPosition(24, 16);Console.Write(">>> ");
  153. validar = int.TryParse(Console.ReadLine(), out opcion3);
  154. if(opcion3 == 1){
  155. DirectoryInfo DIR = new DirectoryInfo(".\\sonido");
  156. if (!DIR.Exists){
  157. Console.SetCursorPosition(24, 18);Console.Write("Error. No se encuentra la carpeta 'sonido'.");
  158. Thread.Sleep(1750);
  159. }else{
  160. sonido = true;
  161. Console.SetCursorPosition(24, 18);Console.Write("Sonido activado correctamente!");
  162. Thread.Sleep(1250);
  163. }
  164. }else if(opcion3 == 2){
  165. sonido = false;
  166. Console.SetCursorPosition(24, 18);Console.Write("Sonido desactivado correctamente!");
  167. Thread.Sleep(1250);
  168. }
  169. turnos.setSonido(sonido);
  170. colocBarcos.setSonido(sonido);
  171. break;
  172. case 4:
  173. volverAtras = false;
  174. break;
  175. }
  176.  }while(volverAtras == true);
  177. break;
  178. case 3:
  179. break;
  180. }
  181. }while(opcion1!=3);
  182. }
  183. }
  184. }
  185.  



ColocacionDeBarcos.cs
Código
  1. using System;
  2. using System.IO;
  3. using System.Threading;
  4.  
  5. namespace Hundir_la_Flota{
  6. public class ColocacionDeBarcos{
  7.  
  8. Program ppal = new Program();
  9. System.Media.SoundPlayer player = new System.Media.SoundPlayer();
  10.  
  11. private bool validar = false, sonido = false;
  12. private int[,] tableroJ1 = new int[6,8], tableroJ2 = new int[6,8], posJ2 = new int[6,8];
  13. private int fila = 0, columna = 0, colocarBarco = 1; // Fil + Colum = Agua (0)  || Barco (1)  || Hundido (2)
  14. private int barcosIniciales = 6, barcosJ1 = 0, barcosJ2 = 0;
  15. private string nombreJ1 = null;
  16.  
  17. public int[,] getTableroJ1(){            
  18. return tableroJ1;
  19. }
  20.  
  21. public int[,] getTableroJ2(){
  22. return tableroJ2;
  23. }
  24.  
  25. public int[,] getPosJ2(){
  26. return posJ2;
  27. }
  28.  
  29. public int getBarcosJ1(){
  30. return barcosJ1;
  31. }
  32.  
  33. public int getBarcosJ2(){
  34. return barcosJ2;
  35. }
  36.  
  37. public void setBarcosIniciales(int barcosIniciales){
  38. this.barcosIniciales = barcosIniciales;
  39. }
  40.  
  41. public void setNombreJ1(string nombreJ1){
  42. this.nombreJ1 = nombreJ1;
  43. }
  44.  
  45. public void setSonido(bool sonido){
  46. this.sonido = sonido;
  47. }
  48.  
  49. public void colocacionBarcosAutomatJ1(){
  50. menu();
  51. Console.Write("\n\n Cargando barcos");
  52.  
  53. for(int i=0;i<barcosIniciales;i++){
  54. Random h = new Random();
  55. int hfila = h.Next(1,6), hcolumna = h.Next(1,8);
  56. fila=hfila; columna=hcolumna;
  57. if(tableroJ1[fila-1,columna-1] != colocarBarco){
  58. tableroJ1[fila-1,columna-1] = colocarBarco;
  59. barcosJ1++;
  60. Console.Write(".");
  61. }else{
  62. i--;
  63. }
  64. }
  65. Console.Write("Listo!");
  66. Thread.Sleep(1500);
  67. }
  68.  
  69. public void colocacionBarcosManualJ1(){
  70.    for(int i=0;i<barcosIniciales;i++){
  71.     do{
  72. menu2();
  73. Console.SetCursorPosition(30, 11);Console.Write("Barquito velero "+(i+1));
  74. Console.SetCursorPosition(30, 12);Console.Write("-----------------");
  75. Console.SetCursorPosition(30, 14);Console.Write("Fila: ");
  76. validar = int.TryParse(Console.ReadLine(), out fila);
  77. }while(fila<1 || fila>6);
  78.  
  79. do{
  80. menu2();
  81. Console.SetCursorPosition(30, 11);Console.Write("Barquito velero "+(i+1));
  82. Console.SetCursorPosition(30, 12);Console.Write("-----------------");
  83. Console.SetCursorPosition(30, 14);Console.Write("Fila: "+fila);
  84. Console.SetCursorPosition(30, 15);Console.Write("Columna: ");
  85. validar = int.TryParse(Console.ReadLine(), out columna);
  86. }while(columna<1 || columna>10);
  87.  
  88. if(tableroJ1[fila-1,columna-1] != (char)'B'){
  89. tableroJ1[fila-1,columna-1] = colocarBarco;  
  90. barcosJ1++;
  91. if(sonido == true){
  92. player.SoundLocation = ".\\sonido\\ColocarBarco.wav";
  93. player.Play();
  94. }
  95. menu2();
  96. Console.SetCursorPosition(30, 11);Console.Write("Barquito velero "+(i+1));
  97. Console.SetCursorPosition(30, 12);Console.Write("-----------------");
  98. Console.SetCursorPosition(30, 14);Console.Write("Fila: "+fila);
  99. Console.SetCursorPosition(30, 15);Console.Write("Columna: "+columna);
  100. Console.SetCursorPosition(30, 17);Console.Write("Barco "+(i+1)+" colocado correctamente!");
  101. Thread.Sleep(1250);
  102.  
  103.     }else if(tableroJ1[fila-1,columna-1] == (char)'B'){
  104. if(sonido == true){
  105. player.SoundLocation = ".\\sonido\\PosicionYaDada.wav";
  106. player.Play();
  107. }
  108. menu2();
  109. Console.SetCursorPosition(30, 11);Console.Write("Barquito velero "+(i+1)+"\n\n");
  110. Console.SetCursorPosition(30, 12);Console.Write("-----------------");
  111. Console.SetCursorPosition(30, 14);Console.Write("Fila: "+fila+"\n");
  112. Console.SetCursorPosition(30, 15);Console.Write("Columna: "+columna);
  113. Console.SetCursorPosition(30, 17);Console.Write("Ya has colocado un barco en esta posición.");
  114. Thread.Sleep(1250);
  115. i--;
  116.     }
  117. } // Fin for
  118. } // Fin método
  119.  
  120. public void colocacionBarcosAutomatJ2(){
  121. for(int i=0;i<barcosIniciales;i++){
  122. Random r = new Random();
  123. int rfila = r.Next(1,6), rcolumna = r.Next(1,8);
  124. fila=rfila; columna=rcolumna;
  125. if(tableroJ2[fila-1,columna-1] != colocarBarco){
  126. tableroJ2[fila-1,columna-1] = colocarBarco;
  127. barcosJ2++;
  128. }else{
  129. i--;
  130. }
  131. }
  132. }
  133.  
  134. public void menu(){
  135. Console.Clear();
  136. Console.Write("   _      _\n");
  137. Console.Write("  |_| | | |\\ | | \\  | |_|\n");
  138. Console.Write("  | | |_| | \\| |__| | | \\\n");
  139. Console.Write("       _     __      _  ___   __\n");
  140. Console.Write("  |   |_|   |__ |    | |   |   |__|\n");
  141. Console.Write("  |__ | |   | |__  |_|   |   |  |\t\t  _|_\n");
  142. Console.Write("\t\t\t\t\t ___|___\n");
  143. Console.Write("\t\t\t\t\t \\______/\n");
  144. Console.Write("__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\\n");
  145. Console.Write("\n   A B C D E F G H\t\t\n");
  146. Console.Write(" 1 - - - - - - - -\n");
  147. Console.Write(" 2 - - - - - - - -\n");
  148. Console.Write(" 3 - - - - - - - -\n");
  149. Console.Write(" 4 - - - - - - - -\n");
  150. Console.Write(" 5 - - - - - - - -\n");
  151. Console.Write(" 6 - - - - - - - -\n\n\n");
  152. }
  153.  
  154. public void menu2(){
  155. Console.Clear();
  156. Console.Write("   _      _\n");
  157. Console.Write("  |_| | | |\\ | | \\  | |_|\n");
  158. Console.Write("  | | |_| | \\| |__| | | \\\n");
  159. Console.Write("       _     __      _  ___   __\n");
  160. Console.Write("  |   |_|   |__ |    | |   |   |__|\n");
  161. Console.Write("  |__ | |   | |__  |_|   |   |  |\t\t  _|_\n");
  162. Console.Write("\t\t\t\t\t ___|___\n");
  163. Console.Write("\t\t\t\t\t \\______/\n");
  164. Console.Write("__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\__/\\");
  165. Console.Write("\n\n");
  166. Console.Write("  Mapa de "+nombreJ1+"\n");
  167. Console.Write("  ---------------\n\n");
  168. for(int j=0;j<tableroJ1.GetLength(0);j++){
  169. for(int k=0;k<tableroJ1.GetLength(1);k++){
  170. if(tableroJ1[j,k] == 1){
  171. tableroJ1[j,k] = (char)'B';
  172. }
  173. if(tableroJ1[j,k] == 0){
  174. tableroJ1[j,k] = (char)'-';
  175. }
  176. Console.Write("  "+(char)tableroJ1[j,k]);
  177. }
  178. Console.Write("\n");
  179. }
  180. }
  181. } // Fin clase
  182. } // Fin namespace
  183.  



Turnos.cs

Código
  1. using System;
  2. using System.IO;
  3. using System.Threading;
  4.  
  5. namespace Hundir_la_Flota{
  6. public class Turnos{
  7.  
  8. Program ppal = new Program();
  9. ColocacionDeBarcos coloc = new ColocacionDeBarcos();
  10. System.Media.SoundPlayer player = new System.Media.SoundPlayer();
  11.  
  12. private bool validar = false, repetirTirada = true, sonido = false;
  13. private int[,] tableroJ1 = new int[6,8], tableroJ2 = new int[6,8], posJ2 = new int[6,8];
  14. private int fila = 0, columna = 0;
  15. private int barcosJ1 = 0, barcosJ2 = 0, hundidoJ1 = 0, hundidoJ2 = 0, rondasJ1 = 0, rondasJ2 = 0;
  16. private string nombreJ1 = null, nombreJ2 = "Máquina";
  17.  
  18. public void setNombreJ1(string nombreJ1){
  19. this.nombreJ1 = nombreJ1;
  20. }
  21.  
  22. public void setNombreJ2(string nombreJ2){
  23. this.nombreJ2 = nombreJ2;
  24. }
  25.  
  26. public void setTablero1(int[,] tableroJ1){
  27. this.tableroJ1 = tableroJ1;
  28. }
  29.  
  30. public void setTablero2(int[,] tableroJ2){
  31. this.tableroJ2 = tableroJ2;
  32. }
  33.  
  34. public void setPosJ2(int[,] posJ2){
  35. this.posJ2 = posJ2;
  36. }
  37.  
  38. public void setBarcosJ1(int barcosJ1){
  39. this.barcosJ1 = barcosJ1;
  40. }
  41.  
  42. public void setBarcosJ2(int barcosJ2){
  43. this.barcosJ2 = barcosJ2;
  44. }
  45.  
  46. public void setSonido(bool sonido){
  47. this.sonido = sonido;
  48. }
  49.  
  50. public bool getRepetirTirada(){
  51. return repetirTirada;
  52. }
  53.  
  54. public int getFila(){
  55. return fila;
  56. }
  57.  
  58. public int getColumna(){
  59. return columna;
  60. }
  61.  
  62. public int getBarcosJ1(){
  63. return barcosJ1;
  64. }
  65.  
  66. public int getBarcosJ2(){
  67. return barcosJ2;
  68. }
  69.  
  70. public void introducirFila(){
  71. do{
  72. Console.Clear();
  73. Console.Write("\n Mapa Jugador 1");
  74. Console.Write("\n ----------------\n\n"); // Muestra los barcos J1
  75. for(int i=0;i<tableroJ1.GetLength(0);i++){
  76. for(int j=0;j<tableroJ1.GetLength(1);j++){  
  77. if(tableroJ1[i,j]==1){
  78. tableroJ1[i,j]=(char)'B';
  79. }
  80. if(tableroJ1[i,j]==0){
  81. tableroJ1[i,j]=(char)'-';
  82. }
  83. Console.Write("  "+(char)tableroJ1[i,j]);
  84. }
  85. Console.Write("\n");
  86. }
  87. Console.Write("\n\n Mapa Jugador 2");
  88. Console.Write("\n ----------------\n\n");
  89. for(int i=0;i<tableroJ2.GetLength(0);i++){ // Muestra los barcos J2
  90. for(int j=0;j<tableroJ2.GetLength(1);j++){
  91. posJ2[i,j]=0;
  92. if(tableroJ2[i,j]==1){   // Si hay un barco
  93. posJ2[i,j]=tableroJ2[i,j];   // Guardo su posición
  94. tableroJ2[i,j]=(char)'-';   // y muestro agua por pantalla
  95. }
  96. if(tableroJ2[i,j]==0){
  97. tableroJ2[i,j]=(char)'-';
  98. }
  99. Console.Write("  "+(char)tableroJ2[i,j]);
  100. }
  101. Console.Write("\n");
  102. }
  103. //------
  104. for(int i=0;i<tableroJ2.GetLength(0);i++){
  105. for(int j=0;j<tableroJ2.GetLength(1);j++){
  106. if(posJ2[i,j]==1){
  107. tableroJ2[i,j]=posJ2[i,j]; // Revivo los barcos J2 (antes los borré del mapa)
  108. }
  109. }
  110. }
  111. Console.SetCursorPosition(32, 1);Console.Write("Turno J1 - "+nombreJ1);
  112. Console.SetCursorPosition(32, 2);Console.Write("-----------------\n\n");
  113. Console.SetCursorPosition(32, 4);Console.Write("Barcos: "+barcosJ1);
  114. Console.SetCursorPosition(32, 5);Console.Write("Has hundido: "+hundidoJ1);
  115. Console.SetCursorPosition(32, 6);Console.Write("Te han hundido: "+hundidoJ2);
  116. Console.SetCursorPosition(32, 7);Console.Write("Rondas: "+rondasJ1);
  117. Console.SetCursorPosition(32, 9);Console.Write("Atacar J1  ==> Fila: ");
  118. validar = int.TryParse(Console.ReadLine(), out fila);
  119. }while(fila<1 || fila>6);
  120. }
  121.  
  122. public void introducirColumna(){
  123. do{
  124. Console.Clear();
  125. Console.Write("\n Mapa Jugador 1");
  126. Console.Write("\n ----------------\n\n");
  127. for(int i=0;i<tableroJ1.GetLength(0);i++){
  128. for(int j=0;j<tableroJ1.GetLength(1);j++){
  129. if(tableroJ1[i,j]==1){
  130. tableroJ1[i,j]=(char)'B';
  131. }
  132. if(tableroJ1[i,j]==0){
  133. tableroJ1[i,j]=(char)'-';
  134. }
  135. Console.Write("  "+(char)tableroJ1[i,j]);
  136. }
  137. Console.Write("\n");
  138. }
  139. Console.Write("\n\n Mapa Jugador 2");
  140. Console.Write("\n ----------------\n\n");
  141. for(int i=0;i<tableroJ2.GetLength(0);i++){
  142. for(int j=0;j<tableroJ2.GetLength(1);j++){
  143. if(tableroJ2[i,j]==1){   // Si hay un barco
  144. posJ2[i,j]=tableroJ2[i,j];   // Guardo su posición
  145. tableroJ2[i,j]=(char)'-';   // y muestro agua por pantalla
  146. }
  147. if(tableroJ2[i,j]==0){
  148. tableroJ2[i,j]=(char)'-';
  149. }
  150. Console.Write("  "+(char)tableroJ2[i,j]);
  151. }
  152. Console.Write("\n");
  153. }
  154. //------
  155. for(int i=0;i<tableroJ2.GetLength(0);i++){
  156. for(int j=0;j<tableroJ2.GetLength(1);j++){
  157. if(posJ2[i,j]==1){
  158. tableroJ2[i,j]=posJ2[i,j];
  159. }
  160. }
  161. }
  162. Console.SetCursorPosition(32, 1);Console.Write("Turno J1 - "+nombreJ1);
  163. Console.SetCursorPosition(32, 2);Console.Write("-----------------\n\n");
  164. Console.SetCursorPosition(32, 4);Console.Write("Barcos: "+barcosJ1);
  165. Console.SetCursorPosition(32, 5);Console.Write("Has hundido: "+hundidoJ1);
  166. Console.SetCursorPosition(32, 6);Console.Write("Te han hundido: "+hundidoJ2);
  167. Console.SetCursorPosition(32, 7);Console.Write("Rondas: "+rondasJ1);
  168. Console.SetCursorPosition(32, 9);Console.Write("Atacar J1  ==> Fila: "+fila);
  169. Console.SetCursorPosition(32, 10);Console.Write("           ==> Columna: ");
  170. validar = int.TryParse(Console.ReadLine(), out columna);
  171.  
  172. }while(columna<1 || columna>8);
  173. Console.Write("\n\n");
  174. }
  175.  
  176. public void realizarComprobacionesJ1(){
  177. repetirTirada = true;
  178. if(tableroJ2[fila-1,columna-1] == 1){ // Realiza el ataque a la posición indicada
  179. Console.SetCursorPosition(32, 12);Console.Write("Barco Hundido. Vuelves a atacar J1.\n");
  180. tableroJ2[fila-1,columna-1]=(char)'X';
  181. if(sonido == true){
  182. player.SoundLocation = ".\\sonido\\Explosion.wav";
  183. player.Play();
  184. }
  185. hundidoJ1++;
  186. barcosJ2--;
  187. }else if(tableroJ2[fila-1,columna-1] == (char)'A'){
  188. if(sonido == true){
  189. player.SoundLocation = ".\\sonido\\PosicionYaDada.wav";
  190. player.Play();
  191. }
  192. Console.SetCursorPosition(32, 12);Console.Write("Ya has atacado esta posición. Pasas turno.");
  193. }else if(tableroJ2[fila-1,columna-1] == (char)'X'){
  194. if(sonido == true){
  195. player.SoundLocation = ".\\sonido\\PosicionYaDada.wav";
  196. player.Play();
  197. }
  198. Console.SetCursorPosition(32, 12);Console.Write("Ya has hundido este barco. Pasas turno.");
  199. repetirTirada = false;
  200. }else{
  201. if(sonido == true){
  202. player.SoundLocation = ".\\sonido\\NoHayBarco.wav";
  203. player.Play();
  204. }
  205. Console.Clear();
  206. tableroJ2[fila-1,columna-1] = (char)'A';
  207. Console.Write("\n Mapa Jugador 1");
  208. Console.Write("\n ----------------\n\n");
  209. for(int i=0;i<tableroJ1.GetLength(0);i++){
  210. for(int j=0;j<tableroJ1.GetLength(1);j++){
  211. Console.Write("  "+(char)tableroJ1[i,j]);
  212. }
  213. Console.Write("\n");
  214. }
  215. Console.Write("\n\n Mapa Jugador 2");
  216. Console.Write("\n ----------------\n\n");
  217. for(int i=0;i<tableroJ2.GetLength(0);i++){
  218. for(int j=0;j<tableroJ2.GetLength(1);j++){
  219. if(tableroJ2[i,j]==1){   // Si hay un barco
  220. posJ2[i,j]=tableroJ2[i,j];   // Guardo su posición
  221. tableroJ2[i,j]=(char)'-';   // y muestro agua por pantalla
  222. }
  223. if(tableroJ2[i,j]==0){
  224. tableroJ2[i,j]=(char)'-';
  225. }
  226. Console.Write("  "+(char)tableroJ2[i,j]);
  227. }
  228. Console.Write("\n");
  229. }
  230. //------
  231. for(int i=0;i<tableroJ2.GetLength(0);i++){
  232. for(int j=0;j<tableroJ2.GetLength(1);j++){
  233. if(posJ2[i,j]==1){
  234. tableroJ2[i,j]=posJ2[i,j];
  235. }
  236. }
  237. }
  238. Console.SetCursorPosition(32, 1);Console.Write("Turno J1 - "+nombreJ1);
  239. Console.SetCursorPosition(32, 2);Console.Write("-----------------\n\n");
  240. Console.SetCursorPosition(32, 4);Console.Write("Barcos: "+barcosJ1);
  241. Console.SetCursorPosition(32, 5);Console.Write("Has hundido: "+hundidoJ1);
  242. Console.SetCursorPosition(32, 6);Console.Write("Te han hundido: "+hundidoJ2);
  243. Console.SetCursorPosition(32, 7);Console.Write("Rondas: "+rondasJ1);
  244. Console.SetCursorPosition(32, 9);Console.Write("Atacar J1  ==> Fila: "+fila);
  245. Console.SetCursorPosition(32, 10);Console.Write("           ==> Columna: "+columna);
  246. Console.SetCursorPosition(32, 12);Console.Write("Has tocado agua. Pasas turno a J2.\n");
  247. }
  248. rondasJ1++;
  249. Thread.Sleep(2000);
  250. }
  251.  
  252. public void ataqueAlAzarDeJ2(){
  253. Console.Clear();
  254. Random r = new Random(); // elige Fila y Columna AL AZAR EN CADA RONDA pa atacar
  255. int rfila7 = r.Next(1,6), rcolumna7 = r.Next(1,8);
  256. Console.Clear();
  257. Console.Write("\n Mapa Jugador 1");
  258. Console.Write("\n ----------------\n\n");
  259. for(int i=0;i<tableroJ1.GetLength(0);i++){
  260. for(int j=0;j<tableroJ1.GetLength(1);j++){
  261. if(tableroJ1[i,j]==1){
  262. tableroJ1[i,j]=(char)'B';
  263. }
  264. if(tableroJ1[i,j]==0){
  265. tableroJ1[i,j]=(char)'-';
  266. }
  267. Console.Write("  "+(char)tableroJ1[i,j]);
  268. }
  269. Console.Write("\n");
  270. }
  271. Console.Write("\n\n Mapa Jugador 2");
  272. Console.Write("\n ----------------\n\n");
  273. for(int i=0;i<tableroJ2.GetLength(0);i++){ // Muestra los barcos J2
  274. for(int j=0;j<tableroJ2.GetLength(1);j++){
  275. posJ2[i,j]=0;
  276. if(tableroJ2[i,j]==1){   // Si hay un barco
  277. posJ2[i,j]=tableroJ2[i,j];   // Guardo su posición
  278. tableroJ2[i,j]=(char)'-';   // y muestro agua por pantalla
  279. }
  280. if(tableroJ2[i,j]==0){
  281. tableroJ2[i,j]=(char)'-';
  282. }
  283. Console.Write("  "+(char)tableroJ2[i,j]);
  284. }
  285. Console.Write("\n");
  286. }
  287. //------
  288. for(int i=0;i<tableroJ2.GetLength(0);i++){
  289. for(int j=0;j<tableroJ2.GetLength(1);j++){
  290. if(posJ2[i,j]==1){
  291. tableroJ2[i,j]=posJ2[i,j]; // Revivo los barcos J2 (antes los borré del mapa)
  292. }
  293. }
  294. }
  295. Console.SetCursorPosition(32, 1);Console.Write("Turno J2 - "+nombreJ2);
  296. Console.SetCursorPosition(32, 2);Console.Write("------------------\n\n");
  297. Console.SetCursorPosition(32, 4);Console.Write("Barcos: "+barcosJ2);
  298. Console.SetCursorPosition(32, 5);Console.Write("Has hundido: "+hundidoJ2);
  299. Console.SetCursorPosition(32, 6);Console.Write("Te han hundido: "+hundidoJ1);
  300. Console.SetCursorPosition(32, 7);Console.Write("Rondas: "+rondasJ2);
  301. Console.SetCursorPosition(32, 9);Console.Write("Atacar J2  ==> Fila: "); // Atacar J2 a J1
  302. Thread.Sleep(1500);
  303. Console.Write(rfila7);
  304. fila=rfila7;
  305. Console.SetCursorPosition(32, 10);Console.Write("           ==> Columna: ");
  306. Thread.Sleep(1500);
  307. Console.Write(rcolumna7);
  308. columna=rcolumna7;
  309. Thread.Sleep(1000);
  310. Console.Write("\n\n");
  311. }
  312.  
  313. public void realizarComprobacionesJ2(){
  314. repetirTirada = true;
  315. if(tableroJ1[fila-1,columna-1] == (char)'B'){
  316. Console.SetCursorPosition(32, 12);Console.Write("Barco Hundido. Vuelves a atacar jugador 2.\n");
  317. tableroJ1[fila-1,columna-1] = (char)'X';
  318. if(sonido == true){
  319. player.SoundLocation = ".\\sonido\\Explosion.wav";
  320. player.Play();
  321. }
  322. hundidoJ2++;
  323. barcosJ1--;
  324. }else if(tableroJ1[fila-1,columna-1] == (char)'A'){
  325. if(sonido == true){
  326. player.SoundLocation = ".\\sonido\\PosicionYaDada.wav";
  327. player.Play();
  328. }
  329. Console.SetCursorPosition(32, 12);Console.Write("Ya has atacado esta posición. Pasas turno.");
  330. }else if(tableroJ1[fila-1,columna-1] == (char)'X'){
  331. if(sonido == true){
  332. player.SoundLocation = ".\\sonido\\PosicionYaDada.wav";
  333. player.Play();
  334. }
  335. Console.SetCursorPosition(32, 12);Console.Write("Ya has hundido este barco. Pasas turno.");
  336. repetirTirada = false;
  337. }else{
  338. if(sonido == true){
  339. player.SoundLocation = ".\\sonido\\NoHayBarco.wav";
  340. player.Play();
  341. }
  342. Console.SetCursorPosition(32, 12);Console.Write("Has tocado agua. Pasas turno a J1.\n");
  343. tableroJ1[fila-1,columna-1]=(char)'A';
  344. }
  345. rondasJ2++;
  346. Thread.Sleep(2000);
  347. }
  348. }
  349. }
  350.  

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!  ;)


« Última modificación: 2 Febrero 2013, 18:52 pm por Dryken » En línea

Lo intentas y fracasas, lo intentas y fracasas pero fracasas realmente cuando dejas de intentarlo.

Calc Don v0.7 - C
http://foro.elhacker.net/programacion_cc/source_calculadora_calc_don_10-t366489.0.html

Hundir la flota v0.3 - C#
http://foro.elhacker.net/net/source_c_juego_hundir_la_flota_v01-t377794.0.html
spiritdead

Desconectado Desconectado

Mensajes: 296


Ver Perfil
Re: [Source C#] Juego: Hundir la flota v0.1
« Respuesta #1 en: 5 Diciembre 2012, 21:19 pm »

:) podrias crearlo en win-forms o WPF y crearle 1 servidor  con sockets :D para multi-player

es 1 idea

y si alguien es bueno en algoritmia podrias hacerle la (AI) :P


En línea

Facilitador De Tareas - Task Simplifier (FDT)
Dryken

Desconectado Desconectado

Mensajes: 117


El arte de vencer se aprende en las derrotas


Ver Perfil WWW
Re: [Source C#] Juego: Hundir la flota v0.1
« Respuesta #2 en: 5 Diciembre 2012, 21:59 pm »

La idea me encanta spiritdead, sería una chulada poder juegar en multiplayer pero aún tengo que aprender sobre sockets, me vi un post que hay aquí en el foro pero aún estoy como si no lo hubiera visto, los sockets me cuestan, a ver si poco a poco me entra  ;D

El tema de WFA no es complicado, pero antes que hacerlo a modo gráfico sería bueno que le mrjorará bastantes cosillas. Aún tiene errores que he de solucionar como

-marcar en el mapa donde se haya atacado en agua para no volver a dar en la misma posición

-generar un archivo de texto con los resultados de la partida...rondas

Hay muchas mas cosas pero la lista es interminable jeej xD

Lo de la IA queda en el aire, si alguien supiera quedaría un buen proyecto con todas estas ideas.
En línea

Lo intentas y fracasas, lo intentas y fracasas pero fracasas realmente cuando dejas de intentarlo.

Calc Don v0.7 - C
http://foro.elhacker.net/programacion_cc/source_calculadora_calc_don_10-t366489.0.html

Hundir la flota v0.3 - C#
http://foro.elhacker.net/net/source_c_juego_hundir_la_flota_v01-t377794.0.html
Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: [Source C#] Juego: Hundir la flota v0.1
« Respuesta #3 en: 5 Diciembre 2012, 22:50 pm »

... estructurar mejor el código, necesitas dividir ese largo código en métodos que luego te faciliten el ir añadiendo cosas :P

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Dryken

Desconectado Desconectado

Mensajes: 117


El arte de vencer se aprende en las derrotas


Ver Perfil WWW
Re: [Source C#] Juego: Hundir la flota v0.1
« Respuesta #4 en: 5 Diciembre 2012, 23:57 pm »

No te creas Novlucker que no me he fijado, cuando tengo que cambiar algo tengo que pararme a mirar todo el código a ver que parte es la que tengo que centrarme y es una gran espera mientras lo encuentro y no.

La POO aún no la he tocado, sólo la parte de programación estructurada, a ver si me pongo por mi cuenta cuando tenga un tiempo y lo organizo mejor. Me lío bastante con el tema de métodos, clases, objetos, algo de private, public...tengo un cacao mental increible  :xD
En línea

Lo intentas y fracasas, lo intentas y fracasas pero fracasas realmente cuando dejas de intentarlo.

Calc Don v0.7 - C
http://foro.elhacker.net/programacion_cc/source_calculadora_calc_don_10-t366489.0.html

Hundir la flota v0.3 - C#
http://foro.elhacker.net/net/source_c_juego_hundir_la_flota_v01-t377794.0.html
spiritdead

Desconectado Desconectado

Mensajes: 296


Ver Perfil
Re: [Source C#] Juego: Hundir la flota v0.1
« Respuesta #5 en: 6 Diciembre 2012, 00:58 am »

una vez q pruebes el POO, lo amaras ;)
En línea

Facilitador De Tareas - Task Simplifier (FDT)
Keyen Night


Desconectado Desconectado

Mensajes: 496


Nothing


Ver Perfil
Re: [Source C#] Juego: Hundir la flota v0.1
« Respuesta #6 en: 6 Diciembre 2012, 01:18 am »

... estructurar mejor el código, necesitas dividir ese largo código en métodos que luego te faciliten el ir añadiendo cosas :P

Saludos

 x2 Opino lo mismo, una buena estructura permite la fácil comprensión del código mas tarde a la hora de agregar mas funciones. La mejor forma de practicar en hacer aplicaciones y la manera excelente es hacer juegos ya que se aplica la máxima expresión de la lógica y el estructuramiento del código ;).
« Última modificación: 6 Diciembre 2012, 01:53 am por Keyen Night » En línea

La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...
Dryken

Desconectado Desconectado

Mensajes: 117


El arte de vencer se aprende en las derrotas


Ver Perfil WWW
Re: [Source C#] Juego: Hundir la flota v0.2
« Respuesta #7 en: 12 Diciembre 2012, 19:20 pm »

He sacado la v0.2 de Hundir la Flota con algunos cambios. Ya sé que el código a simple vista es un poco lioso pero espero que dentro de poco poder ordenarlo un poco con POO que ya estoy comenzando en el ciclo.

Pd: Según la gente la POO se ama, es muy facil, todo es posititvo...Por ahora lo que sé más que amarla me está confundiendo, espero cambiar dentro de poco de opinión porque si nooo  :xD
En línea

Lo intentas y fracasas, lo intentas y fracasas pero fracasas realmente cuando dejas de intentarlo.

Calc Don v0.7 - C
http://foro.elhacker.net/programacion_cc/source_calculadora_calc_don_10-t366489.0.html

Hundir la flota v0.3 - C#
http://foro.elhacker.net/net/source_c_juego_hundir_la_flota_v01-t377794.0.html
spiritdead

Desconectado Desconectado

Mensajes: 296


Ver Perfil
Re: [Source C#] Juego: Hundir la flota v0.2
« Respuesta #8 en: 13 Diciembre 2012, 02:10 am »

He sacado la v0.2 de Hundir la Flota con algunos cambios. Ya sé que el código a simple vista es un poco lioso pero espero que dentro de poco poder ordenarlo un poco con POO que ya estoy comenzando en el ciclo.

Pd: Según la gente la POO se ama, es muy facil, todo es posititvo...Por ahora lo que sé más que amarla me está confundiendo, espero cambiar dentro de poco de opinión porque si nooo  :xD

porque la POO es 1 estilo distinto de programacion, pero que te puede ayudar a simplificar el codigo de maneras q ni te imaginas :P y sobre todo cuando comienzas a usar instancias del tipo (class) por ejemplo, te facilita la vida
En línea

Facilitador De Tareas - Task Simplifier (FDT)
Dryken

Desconectado Desconectado

Mensajes: 117


El arte de vencer se aprende en las derrotas


Ver Perfil WWW
Re: [Source C#] Juego: Hundir la flota v0.3
« Respuesta #9 en: 2 Febrero 2013, 18:49 pm »

Después de llevarme un tiempo sin tocarlo me ha dado por volver a retomarlo un poco, le he echo algunos cambios importantes en cuanto a bugs, había bastantes, y entre otras cosas lo imprescindible que quería era pasar el código de estructura líneal a orientación a objetos.

Por ahora eson son los principales cambios, más adelante le pondré barcos de más posiciones para poder tocarlos y si vuelves a dar poder hundirlo...y algo más adelante haré multiplayer con sockets (ya tengo la idea medio echa). Por último me quiero dedicar a portarlo a WFA y mezclarlo con GDI+ u OpenTK según vea.

Pues nada, que os cunda gente! ^^
En línea

Lo intentas y fracasas, lo intentas y fracasas pero fracasas realmente cuando dejas de intentarlo.

Calc Don v0.7 - C
http://foro.elhacker.net/programacion_cc/source_calculadora_calc_don_10-t366489.0.html

Hundir la flota v0.3 - C#
http://foro.elhacker.net/net/source_c_juego_hundir_la_flota_v01-t377794.0.html
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Juego Hundir la Flota Con JAVA
Java
izel 4 9,753 Último mensaje 8 Diciembre 2010, 21:02 pm
por izel
Ayuda hundir la flota
Programación C/C++
driebesXI 1 2,720 Último mensaje 19 Mayo 2015, 19:27 pm
por driebesXI
Problema con Juego de hundir la flota
Programación C/C++
jpvroq 0 2,331 Último mensaje 31 Diciembre 2016, 18:21 pm
por jpvroq
Maquina Inteligente Hundir la flota (Battleship) código C
Programación C/C++
Nakkuu 6 7,335 Último mensaje 31 Diciembre 2017, 17:45 pm
por Serapis
Python 3 Codigo de Hundir la flota
Programación General
Weng Weng 0 2,412 Último mensaje 25 Marzo 2019, 16:49 pm
por Weng Weng
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines