Juego del laberinto C

Iniciado por Rpgmakero, 23 Febrero 2011, 10:11 AM

0 Miembros y 1 Visitante están viendo este tema.

Rpgmakero

Muy buenas a todos. Es la primera vez que escribo, espero que podáis resolverme algunas dudas sin que sea mucha molestia :).

Soy estudiante de primer curso de Ingeniería informática y me han mandado como trabajo crear un juego en c. El juego consiste en un laberinto de 5x5 donde hay un protagonista, que es representado por el carácter "O", unos obstáculos, "X", monstruos, "M", y un tesoro "D". Ni el protagonista ni los monstruos podrán atravesar los obstáculos. Los monstruos se mueven de forma aleatoria por el tablero y pueden caer en la misma casilla. El objetivo es llegar al tesoro sin ser cogido por ningún monstruo y evitando obstáculos. El juego es sencillo ya que el tablero es imprimido en el mismo terminal mediante carácteres, es decir, algo así:

- - - - D
- - - X X
- X - - -
X - - - -
O - X X -
Los monstruos aparecerían de forma aleatoria.

Bien, la verdad es que no tengo mucha idea de cómo empezar y me gustaría leer algunas ideas generales de cómo crearlo. Obviamente no pretendo que me contesteis con el juego creado ni nada así, sólo saber qué idea general debería tener para empezar a programar.

Gracias de antemano! ^^

anonimo12121

1- bucle
2- el camino
3- if " me refiero a que si no es esto no puedes hacer esto"

con esto creo que podrias hacer.
Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746

namber

ola!!! tengo q programar el mismo juego, pero tengo un problema al introducir los monstruos, nose como hacerlo. Alguna idea¿? me seria de gran ayuda.

gxg

a namber :

Como el tablero tiene 5*5=25 posiciones tienes que generar un numero aleatorio entre [1..25], si dicha casilla hay un obstaculo o el protagonista generas otro numero aleatorio, asi con los n Moustros.

Para que te sea mas facil el acceso a la matriz si quieres puedes generar 2 numeros aleatorios entre [1..5].

N0body

#4
CitarComo el tablero tiene 5*5=25 posiciones tienes que generar un numero aleatorio entre [1..25], si dicha casilla hay un obstaculo o el protagonista generas otro numero aleatorio, asi con los n Moustros.
Eso se hace mucha veces, pero definitivamente no me agrada.
Tiene una terminación indefinida, si el número aleatorio te sale siempre una casilla ocupada por obstaculos. Puede ser todo lo improbable que quieras, pero creo que es mala programación fiarse de la probabilidad de que un programa termine o no.

La cantidad de casilleros para colocar monstruos es 24-numero de obstáculos (para todos los monstruos, ya que los siguientes que coloques pueden superponerse dice).
Yo haría lo siguiente (que conste que no estoy haciendo la tarea de nadie porque no digo como implementarlo):
para simplificarlo, mi tablero es de 3x3=9 casillas
nº de obstaculos: 2
nº de monstruos: 3
Tablero inicial:
0 0 0 0 0 0 0 0 0
Elijo aleatoriamente un numero del 0 al 8-obstaculos ubicados hasta el momento (cantidad de posiciones disponibles)
numero elegido: 2
Tablero luego de colocar el obstaculo
0 0 'X' 1 1 1 1 1 1
Elijo aleatoriamente un numero del 0 al 8-obstaculos ubicados hasta el momento
numero elegido: 3
0 0 'X' 1 X 2 2 2 2

Nota: Cuando ubicamos el obstaculo en la posición x, introducimos en dicha posicion el valor 'X' (caracter 'X'=88.

Reglas para ubicar el obstaculo:
Genero un numero random entre 0 y "9-numero de obstaculos" ubicado hasta el momento, lo llamo r a dicho numero.
Si en r hay un numero a lo ubico en g(r+a)
Si en r hay un obstaculo lo ubico en g(r+1)
g(x)=x Si en x no hay obstaculo.
g(x)=g(x+1) Si en x hay obstaculo.
Incluso conviene no hacerlo recursivo, es mucho más rápido obviamente.
Luego actualizo el tablero de la siguiente manera:
Para las casillas posteriores a donde ubiqué el obstáculo, le sumo 1+o si es un numero, de ser un obstaculo, no modifico la casilla, pero incremento o en 1. o empiza siendo 0 y vendría a ser el numero de obstáculos con el que me topé en este proceso de actualización.

El proceso de ubicación de monstruos es análogo, pero no necesito actualizar el tablero luego de ubicar un monstruos porque es posible superponerlos. g(x) sigue igual ya que no puedo superponer con obstaculos.
Obviamente que las casillas que contengan un monstruo no van a ser todas "m" ya que esto no nos diría nada sobre la cantidad de monstruos que hay, podemos entonces hacer "m+x" siendo x igual a "la cantidad de monstruos sobre esa casilla-1"
Total, cuanto mucho habrá 24 monstruos... osea, el valor de la variable no superará el máximo de un char (255).
Por que "m" minuscula, porque si fuese mayuscula y tuviese 12 monstruos, les dejo a ustedes deducir las consecuencias...