Archivo de la categoría: Programacion

Ejercicio de generacion de vectores

Se pide desarrollar una aplicación para ayudar a los Game Masters a dirigir una mesa de rol.

El tamaño de la party es ajustable por una macro (#define)

El juego contempla los siguientes atributos de cada jugador:

  • Nivel
  • Fuerza
  • Constitución
  • Agilidad
  • Inteligencia

El estado de un jugador en un momento dado del juego está dado por los siguientes valores

  • Vida
  • Mana
  • Stamina

El máximo que pueden tomar cada uno de estos valores (Cuando el jugador se cura, revive, etc) está dado por las siguientes ecuaciones.

  • Max. Vida = Nivel * Contstitución + Nivel * 0.5 * Agilidad + Nivel * 0.5 * Fuerza
  • Max. Mana = Nivel * Inteligencia * 2 – 0.5 * Fuerza * Nivel
  • Max. Stamina = Nivel * Agilidad * 2 + Nivel * Inteligencia * 0.5 + Nivel * Fuerza * 0.5

Se pide:

Presente un menú de opciones que permita realizar las siguientes operaciones:

  1. Ingresar jugadores: Ingresar los atributos de todos los jugadores por teclado
  2. Calcular atributos: Calcular en base a los atributos de la party, los máximos de cada uno de los valores de estado y los almacene en un vector
  3. Mostrar valores: Mostrar por pantalla todos los valores asociados a la party
  4. Resetear estado: Vida, Mana, y Stamina vuelven al estado maximo.
  5. Subir de nivel: Se ingresa un numero de jugador al cual se le incrementa el nivel en uno. Despues de esta acción el Game Master deberá ejecutar la opcion 2 para volver a calcular los atributos en base al nuevo nivel.
  6. Duelo: Ingresar el numero de dos jugadores, dichos jugadores se batirán a duelo. Cada jugador atacará al otro. Al jugador que ataca se le restan tantos puntos de stamina como su fuerza. Al jugador que es atacado, se le restan tantos puntos de vida como la fuerza del jugador contrario. Si alguno de los jugadores no tiene mas Stamina, no podra atacar.
  7. Continuara…

Programación en C – Ejercicio integrador de Vectores

Desarrolle una aplicación que permita gestionar de manera interactiva el contenido de un vector de enteros.

El tamaño del vector debe ser configurable en tiempo de compilación mediante una macro.

El programa deberá ofrecer al usuario un menú con las siguientes opciones:

1) Inicializar con ceros

2) Modificar valor de una posición

3) Imprimir el valor de una pocición dada

4) Imprimir el contenido de todo el vector

5) Mostrar el valor máximo contenido en el vector

6) Salir

Vectores en C: Lo que hay que saber

En este artículo veremos un resumen de la terminología y las operaciones básicas que utilizamos al trabajar con vectores. Todos los ejercicios y temas que veamos relativos a vectores en adelante, estarán basados en estos conceptos. ¡Así que presten atención!

Definiciones

  • Vector: Es una estructura de datos que permite contener una cantidad fija (tamaño) de datos (elementos o valores) del mismo tipo bajo un mismo nombre, diferenciadas por un índice o posición.
  • Tamaño / Dimension: Cantidad máxima de elementos que puede contener un vector.
  • Indice / Posición: Numero que identifica a uno de los valores que contiene el vector.
  • Elemento / Valor: Valor contenido por el vector en una determinada posición.
  • Inicializar: Acción de asignar valores iniciales a un vector. Normalmente implica recorrer el vector para asignar los valores.
  • Recorrer: Acción de pasar por todas las posiciones de un vector (por medio de un cíclo, tipicamente for)
  • Ordenar: Acción de cambiar las posiciones de los elementos del vector para organizarlos de acuerdo a un criterio de ordenamiento (De mayor a menor, de menor a mayor, de acuerdo a otro vector indice, etc)

Sintaxis:

Se declara como:

tipo nombre[tamaño]; //Ej: int puntajes[10];

Se usa como:

nombre[posicion]=valor; //Ej: puntajes[5]=9;

Se consulta como:

nombre[posicion] // Ej: if(puntajes[5] > 10) printf(“El jugador 5 tiene más de 10 puntos”);

Facts:

  • El tamaño siempre es fijo y constante. Siempre en la declaración debo utilizar un valor constante para el tamaño (constante numérica, o macro).
  • Las posiciones del vector se numeran a partir del 0. Así un vector declarado con tamaño 10 tendrá sus elementos numerados con indices del 0 al 9.
  • Al igual que las variables, los vectores deben ser inicializados ya que pueden contener basura.

Ejemplos:

//Constantes (Macros)
#define MAX_USUARIOS 20

//Declaraciones
int vJugadores[10]; //Vector de enteros de 10 posiciones con nombre vJugadores
int vUsuarios[MAX_USUARIOS]; //Vector de enteros de MAX_USUARIOS posiciones. Se utiliza una macro para definir el numero de posiciones de forma que se pueda cambiar fácilmente.
float vfCoordenadas[3]; //Vector de tipo float de tres posiciones.
float vfCoordenadas2[3]={1.0, 0.0, -2.01}; //Declaro un vector de tres posiciones e inicializo los valores
int i,iMax,iPosMax;
int vAcumuladores[1000];

//Uso:
vJugadores[0] = 3; //Seteo el valor 3 la posición 0
vJugadores[a] = 1; //Seteo en la posición a, el valor 1, donde a es una variable entera. (Si a=1
vJugadores[2] = vJugadores[0]; //Seteo en la posición 2, el valor de la posición 0.

//Recorrido
/* Normalmente se recorren los vectores con un ciclo for, utilizando el contador del ciclo como índice. A continuación algunos ejemplos */

for(i=0;i<MAX_USUARIOS;i++){ //Imprime todos los elementos del vector:
	printf(“El usuario %d tiene el valor %d”,i,vUsuarios[i]);
}

//Inicializacion
/*Los vectores, al igual que las variables, deben ser inicializados antes de usarlos para limpiar basura que puedan llegar a contener. Si el vector es muy grande, la sintaxis expuesta en las declaraciones puede resultar poco práctica. Por ello, lo que se suele hacer es recorrer el vector y asignar su valor inicial.*/

for(i=0; i<1000;i++){ //Inicializo todas las posiciones del vector con el valor 0.
	vAcumuladores[i]=0; 
}

//Maximos y minimos

iPosMax=0;
for(i=1;i<3;i++){
	if(vfCoordenadas2[i]>vfCoordenadas2[iPosMax]){
		iPosMax=i;
	}
}
printf(“La coordenada más grande es %d, con el valor %d”,vfCoordenadas2[iPosMax],iPosMax);