- 1

Fundamentos de Programación con Python para Principiantes
02:04 - 2

Instalación y Uso Básico de Python en Windows y Mac
08:10 - 3

Semántica y Sintaxis en Programación Python
10:15 - 4
Práctica: Te doy la bienvenida a los ejercicios interactivos
00:00 - 5

Manejo de Cadenas y Operaciones Básicas en Python
13:06 - 6

Tipos de Datos en Python: Enteros, Flotantes y Booleanos
07:22 - 7
Dominio de la función `print` en Python: usos y formatos avanzados
04:00 - 8

Operaciones matemáticas avanzadas en Python: módulo, potencia y más
11:01 - 9

Entrada de información y manejo de tipos de datos en Python
04:53
Desarrollo del juego Batalla Naval en Python
Clase 36 de 63 • Curso de Python
Contenido del curso
- 23

Programación Orientada a Objetos en Python: Clases y Métodos Básicos
14:11 - 24

Gestión de Biblioteca con Programación Orientada a Objetos
18:07 - 25

Herencia y Polimorfismo en Programación Orientada a Objetos
13:57 - 26

Programación Orientada a Objetos: Implementación de Clases y Herencia
13:10 - 27

Polimorfismo en Programación Orientada a Objetos
06:21 - 28

Herencia y Uso de la Función super() en Python
07:28 - 29
Programación Orientada a Objetos: Atributos, Métodos y `super()` en Python
05:06
- 37
Programación Avanzada en Python: POO, Excepciones y Proyectos
01:45 - 38

Escritura de Código Pytónico y Buenas Prácticas en Python
03:58 - 39

Comentarios y Docstrings: Buenas Prácticas en Programación
07:01 - 40

Tiempo de vida y alcance de variables en Python
14:11 - 41

Anotaciones de Tipo en Python para Código Más Legible
13:12 - 42

Validación de Tipos y Manejo de Excepciones en Python
13:05 - 43

Estructuras de Datos Avanzadas en Python: Collection y Enumeraciones
13:15
- 47

Uso de Métodos Mágicos en Python
06:47 - 48
Sobrecarga de Operadores en Python: Personaliza Comportamiento de Clases
04:18 - 49

Ejecutar scripts Python con `if __name__ == '__main__'`
05:42 - 50

Metaprogramación en Python: Métodos `__new__` y `__init__`
03:59 - 51

Uso de *args y **kwargs en funciones de Python
14:32 - 52

Métodos y Atributos Privados y Protegidos en Python
09:26 - 53

Uso de Property en Python: Getter, Setter y Eliminación de Atributos
07:56 - 54

Métodos estáticos y de clase en Python
07:46
En este proyecto, crearás un juego de Batalla Naval (Battleship) en Python, donde dos jugadores colocan sus barcos en un tablero y se turnan para atacar las posiciones del oponente hasta que uno de los jugadores hunda todos los barcos del otro. Sigue estos pasos detallados para construir el juego.
Paso 1: Define la Clase Ship
- Crea la clase
Ship:- Define el constructor
__init__que recibanameysizecomo parámetros. - Agrega atributos:
self.name,self.size,self.positions(una lista vacía para las posiciones del barco) yself.hits(inicializado en 0).
- Define el constructor
- Método
place_ship:- Este método coloca el barco en el tablero (
board) según la posición inicial (start_row,start_col) y la dirección (direction). - Verifica si el barco cabe en el tablero. Si no cabe, devuelve
False. - Si la posición está libre (
' '), almacena las posiciones en la listapositions. Si no, devuelveFalse. - Actualiza el tablero con el símbolo del barco (
self.name[0]), almacena las posiciones enself.positions, y devuelveTrue.
- Este método coloca el barco en el tablero (
- Método
hit:- Incrementa el contador
self.hits. - Devuelve
Truesi el número de impactos (self.hits) es igual al tamaño del barco (self.size), indicando que el barco ha sido hundido.
- Incrementa el contador
Paso 2: Define Clases Específicas de Barcos
-
Crea las subclases:
- Crea una clase
Destroyerque herede deShipy tenga un tamaño de 2. - Crea una clase
Submarineque herede deShipy tenga un tamaño de 3. - Crea una clase
Battleshipque herede deShipy tenga un tamaño de 4.
class Destroyer(Ship): def __init__(self): super().__init__('Destructor', 2) class Submarine(Ship): def __init__(self): super().__init__('Submarino', 3) class Battleship(Ship): def __init__(self): super().__init__('Acorazado', 4) - Crea una clase
Paso 3: Define la Clase Player
- Crea la clase
Player:- Define el constructor
__init__que recibanamecomo parámetro. - Crea un tablero
self.boardde 10x10, representado por una lista de listas, inicializado con espacios en blanco' '. - Crea una lista
self.shipspara almacenar los barcos del jugador. - Crea un segundo tablero
self.hitspara registrar los ataques.
- Define el constructor
- Método
place_ships:- Crea instancias de
Destroyer,SubmarineyBattleship. - Para cada barco, pide al jugador que ingrese la fila, columna y dirección (H para horizontal, V para vertical) donde desea colocar el barco.
- Llama a
place_shippara intentar colocar el barco. Si no es posible, solicita nuevamente la entrada del usuario.
- Crea instancias de
- Método
print_board:- Imprime el tablero de juego para mostrar la posición actual de los barcos o los impactos.
- Método
attack:- Solicita al jugador la fila y columna para atacar.
- Verifica si la posición es válida y si el ataque es un impacto o agua.
- Actualiza el tablero del oponente y el tablero de impactos del jugador en consecuencia.
- Si se impacta un barco, verifica si ha sido hundido.
- Método
all_ships_sunk:- Devuelve
Truesi todos los barcos del jugador han sido hundidos.
- Devuelve
Paso 4: Define la Clase BattleshipGame
- Crea la clase
BattleshipGame:- Define el constructor
__init__que inicialice dos jugadores (player1yplayer2).
- Define el constructor
- Método
play:- Pide a cada jugador que coloque sus barcos en el tablero.
- Alterna turnos entre los jugadores para atacar el tablero del oponente.
- Finaliza el juego cuando todos los barcos de un jugador han sido hundidos, declarando al otro jugador como ganador.
Paso 5: Ejecuta el Juego
-
Crea una instancia de
BattleshipGamey llama al métodoplay()para iniciar el juego.game = BattleshipGame() game.play()
Al ejecutar el programa, los jugadores podrán colocar sus barcos en el tablero y se turnarán para atacar hasta que uno de los jugadores hunda todos los barcos del oponente, ganando así el juego.
Este proyecto te permitirá practicar la manipulación de listas, clases, métodos, y cómo gestionar la interacción entre varias clases en Python.
¡Diviértete creando tu propio juego de Batalla Naval!