En este grupo En todos

Foro de Flash



Por favor ayudame

Veronica
Diseño industrial centro de diseño ind...
Escrito por Veronica Femenías
el 19/02/2010

Hola, estoy haciendo un juego que es bastante sencillo pero a falta de conocimiento se me está complicando... Se trata de que el clip te muestra una serie de ingredientes de cocina y tambient e muestra una receta de cocina. Cuando te muestra la receta hay que arrastrar y colocar sobre un plato los ingredientes que estan en el escenario. El juego se trata de generar la mayor cantidad de recetas en el menor tiempo, para eso hay un timer que cuenta un minuto. Cuando logras terminar una receta, aparece otra hasta terminar el tiempo. Yo lo resolví haciendo un random que muestra las recetas al azar (para que el usuaio no se aprenda de memoria el orden). Los ingredientes los hice dandole la funcion de Drag and Drop, y al tocar el plato desaparecen (haciendo Hit Test Object y removechild). Cuando desaparecen se crea un nuevo ingrediente en la ubicacion inicial para tenerlo disponible para otra receta. Hasta ahi todo bien pero se me generan los siguientes problemas:

1- cuando el timer llega a 0, los ingredientes no deberian seguir moviendose (sacarle el drag). Le quito el listener pero sin embargo se mueven.

2-- Si la receta está mal hecha ( o sea, se arrastra el ingrediente equivocado hacia el plato), deberia no dar ningun puntaje. Lo hice con un IF pero el ELSE me hace que si no ejecuto ninguna accion, tambien cuente cero.

Alguien por ahi me dijo que se hacee con un "array de arrays" pero no se bien como hacer esto. Alguien tiene idea? Adjunto el codigo.

codigo en AS3:


package {



import flash. Display. *;
import flash. Events. *;
import flash. Utils. *;
import flash.text.TextField;


public class Juego extends MovieClip {

public var numero_receta:Number
public var receta:String

public var puntaje:Number=0

public var mayonesa:Mayonesa
public var mostaza:Mostaza
public var ketchup:Ketchup
public var perejil:Perejil

public var plato:Plato

public var texto:TextField;

public var puntos:TextField;

public var reloj:MovieClip


//variables del reloj


var count:Number = 10;

var myTimer:Timer = new Timer(1000, count);

//////////////////////////////////////////////////////////////////////

function init():void {

///creo un random de 20 numeros para 20 recetas

numero_receta = Math. Round(Math. Random() * 4);

//se lo sumo a la palabra receta
receta=new String("receta " +numero_receta)

trace (receta)//

iniciar_reloj ()

mostrar_puntos()


////////////////funciones del reloj

function iniciar_reloj ():void{

myTimer. AddEventListener(TimerEvent. TIMER, countdown);

myTimer. Start();

function countdown(event:TimerEvent):void {

myText_txt. Text = String(count)-myTimer. CurrentCount+" segundos");

}

}

if (count) - myTimer. CurrentCount > 0) {

mayonesa=new Mayonesa();
mayonesa. X = 200
mayonesa. Y = 150
mayonesa. Visible=true
addChild(mayonesa)

mostaza=new Mostaza();
addChild(mostaza)
mostaza. Visible=true
mostaza. X = 400
mostaza. Y= 150

ketchup=new Ketchup();
ketchup. X = 600
ketchup. Y = 150
ketchup. Visible=true
addChild(ketchup)

perejil=new Perejil();
perejil. X = 800
perejil. Y = 150
perejil. Visible=true
addChild(perejil)

plato=new Plato();
plato. X = 350
plato. Y=250
addChild(plato)

mayonesa. AddEventListener(MouseEvent. MOUSE_DOWN, arrastrar)
mayonesa. AddEventListener(MouseEvent. MOUSE_UP, soltar)
mostaza. AddEventListener(MouseEvent. MOUSE_DOWN, arrastrar)
mostaza. AddEventListener(MouseEvent. MOUSE_UP, soltar)
ketchup. AddEventListener(MouseEvent. MOUSE_DOWN, arrastrar)
ketchup. AddEventListener(MouseEvent. MOUSE_UP, soltar)
perejil. AddEventListener(MouseEvent. MOUSE_DOWN, arrastrar)
perejil. AddEventListener(MouseEvent. MOUSE_UP, soltar)

texto. Text = receta//muestro la receta, por ahora tienen numeros nada mas


/////////////////////////////////////////////////////////////////////

hit()

}


else {

myTimer. Stop()


removeEventListener(Event. ENTER_FRAME, hit)


mayonesa. RemoveEventListener(MouseEvent. MOUSE_DOWN, arrastrar)
mayonesa. RemoveEventListener(MouseEvent. MOUSE_UP,soltar)
mostaza. RemoveEventListener(MouseEvent. MOUSE_DOWN, arrastrar)
mostaza. RemoveEventListener(MouseEvent. MOUSE_UP,soltar)
ketchup. RemoveEventListener(MouseEvent. MOUSE_DOWN, arrastrar)
ketchup. RemoveEventListener(MouseEvent. MOUSE_UP,soltar)
perejil. RemoveEventListener(MouseEvent. MOUSE_DOWN, arrastrar)
perejil. RemoveEventListener(MouseEvent. MOUSE_UP,soltar)



}

}

function hit():void {

addEventListener(Event. ENTER_FRAME,hitest);

}

//funciones de arrastrar y soltar los ingredientes
function arrastrar(e:MouseEvent=null) {

e.target.startDrag();
}
function soltar(e:MouseEvent=null):void{
e.target.stopDrag();
}


//posiciona los ingredientes sobre el plato y detecta las colisiones

function hitest(e:Event):void {


if (mayonesa. HitTestObject(plato)){

mayonesa. Visible=false

volver()

}



if (mostaza. HitTestObject(plato)){

mostaza. Visible = false

volver()

}

if(ketchup. HitTestObject(plato)){

ketchup. Visible = false

volver()

}

if(perejil. HitTestObject(plato)){

perejil. Visible = false
volver()

}

}

// la funcion volver da puntaje y resetea los ingredientes a su lugar inicial
function volver():void {

removeEventListener(Event. ENTER_FRAME, hit)

puntaje=(puntaje+1000)

trace(puntaje)

init()

}

function error():void {

removeEventListener(Event. ENTER_FRAME, hit)

puntaje = (puntaje + 0)

trace(puntaje)

init()

}


//funcion para mostrar puntaje

function mostrar_puntos():void {

puntos. Text=(puntaje)

}

}

}