0% encontró este documento útil (0 votos)
1 vistas14 páginas

Proyecto Final

El documento presenta un anteproyecto para el desarrollo de un juego por turnos que permite a los usuarios interactuar con una máquina utilizando conceptos fundamentales de programación. Se detallan los objetivos del proyecto, la metodología de diseño, y la implementación de estructuras de control, funciones y manejo de archivos. Al final, se concluye que el proyecto cumple con los objetivos propuestos y fortalece las competencias en programación a través de un videojuego funcional.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
1 vistas14 páginas

Proyecto Final

El documento presenta un anteproyecto para el desarrollo de un juego por turnos que permite a los usuarios interactuar con una máquina utilizando conceptos fundamentales de programación. Se detallan los objetivos del proyecto, la metodología de diseño, y la implementación de estructuras de control, funciones y manejo de archivos. Al final, se concluye que el proyecto cumple con los objetivos propuestos y fortalece las competencias en programación a través de un videojuego funcional.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Anteproyecto de Programación Básica.

Juego Por Turnos

Daniel Andrés Fajardo Gomez. Código: 20252020127

María José Tatiana Cubillos Ríos. Código: 20252025024

David Fernando Maya Diaz. Código: 20252020131.

Universidad Distrital Francisco José De Caldas

Facultad De Ingeniería

Programación Básica

2025
Objetivos

Objetivo General

Diseñar un juego interactivo entre el usuario y la máquina que permita aplicar


estructuras fundamentales de programación (condicionales, ciclos arreglos, funciones,
lectura y escritura de archivos) mediante un sistema de combate por turnos.

Objetivos Específicos

Definir las estructuras de datos (arreglos) para almacenar las características de los
personajes del juego, tales como vida, ataque, defensa y energía.

Implementar funciones que representen las acciones posibles dentro del juego,
como atacar, defender, huir u ocultarse, permitiendo la interacción entre el usuario y la
máquina.

Aplicar estructuras condicionales y ciclos de control que regulen el flujo del juego,
determinen los resultados de las acciones y definan las condiciones de victoria o
derrota.

Leer desde un archivo de texto los niveles del juego, con su descripción y dificultad,
para que el jugador avance progresivamente enfrentando enemigos con diferentes
atributos.

Registrar las jugadas del juego en un archivo, incluyendo la fecha, hora y tiempo
total de la partida, para llevar un control de las partidas realizadas.
Resumen.

Este proyecto trata sobre la creación de un juego por turnos entre el usuario y la
máquina. En el juego, cada uno tiene un personaje con puntos de vida, ataque, defensa
y energía. El jugador puede elegir su personaje, mientras que el de la máquina se elige al
azar con la función random, para que cada partida sea diferente y más divertida.

Durante el juego, el jugador puede decidir qué acción realizar en cada turno,
como atacar, defenderse o huir. Con cada acción cambian los puntos de vida y el
resultado del juego. Se usan condicionales para decidir lo que pasa según la acción del
jugador, y ciclos para que el juego siga funcionando mientras ninguno de los dos haya
perdido.

También se usan funciones para organizar las partes del programa, y arreglos
para guardar la información de los personajes. Además, el juego puede leer los niveles
desde un archivo de texto, donde están guardadas las misiones o enemigos con distinta
dificultad. Al final de cada partida, el programa guarda los resultados en otro archivo,
registrando la fecha, la hora, el resultado y el tiempo que duró el juego.

Palabras clave: Funciones, random, archivos, partidas.

Abstract.

This project focuses on creating a turn-based game between a user and the
computer. In the game, each player controls a character with hit points, attack, defense,
and energy. The player chooses their character, while the computer's character is
randomly selected using a random function, ensuring that each game is different and
more fun.

During the game, the player decides which action to take on each turn, such as
attacking, defending, or fleeing. Each action changes the player's hit points and the
game's outcome. Conditional statements are used to determine the outcome based on
the player's actions, and loops ensure the game continues until either player loses.

Functions are also used to organize the program's structure, and arrays are used
to store character information. Additionally, the game can read levels from a text file
containing missions or enemies of varying difficulty. At the end of each game, the
program saves the results to another file, recording the date, time, outcome, and game
duration.

Keywords: Functions, random, files, games.


Marco Teórico

Programación

La programación es el proceso mediante el cual se diseñan, escriben, prueban y


mantienen programas informáticos. Su objetivo principal es crear soluciones a
problemas mediante el uso de algoritmos y lenguajes de programación. En este proyecto
se utiliza la programación como herramienta principal para desarrollar un juego
interactivo por turnos, aplicando estructuras básicas del lenguaje Python.

Algoritmo

Un algoritmo es un conjunto de pasos ordenados y finitos que permiten resolver un


problema. Todo programa debe basarse en uno o varios algoritmos para garantizar su
correcto funcionamiento. En el juego desarrollado, los algoritmos permiten controlar el
flujo del combate, la selección de personajes, las decisiones del usuario, las acciones
del enemigo y el registro de la partida.

Estructuras de Control

Las estructuras de control permiten modificar el flujo de ejecución de un programa.


Las principales son:

• Condicionales (si, si no): permiten tomar decisiones según ciertas condiciones.

• Ciclos (mientras, para): permiten repetir instrucciones un número determinado


de veces o mientras se cumpla una condición.

En este proyecto, estas estructuras se utilizan para controlar los turnos del juego,
verificar si el personaje sigue con vida, validar las opciones del usuario y repetir los
combates conforme se avanza de nivel.

Funciones

Las funciones son bloques de código que permiten dividir un programa en partes más
pequeñas y organizadas, facilitando su comprensión, reutilización y mantenimiento. En
el juego se implementan funciones para atacar, defender, huir, generar enemigos,
controlar turnos y registrar la partida.
Arreglos y Estructuras de Datos

Los arreglos permiten almacenar múltiples valores en una sola variable. En este
proyecto se utilizan arreglos para almacenar los personajes disponibles, los niveles del
juego y el registro de los movimientos realizados durante el combate.

Programación Orientada a Eventos

El juego funciona en base a eventos, es decir, cada acción del usuario (atacar,
defender o huir) genera una respuesta del sistema. Esta interacción constante permite
una experiencia dinámica y controlada por el jugador.

Generación de Números Aleatorios

Los números aleatorios permiten introducir variación en el comportamiento del


enemigo, así como en el éxito o fracaso de la huida. Esto hace que cada partida sea
diferente, aumentando el realismo y la dificultad del juego.

Manejo de Archivos

El manejo de archivos permite almacenar información de manera permanente. En


este proyecto se utiliza para guardar el registro de cada partida, incluyendo el resultado,
el tiempo jugado y los movimientos realizados. Esto permite llevar un historial del
desempeño del jugador.

Juegos por Turnos

Los juegos por turnos son aquellos en los que los participantes realizan acciones
de manera alternada. Este tipo de estructura permite al jugador tomar decisiones
estratégicas en cada turno. El proyecto sigue este modelo, permitiendo al usuario actuar
primero y luego al enemigo.
Planteamiento de Problema

En el desarrollo de este proyecto se buscó aplicar de manera práctica los


conceptos fundamentales de la programación, tales como las estructuras
condicionales, los ciclos, los arreglos, las funciones y el manejo de archivos.

Se planteó el diseño de un juego interactivo por turnos entre el usuario y la


máquina, en el cual ambos controlan personajes con distintas características como
vida, ataque, defensa y energía. A través de este juego, el usuario puede tomar
decisiones en cada turno y observar cómo estas afectan el desarrollo de la partida.

Este proyecto permite evidenciar cómo los conceptos básicos de programación


pueden integrarse en una aplicación real, funcional y entretenida, facilitando así su
comprensión.

Metodología

Análisis del problema

Se analizó la necesidad de crear un programa que permitiera aplicar todos los


temas vistos en la asignatura, concluyendo que un juego por turnos era una alternativa
adecuada.

Diseño del juego

Se definieron los personajes, sus características principales (vida, ataque,


defensa y energía), las acciones que se pueden realizar durante el juego y las posibles
condiciones de finalización.

Definición de estructuras de datos

Se utilizaron arreglos (listas de diccionarios) para almacenar los datos de los


personajes, permitiendo trabajar con una estructura similar a una matriz de
información.

Creación de funciones

Se implementaron funciones para cada acción principal del juego, tales como
atacar, defender, huir, leer niveles desde un archivo y registrar las partidas.
Implementación del ciclo del juego

Se utilizó un ciclo repetitivo para que el juego se mantuviera activo mientras el


jugador y el enemigo conservaran puntos de vida.

Pruebas del programa

Se realizaron diversas pruebas para verificar que las acciones funcionaran


correctamente, que los niveles se cargaran adecuadamente desde el archivo y que las
partidas se registraran al finalizar el juego.

Pseudocódigo del juego


INICIO

Mostrar mensaje de bienvenida


Mostrar lista de personajes
Leer opción del jugador
Asignar personaje seleccionado al jugador

Nivel ← 1
Iniciar contador de tiempo
SeguirJugando ← VERDADERO

MIENTRAS SeguirJugando = VERDADERO Y Vida del jugador > 0 HACER

Cargar enemigo según el nivel

SI no existe enemigo ENTONCES

Mostrar mensaje "No hay más enemigos. Fin del camino."

SALIR DEL CICLO

FIN SI

Mostrar datos del enemigo

MIENTRAS Vida del jugador > 0 Y Vida del enemigo > 0 HACER

Mostrar opciones:

1. Atacar

2. Defender

3. Huir

Leer opción del jugador

SI opción = Atacar ENTONCES

Mostrar tipos de ataque

Leer tipo de ataque


Calcular daño según ataque elegido

Restar vida al enemigo

FIN SI

SI opción = Defender ENTONCES

Aumentar defensa del jugador

FIN SI

SI opción = Huir ENTONCES

Generar número aleatorio

SI el número indica escape exitoso ENTONCES

Mostrar mensaje "El jugador huyó"

SALIR DEL COMBATE

SINO

Mostrar mensaje "No logró huir"

FIN SI

FIN SI

SI Vida del enemigo ≤ 0 ENTONCES

Mostrar mensaje "Enemigo derrotado"

Aumentar nivel

SALIR DEL COMBATE

FIN SI

// Turno del enemigo

Elegir acción del enemigo de forma aleatoria

SI el enemigo ataca ENTONCES

Calcular daño

Restar vida al jugador

SINO

El enemigo se defiende

FIN SI

Mostrar estado actual del jugador y del enemigo

ImFIN MIENTRAS

SI Vida del jugador ≤ 0 ENTONCES


Mostrar mensaje "Has sido derrotado"

SeguirJugando ← FALSO

SINO

Preguntar si desea continuar

SI responde NO ENTONCES

SeguirJugando ← FALSO

FIN SI

FIN SI

FIN MIENTRAS

Detener contador de tiempo


Registrar resultado de la partida
Mostrar tiempo total jugado

FIN

Diagrama de flujo del seudocódigo

El diagrama de flujo correspondiente al pseudocódigo del videojuego, el cual fue


elaborado utilizando la herramienta PSeInt. En este diagrama se representa de forma
estructurada el inicio del programa, la selección del personaje y el ciclo principal del
juego, donde se desarrollan los combates por turnos. Se incluyen las decisiones del
jugador (atacar, defender o huir), la respuesta automática del enemigo y las condiciones
de victoria derrota o huida. Finalmente, se muestra el registro de la partida y el cierre del
programa. El uso de PSeInt permitió una adecuada visualización de la lógica del sistema
antes de su implementación en el lenguaje de programación.
Nota: Elaboración propia de autores (2025)
Resultados

Durante el desarrollo del proyecto se logró diseñar e implementar un videojuego


de combate por turnos completamente funcional utilizando el lenguaje de
programación Python. El sistema permite al usuario seleccionar un personaje,
enfrentarse a diferentes enemigos a través de múltiples niveles y tomar decisiones
estratégicas durante cada turno de combate.

El programa respondió correctamente a las acciones del jugador, tales como


atacar, defender y huir, mostrando de forma clara los cambios en la vida de los
personajes y el resultado de cada enfrentamiento. Asimismo, se logró implementar un
sistema de control de turnos eficiente, en el cual el jugador ejecuta una acción y
posteriormente el enemigo responde de manera automática.

Uno de los resultados más relevantes fue la correcta implementación del


registro de partidas mediante archivos de texto, donde se almacena información como
el resultado del combate, los movimientos realizados, el tiempo de juego y el estado
final del jugador. Esto permitió evidenciar el correcto uso del manejo de archivos
dentro del programa.

Durante las pruebas realizadas, el sistema mostró un comportamiento estable,


sin errores críticos que impidieran su ejecución. Además, se validó el correcto uso de
estructuras de control, funciones, arreglos y generación de números aleatorios. En
general, los resultados obtenidos demuestran que el videojuego cumple con los
objetivos propuestos y presenta un funcionamiento adecuado desde el punto de vista
lógico y técnico.
Conclusiones

El desarrollo de este proyecto permitió aplicar de manera práctica los


fundamentos de la programación estructurada, fortaleciendo el aprendizaje en el uso
de estructuras de control, funciones, arreglos y manejo de archivos en el lenguaje
Python.

Se concluye que la correcta división del programa en funciones facilitó la


organización del código, su comprensión y su mantenimiento. Además, el uso de ciclos
y condicionales permitió controlar de forma eficiente el flujo del juego y la toma de
decisiones tanto del jugador como del enemigo.

El manejo de archivos fue un aporte importante al proyecto, ya que permitió


almacenar de forma permanente la información de las partidas, lo cual demuestra la
importancia de la persistencia de datos en el desarrollo de aplicaciones.

Asi mismo, la implementación de números aleatorios hizo que cada partida


fuera diferente, aumentando el nivel de dificultad y dinamismo del juego. Esto permitió
simular de mejor manera el comportamiento del enemigo.

Finalmente, se concluye que el proyecto cumplió satisfactoriamente con los


objetivos planteados, logrando desarrollar un videojuego funcional que integra
correctamente los conceptos básicos de programación, fortaleciendo así las
competencias del estudiante en el área de desarrollo de software.
Referencias

Downey, A. (2016). Piense en Python: Cómo pensar como un científico de la


computación (2.ª ed.). Green Tea Press.

García, J., & Martín, F. (2018). Introducción a la programación con Python. Alfaomega.

Python Software Foundation. (2023). Documentación oficial de Python.


[Link]

Sierra, K., & Bates, B. (2015). Aprenda a programar con Python. O'Reilly Media.

Zelle, J. (2017). Programación en Python: Introducción a la informática. McGraw-Hill.

También podría gustarte