Comunidad de diseño web y desarrollo en internet online

Juego tablero dados y jugadores

Citar            
MensajeEscrito el 09 Ago 2011 03:01 pm
Estimados amigos de cristalab, necesito ayuda para el desarrollo de un juego en flash as2, me encargaron la culminacion de un juego tipo "juego de la oca" el cual ya esta casi acabado las preguntas mini games pruebas todo, pero falta la seccion en la que un jugador lanza el dado y la ficha avanza de casillero en casillero. Alguien me puede dar alguna idea de como hacerlo gracias

Por richie7e

3 de clabLevel



 

safari
Citar            
MensajeEscrito el 09 Ago 2011 04:12 pm
El dado puede ser una animación en que vas pasando por las distintas caras del dado, ejemplo en un timeline tienes cada dos frames un nro (del 1 al 6) y usas un random para hacer que un setInterval haga un stop, en donde pare esa será la tirada

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 09 Ago 2011 05:58 pm
Gracias Jorge, acabo de hacer el dado, con el random y el setInterval, funciona perfecto tienes alguna idea para el tablero y movimiento de los jugadores (fichas)

Por richie7e

3 de clabLevel



 

safari
Citar            
MensajeEscrito el 09 Ago 2011 06:31 pm
Sip, para eso se usa un mapa, imagina una cuadrícula, la estructura de datos detrás depende de tus necesidades. Lo mas simple es hacer un array cadenas de texto, cada cadena una fila, cada letra representa un tipo de casilla (libre, obstáculo, premio, etc) y en función de cuanto avance y que letra toque, la acción a tomar. Idealmente cada casilla tiene un ancho similar, entonces según avanza, sumas en eje X e Y. Si las casillas son irregulares, entonces tendrás un segundo array similar al primero, pero de donde tomas el desplazamiento que cada casilla implica, allí sumas y mueves. Para hacer esto necesitas conocer manejo básico de arrays y de strings

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 08 Sep 2011 04:37 pm
Retome de nuevo el proyecto y tengo algo que funciona y el personaje avanza a la casilla que le de clic pero necesito que avance con un numero randomico 1 - 6 (un dado) alguien tiene idea?
Gracias por su ayuda.
adjunto el codigo.

Código ActionScript :

myMap1 = [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
           [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
          [1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1],
        [1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1],
         [1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1],
        [1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1],
        [1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1],
        [1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1],
        [1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1],
        [1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1],
        [1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1],
        [1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1],
        [1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1],
        [1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
        [1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
        [1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
        [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
        [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]];
game = {tileW:80, tileH:80};
game.Tile0 = function () { };
game.Tile0.prototype.walkable = true;
game.Tile0.prototype.frame = 1;
game.Tile1 = function () { };
game.Tile1.prototype.walkable = false;
game.Tile1.prototype.frame = 2;
char = {xtile:1, ytile:15, speed:5, moving:false};
function buildMap(map) {
   _root.attachMovie("mouse", "mouse", 2);
   _root.attachMovie("empty", "tiles", 1);
   game.clip = _root.tiles;
   var mapWidth = map[0].length;
   var mapHeight = map.length;
   for (var i = 0; i<mapHeight; ++i) {
      for (var j = 0; j<mapWidth; ++j) {
         var name = "t_"+i+"_"+j;
         game[name] = new game["Tile"+map[i][j]]();
         game.clip.attachMovie("tile", name, i*100+j*2);
         game.clip[name]._x = (j*game.tileW);
         game.clip[name]._y = (i*game.tileH);
         game.clip[name].gotoAndStop(game[name].frame);
      }
   }
   game.clip.attachMovie("char", "char", 10000);
   char.clip = game.clip.char;
   char.x = (char.xtile*game.tileW)+game.tileW/2;
   char.y = (char.ytile*game.tileW)+game.tileW/2;
   char.clip._x = char.x;
   char.clip._y = char.y;
   char.clip.gotoAndStop(char.frame);
}
function moveChar(ob) {
   if ((ob.x-game.tileW/2)%game.tileW == 0 and (ob.y-game.tileH/2)%game.tileH == 0) {
      ob.xtile = Math.floor(ob.x/game.tileW);
      ob.ytile = Math.floor(ob.y/game.tileH);

      if (game["t_"+ob.ytile+"_"+(ob.xtile+1)].walkable and game.targetx>ob.xtile) {
         ob.dirx = 1;
         ob.diry = 0;
         //left
      } else if (game["t_"+ob.ytile+"_"+(ob.xtile-1)].walkable and game.targetx<ob.xtile) {
         ob.dirx = -1;
         ob.diry = 0;
         //up
      } else if (game["t_"+(ob.ytile+1)+"_"+ob.xtile].walkable and game.targety>ob.ytile) {
         ob.dirx = 0;
         ob.diry = 1;
         //down
      } else if (game["t_"+(ob.ytile-1)+"_"+ob.xtile].walkable and game.targety<ob.ytile) {
         ob.dirx = 0;
         ob.diry = -1;
      } else {
         ob.moving = false;
         return;
      }
   }

   ob.y += ob.speed*ob.diry;
   ob.x += ob.speed*ob.dirx;
   ob.clip._x = ob.x;
   ob.clip._y = ob.y;
   ob.clip.gotoAndStop(ob.dirx+ob.diry*2+3);
}
function getTarget() {
   if (game["t_"+game.ymouse+"_"+game.xmouse].walkable) {
      game.targetx = game.xmouse;
      game.targety = game.ymouse;
      char.moving = true;
       trace("cuadroY "+game.targety)
        trace("cuadroX "+game.targetx)
       trace("target | "+game.ymouse)
        trace("target - "+game.xmouse)
       trace(myMap1)
   }
}
function work() {
   game.xmouse = Math.round((_root._xmouse-game.tileW/2)/game.tileW);
   game.ymouse = Math.round((_root._ymouse-game.tileH/2)/game.tileH);
   _root.mouse._x = game.xmouse*game.tileW;
   _root.mouse._y = game.ymouse*game.tileH;
   var ob = char;
   if (!ob.moving) {
      ob.clip.char.gotoAndStop(1);
   } else {
      moveChar(ob);
      ob.clip.char.play();
   }
}
buildMap(_root["myMap1"]);
stop();

Por richie7e

3 de clabLevel



 

chrome
Citar            
MensajeEscrito el 08 Sep 2011 05:23 pm
Para generar un numero randomico usa Math.random()
Si quieres un numero entre 1 y 6, puedes hacer

int(Math.random()*6)+1;

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 08 Sep 2011 05:50 pm
Si pero como le hago que me recorra los espacios que dice el dado?

Por richie7e

3 de clabLevel



 

chrome
Citar            
MensajeEscrito el 08 Sep 2011 07:16 pm
´
Idealmente cada casilla tiene un ancho similar, entonces según avanza, sumas en eje X e Y. Si las casillas son irregulares, entonces tendrás un segundo array similar al primero, pero de donde tomas el desplazamiento que cada casilla implica, allí sumas y mueves


Si es un movimiento continuo con un solo tween es sufuciente, sino tendrás que encadenar tweens uno con otro para que pare, te recomiento que uses la clase TweenLite http://www.greensock.com/tweenlite/

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.