X-Git-Url: https://git.llucax.com/z.facultad/75.68/celdas.git/blobdiff_plain/c31f28dc627150cda2d49912d408120e7ab8489a..e800bc42e811087efc35350d5bfaa97cd1926d88:/trunk/src/breve/Laberinto.tz?ds=inline diff --git a/trunk/src/breve/Laberinto.tz b/trunk/src/breve/Laberinto.tz index 83b5c16..71b18fb 100644 --- a/trunk/src/breve/Laberinto.tz +++ b/trunk/src/breve/Laberinto.tz @@ -1,151 +1,198 @@ -@use Control. -@use Stationary. -@use Celdas. - -@define altoPared 5. -@define posYPared 25. -@define seccion 20. -@define distanciaTotalX 240. -@define distanciaTotalZ 240. - -Controller myControl. - - -CeldasObstacle : Wall{ - - +to Create to-posX posX = 0 (float) to-posY posY = 2.5 (float) to-posZ posZ = 0 (float) to-widthX widthX = 120(float) to-widthZ widthZ = 5(float): - - self register with-shape (new Cube init-with size (widthX,altoPared,widthZ)) at-location (posX,posY,posZ). - self set-color to (0,1,0). - -} - - -CeldasObstacle : Labyrinth{ - - +to init: - wall (object). - - wall=new Wall. - - #Contorno del laberinto - wall Create to-widthX 11.25*seccion. - wall Create to-posX -5.5*seccion to-widthX 5 to-widthZ 11.25*seccion to-posZ 5.5*seccion . - wall Create to-posX -5.5*seccion to-widthX 5 to-widthZ 11.25*seccion to-posZ 5.5*seccion to-posX 5.5*seccion . - - wall Create to-widthX 5.25*seccion to-posZ 11*seccion to-posX -3*seccion. - wall Create to-widthX 5.25*seccion to-posZ 11*seccion to-posX 3*seccion. - #fin contorno - - #Paredesd verticales (en el diagrama) - wall Create to-widthZ seccion to-widthX 5 to-posZ 10.5*seccion to-posX 0.5*seccion. - wall Create to-widthZ 2*seccion to-widthX 5 to-posZ 10*seccion to-posX -1.5*seccion. - wall Create to-widthZ seccion to-widthX 5 to-posZ 10.5*seccion to-posX -3.5*seccion. - - wall Create to-widthZ 2*seccion to-widthX 5 to-posZ 9*seccion to-posX -0.5*seccion. - wall Create to-widthZ seccion to-widthX 5 to-posZ 9.5*seccion to-posX -4.5*seccion. - wall Create to-widthZ 3*seccion to-widthX 5 to-posZ 8.5*seccion to-posX -2.5*seccion. - wall Create to-widthZ 3*seccion to-widthX 5 to-posZ 8.5*seccion to-posX 3.5*seccion. - - wall Create to-widthZ 5*seccion to-widthX 5 to-posZ 5.5*seccion to-posX -4.5*seccion. - wall Create to-widthZ 6*seccion to-widthX 5 to-posZ 4*seccion to-posX -3.5*seccion. - wall Create to-widthZ 3*seccion to-widthX 5 to-posZ 4.5*seccion to-posX -2.5*seccion. - wall Create to-widthZ 3*seccion to-widthX 5 to-posZ 5.5*seccion to-posX -1.5*seccion. - - wall Create to-widthZ seccion to-widthX 5 to-posZ 2.5*seccion to-posX 0.5*seccion. - wall Create to-widthZ seccion to-widthX 5 to-posZ 1.5*seccion to-posX 1.5*seccion. - wall Create to-widthZ seccion to-widthX 5 to-posZ 4.5*seccion to-posX 1.5*seccion. - wall Create to-widthZ seccion to-widthX 5 to-posZ 6.5*seccion to-posX 1.5*seccion. - - wall Create to-widthZ seccion to-widthX 5 to-posZ 2.5*seccion to-posX -1.5*seccion. - wall Create to-widthZ seccion to-widthX 5 to-posZ 1.5*seccion to-posX -2.5*seccion. - wall Create to-widthZ seccion to-widthX 5 to-posZ 3.5*seccion to-posX -0.5*seccion. - - wall Create to-widthZ seccion to-widthX 5 to-posZ 3.5*seccion to-posX 2.5*seccion. - wall Create to-widthZ 2*seccion to-widthX 5 to-posZ 7*seccion to-posX 2.5*seccion. - wall Create to-widthZ seccion to-widthX 5 to-posZ 4.5*seccion to-posX 3.5*seccion. - - wall Create to-widthZ 6*seccion to-widthX 5 to-posZ 6*seccion to-posX 4.5*seccion. - - #Paredes horizontales (en el diagrama) - wall Create to-widthZ 5 to-widthX 2.25*seccion to-posZ 10*seccion to-posX 1.5*seccion. #1 - wall Create to-widthZ 5 to-widthX 2.25*seccion to-posZ 10*seccion to-posX 4.5*seccion. #2 - - wall Create to-widthZ 5 to-widthX 2.25*seccion to-posZ 9*seccion to-posX -3.5*seccion. #3 - wall Create to-widthZ 5 to-widthX 1.25*seccion to-posZ 8*seccion to-posX -4*seccion. #4 - wall Create to-widthZ 5 to-widthX 5.25*seccion to-posZ 8*seccion to-posX 0. #5 - - wall Create to-widthZ 5 to-widthX 3*seccion to-posZ 9*seccion to-posX 2*seccion. #6 - - wall Create to-widthZ 5 to-widthX 1.25*seccion to-posZ 7*seccion to-posX -3*seccion. #7 - wall Create to-widthZ 5 to-widthX 3.25*seccion to-posZ 7*seccion to-posX 0. #8 - wall Create to-widthZ 5 to-widthX 2.25*seccion to-posZ 6*seccion to-posX 3.5*seccion. #9 - wall Create to-widthZ 5 to-widthX 1.25*seccion to-posZ 6*seccion to-posX -2*seccion. #10 - - wall Create to-widthZ 5 to-widthX 3.25*seccion to-posZ 4*seccion to-posX 0. #11 - wall Create to-widthZ 5 to-widthX 2.25*seccion to-posZ 5*seccion to-posX 2.5*seccion. #12 - - wall Create to-widthZ 5 to-widthX 1.25*seccion to-posZ 3*seccion to-posX -4*seccion. #13 - wall Create to-widthZ 5 to-widthX 1.25*seccion to-posZ 3*seccion to-posX -2*seccion. #14 - wall Create to-widthZ 5 to-widthX 4.25*seccion to-posZ 3*seccion to-posX 2.5*seccion. #15 - #wall Create to-widthZ 5 to-widthX 4*seccion to-posZ 3*seccion to-posX 2.5*seccion. #15 - - wall Create to-widthZ 5 to-widthX seccion to-posZ 2*seccion to-posX -5*seccion. #16 - wall Create to-widthZ 5 to-widthX 2.25*seccion to-posZ 2*seccion to-posX -0.5*seccion. #17 - wall Create to-widthZ 5 to-widthX 4.25*seccion to-posZ 2*seccion to-posX 3.5*seccion. #18 - - wall Create to-widthZ 5 to-widthX 9*seccion to-posZ 1*seccion to-posX 0. #19 - - #push wall onto walls. -} - - -Control: myControl{ -+ variables: - labe(object). - sensor (object). - leftWheel, rightWheel (object). - vehicle (object). - -+ to init: - self point-camera at (0,0,0) from (200,200,200). - new Floor. - - labe = new Labyrinth. - vehicle = new CeldasVehicle. - self watch item vehicle. - - vehicle move to (0, 0, 10). - - leftWheel = (vehicle add-wheel at (-2, 0, -1.5)). - rightWheel = (vehicle add-wheel at (-2, 0, 1.5)). - vehicle add-wheel at (1, 0, 0). - - leftWheel set-velocity to 50.0. - rightWheel set-velocity to 50.0. - - sensor = (vehicle add-sensor at (2.0, .4, 0)). - - -+to iterate: - super iterate. - -+ to post-iterate: - value (float). - - value = sensor get-sensor-value. - - if value < 2: { - leftWheel set-velocity to ((leftWheel get-velocity) + 1). - rightWheel set-velocity to ((rightWheel get-velocity) + 1). - } - - if value > 2: { - leftWheel set-velocity to ((leftWheel get-velocity) - 1). - rightWheel set-velocity to ((rightWheel get-velocity) - 1). - } - - #print value. - -} - +@use Control. +@use Stationary. +@use Celdas. + +@define altoPared 5. +@define posYPared 25. +@define seccion 20. +@define distanciaTotalX 240. +@define distanciaTotalZ 240. + +Controller myControl. + + +CeldasObstacle : Wall{ + + + +to Create to-posX posX = 0 (float) to-posY posY = 2.5 (float) to-posZ posZ = 0 (float) to-widthX widthX = 5(float) to-widthZ widthZ = 5(float): + + if(widthX>widthZ): + { + large=widthX. + direction=(1,0,0). + } + else + { + large=widthZ. + direction=(0,0,1). + } + self register with-shape (new Cube init-with size (widthX,altoPared,widthZ)) at-location (posX,posY,posZ). + self set-color to (0,1,0). + + +} + + +CeldasObstacle : Labyrinth{ + + +to init: + wall(object). + + wall=new Wall. + #Contorno del laberinto + wall Create to-widthX 11.25*seccion. + wall=new Wall. + wall Create to-posX -5.5*seccion to-widthX 5 to-widthZ 11.25*seccion to-posZ 5.5*seccion . + wall=new Wall. + wall Create to-posX -5.5*seccion to-widthX 5 to-widthZ 11.25*seccion to-posZ 5.5*seccion to-posX 5.5*seccion . + wall=new Wall. + wall Create to-widthX 5.25*seccion to-posZ 11*seccion to-posX -3*seccion. + wall=new Wall. + wall Create to-widthX 5.25*seccion to-posZ 11*seccion to-posX 3*seccion. + #fin contorno + + #Paredesd verticales (en el diagrama) + wall=new Wall. + wall Create to-widthZ seccion to-widthX 5 to-posZ 10.5*seccion to-posX 0.5*seccion. + wall=new Wall. + wall Create to-widthZ 2*seccion to-widthX 5 to-posZ 10*seccion to-posX -1.5*seccion. + wall=new Wall. + wall Create to-widthZ seccion to-widthX 5 to-posZ 10.5*seccion to-posX -3.5*seccion. + + wall=new Wall. + wall Create to-widthZ 2*seccion to-widthX 5 to-posZ 9*seccion to-posX -0.5*seccion. + wall=new Wall. + wall Create to-widthZ seccion to-widthX 5 to-posZ 9.5*seccion to-posX -4.5*seccion. + wall=new Wall. + wall Create to-widthZ 3*seccion to-widthX 5 to-posZ 8.5*seccion to-posX -2.5*seccion. + wall=new Wall. + wall Create to-widthZ 3*seccion to-widthX 5 to-posZ 8.5*seccion to-posX 3.5*seccion. + + wall=new Wall. + wall Create to-widthZ 5*seccion to-widthX 5 to-posZ 5.5*seccion to-posX -4.5*seccion. + wall=new Wall. + wall Create to-widthZ 6*seccion to-widthX 5 to-posZ 4*seccion to-posX -3.5*seccion. + wall=new Wall. + wall Create to-widthZ 3*seccion to-widthX 5 to-posZ 4.5*seccion to-posX -2.5*seccion. + wall=new Wall. + wall Create to-widthZ 3*seccion to-widthX 5 to-posZ 5.5*seccion to-posX -1.5*seccion. + + wall=new Wall. + wall Create to-widthZ seccion to-widthX 5 to-posZ 2.5*seccion to-posX 0.5*seccion. + wall=new Wall. + wall Create to-widthZ seccion to-widthX 5 to-posZ 1.5*seccion to-posX 1.5*seccion. + wall=new Wall. + wall Create to-widthZ seccion to-widthX 5 to-posZ 4.5*seccion to-posX 1.5*seccion. + wall=new Wall. + wall Create to-widthZ seccion to-widthX 5 to-posZ 6.5*seccion to-posX 1.5*seccion. + wall=new Wall. + wall Create to-widthZ seccion to-widthX 5 to-posZ 2.5*seccion to-posX -1.5*seccion. + + wall=new Wall. + wall Create to-widthZ seccion to-widthX 5 to-posZ 1.5*seccion to-posX -2.5*seccion. + + wall=new Wall. + wall Create to-widthZ seccion to-widthX 5 to-posZ 3.5*seccion to-posX -0.5*seccion. + wall=new Wall. + wall Create to-widthZ seccion to-widthX 5 to-posZ 3.5*seccion to-posX 2.5*seccion. + + wall=new Wall. + wall Create to-widthZ 2*seccion to-widthX 5 to-posZ 7*seccion to-posX 2.5*seccion. + + wall=new Wall. + wall Create to-widthZ seccion to-widthX 5 to-posZ 4.5*seccion to-posX 3.5*seccion. + + wall=new Wall. + wall Create to-widthZ 6*seccion to-widthX 5 to-posZ 6*seccion to-posX 4.5*seccion. + + wall=new Wall. + #Paredes horizontales (en el diagrama) + wall Create to-widthZ 5 to-widthX 2.25*seccion to-posZ 10*seccion to-posX 1.5*seccion. #1 + + wall=new Wall. + wall Create to-widthZ 5 to-widthX 2.25*seccion to-posZ 10*seccion to-posX 4.5*seccion. #2 + + + wall=new Wall. + wall Create to-widthZ 5 to-widthX 2.25*seccion to-posZ 9*seccion to-posX -3.5*seccion. #3 + + wall=new Wall. + wall Create to-widthZ 5 to-widthX 1.25*seccion to-posZ 8*seccion to-posX -4*seccion. #4 + + wall=new Wall. + wall Create to-widthZ 5 to-widthX 5.25*seccion to-posZ 8*seccion to-posX 0. #5 + + + wall=new Wall. + wall Create to-widthZ 5 to-widthX 3*seccion to-posZ 9*seccion to-posX 2*seccion. #6 + + + wall=new Wall. + wall Create to-widthZ 5 to-widthX 1.25*seccion to-posZ 7*seccion to-posX -3*seccion. #7 + + wall=new Wall. + wall Create to-widthZ 5 to-widthX 3.25*seccion to-posZ 7*seccion to-posX 0. #8 + + wall=new Wall. + wall Create to-widthZ 5 to-widthX 2.25*seccion to-posZ 6*seccion to-posX 3.5*seccion. #9 + + wall=new Wall. + wall Create to-widthZ 5 to-widthX 1.25*seccion to-posZ 6*seccion to-posX -2*seccion. #10 + + wall=new Wall. + wall Create to-widthZ 5 to-widthX 3.25*seccion to-posZ 4*seccion to-posX 0. #11 + + wall=new Wall. + wall Create to-widthZ 5 to-widthX 2.25*seccion to-posZ 5*seccion to-posX 2.5*seccion. #12 + + + wall=new Wall. + wall Create to-widthZ 5 to-widthX 1.25*seccion to-posZ 3*seccion to-posX -4*seccion. #13 + + wall=new Wall. + wall Create to-widthZ 5 to-widthX 1.25*seccion to-posZ 3*seccion to-posX -2*seccion. #14 + + wall=new Wall. + wall Create to-widthZ 5 to-widthX 4.25*seccion to-posZ 3*seccion to-posX 2.5*seccion. #15 + + #wall Create to-widthZ 5 to-widthX 4*seccion to-posZ 3*seccion to-posX 2.5*seccion. #15 + + wall=new Wall. + wall Create to-widthZ 5 to-widthX seccion to-posZ 2*seccion to-posX -5*seccion. #16 + + wall=new Wall. + wall Create to-widthZ 5 to-widthX 2.25*seccion to-posZ 2*seccion to-posX -0.5*seccion. #17 + + wall=new Wall. + wall Create to-widthZ 5 to-widthX 4.25*seccion to-posZ 2*seccion to-posX 3.5*seccion. #18 + + wall=new Wall. + wall Create to-widthZ 5 to-widthX 9*seccion to-posZ 1*seccion to-posX 0. #19 + +} + + +Control: myControl{ ++ variables: + agent(object). + pared(object). + labe(object). + + sensor (object). + vehicle (object). + ++ to init: + self point-camera at (0,0,0) from (200,200,200). + new Floor. + + labe = new Labyrinth. + vehicle = new CeldasVehicle. + self watch item vehicle. + + vehicle move to (0, 0, 10). + ++to iterate: + super iterate. + +} +