Evaluando propuestas

Crear un juego

Publicado el 16 Octubre, 2019 en Programación y Tecnología

Sobre este proyecto

Abierto

Objetivo:
El propósito de esta tarea obligatoria es que el estudiante realice un programa en C/C++ que
juegue contra el usuario un juego de arqueros
1
El Juego
El juego consiste de un mapa representado mediante una cuadrícula de cinco filas y cinco
columnas como el que se presenta a continuación.
A
X
X
X
X
X
B
Donde A representa al arquero del jugador 1, B represnta al arquero del jugador 2 y X
representa un árbol.
El objetivo del juego consiste en eliminar al otro arquero mediante una flecha.

En cada turno
un jugador debe decidir si desea desplazarse o disparar una flecha. Los desplazamientos se
pueden realizar en forma horizontal o vertical de una casilla a la vez, siempre y cuando el
jugador no se salga de los limites del mapa y no intente desplazarse hacia un lugar con un
árbol o donde se encuentre otro arquero.
Los disparos también son realizados en forma horizontal o vertical, las flechas avanzan en la
dirección del disparo hasta que se interpone un árbol, sale de los limites del mapa o impactan
contra el otro arquero , en cuya caso el jugador que realizó el disparo gana el juego.


2
Representación del tablero y jugada de la máquina
La representación del mapa sugerida es:
#define filas 5
#define columnas 5
char mapa[filas][columnas]
el tablero deberá contener solamento los caracteres#define vacio ' '
#define arqueroa 'a'
#define arquerob 'b'
#define arbol 'x'
el tablero no lo deben inicializar ustedes, sino que deben usar las funciones que les brindamos en el
archivo maquina.o, que pueden descargar de la página del curso, cuyos cabezales son los siguientes:
void Gettablero(char mapa[filas][columnas]);
void gettablero2(char mapa[filas][columnas]);
la jugada de la máquina tampoco la deben implementar, sino que debe usar la función que les
brindamos también en el archivo maquina.o, cuyo cabezal es:
void Jugadamaquina(char mapa[filas][columnas], enum movimiento* jugada, enum
direccion* dir};
donde los enumerados movimiento y dirección están definidos de la siguiente forma:
enum movimientos{disparar,mover};
enum direccion{arriba,abajo,derecha,izquierda};
esta función recibe la variable que representa el mapa y retorna la jugada realizada en la variable
jugada(disparar o mover) y la dirección en la variable dir.
3
Solución arqueros.c
En la página del curso se encuentran 2 archivos, “maquina.h” y “maquina.o” para arquitecturas de 32
bits y 64 bits. La solución se debe entregar en el archivo “arqueros.c”.

Los archivos “maquina.h” y
“maquina.o” no los deben modificar en absoluto.
Algunos puntos a tener en cuenta:
• El juego debe permitir elegir quien empieza, si la máquina o el jugador
• Cada vez que se modifica el tablero se debe mostrar en pantalla, y además se debe indicar la
última jugada realizadas
• Cuando haya un ganador se debe indicar inmediatamente y terminar el programación• Si el jugador ingresa un comando no válido, se debe indicar el error y volver a solicitar el
ingreso
• Si el usuario ingresa como jugada una posición ocupada se debe mostrar el error y volver a
solicitar el ingreso
• La jugada de la máquina no la deben implementar, deben usar la que se les da en los archivos
mencionados
4
Recomendaciones
Se calificará además de la lógica correcta, la utilización de un buen estilo de programación
de acuerdo a los criterios impartidos en el curso. Se hará énfasis en buenas prácticas de
programación como:
● Identación
● Utilización correcta de las estructuras de control
● Algoritmos razonablemente eficientes
● Uso de comentarios
● Uso de constantes
● Uso de nombre nemotécnicos
Formato de entrega:
Se deberá entregar en formato digital un archivo tar, targz, tgz, zip por ejemplo
nombre.apellido.zip o nombreApellido.tar.gz conteniendo los siguientes elementos:

Documentación en formato PDF que contenga
◦ Caratula, con nombre y cédula del estudiante, fecha de la tarea, carrera, materia y
número de obligatorio.


◦ Listado de funciones utilizadas y explicación como se utilizaron
◦ Problemas encontrados
◦ Pruebas de testing realizadas

Archivo arqueros.c

Categoría Programación y Tecnología
Subcategoría Programación Web
¿Cuál es el alcance del proyecto? Crear un nuevo sitio personalizado
¿Es un proyecto o una posición? Un proyecto
Actualmente tengo Tengo las especificaciones
Disponibilidad requerida Según se necesite
Integraciones de API Otros (Otras APIs)
Roles necesarios Programador

Plazo de Entrega: No definido

Habilidades necesarias