• Sábado 14 de Diciembre de 2024, 17:59

Autor Tema:  Re: laberito aleatorio en modo grafico  (Leído 1762 veces)

alons

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: laberito aleatorio en modo grafico
« en: Martes 3 de Diciembre de 2002, 00:14 »
0
Hola


Lo que paso es que deseo generar un laberito en  modo grafico, en forma aleatoria  por medio del contenido de un arreglo,y  todavia no le he logrado, espero que alguien pueda echarme la mano, de antemano se los agradezco

Israel Figueroa

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
laberito aleatorio en modo grafico
« Respuesta #1 en: Jueves 12 de Diciembre de 2002, 15:34 »
0
Si el laberinto va a estar en vista aérea, usa una matriz de caracteres (limite en TC++: [128][128]), implamenta una funcion que llene aleatoriamente la matriz con ceros y unos y crea una función que:
    *Si hay un cero, coloca un cuadro de color para simular un muro.
    *Si hay un 1, coloca un cuadro de otro color para simular un pasillo.

Los cuadros para generar el laberinto deben ser cuadrados de un tamaño fijo así, al colocarlos en pantalla, sólo se requiere avanzar en múltiplos del tamaño de cuadro para marcar el inicio de cada cuadro.

Puedes modificar la funcion para llenar la matriz para que asigne otros valores, que se les puede manejar como objetos  del escenario: trampas, puertas, escaleras, cofres, étc.

Esto tambien te sirve para controlar el movimiento del personaje:
   *Si el elemento de la matriz es cero, no puede pararse en ese cuadro.
   *Si el elemento de la matriz es uno o mayor, puede pararse en ese cuadro.

/*-----------Codigo-----------------------*/
#define ANCHOCUADRO 8
#define ANCHOLABERINTOX 40
#define ANCHOLABERINTOY 30

#include <stdlib.h>
#include <graphics.h>
#include <conio.h>

int matrix[ANCHOLABERINTOY][ANCHOLABERINTOX];

//La matriz del laberinto es global
void cuadro(int x, int y, int ancho,char color){
   setcolor(color);
   setfillstyle(SOLID_COLOR,color);
   bar(x,y,x+ancho,y+ancho);
}

void crearLaberinto(int largo, int ancho){
   int x,y;
   for(y=0 ; y<ancho ; y++)
      for(x=0 ; x<largo ; x++)
          cuadro(x*ANCHOCUADRO,y*ANCHOCUADRO,ANCHOCUADRO,laberinto
  • [y]);


}

void llenarMatriz(int laberinto[][],int largo,int ancho){
   for(y=0 ; y<ancho ; y++)
      for(x=0 ; x<largo ; x++){
         laberinto[y][X]=rand()%2;
   }
         
}

void main(){

   /*Usar procedimiento para inicializar graficos*/
   llenarMatriz(matrix,ANCHOLABERINTOX,ANCHOLABERINTOY);
   crearLaberinto(ANCHOLABERINTOX,ANCHOLABERINTOY);

}