Verplaatsen naar specifieke coördinaten in Java

Status
Niet open voor verdere reacties.

MathPhy

Nieuwe gebruiker
Lid geworden
25 dec 2011
Berichten
1
Hallo,

Ik probeer een spelletje in java te maken met JCreator. (Tower of Hanoi)

De drie staven zijn gelukt en ik heb de schijven als gevulde rechthoeken genomen. Nu vraag ik mij af hoe ik deze rechthoeken met de muis naar specifieke coördinaten kan verplaatsen namelijk die van de staven. Ik heb begrepen dat het slepen van die schijven moeilijk is. Daarom zou ik graag willen weten met welke code ik de schijven zou kunnen verplaatsen door er op te klikken en dan vervolgens op 1 van de staven te klikken.

Ik heb al een code die ervoor zorgt dat er lijn getrokken kan worden in het scherm door middel van de muis.

Ik hoop dat iemand mij kan helpen. Dit is overigens de eerste keer dat ik met Java werk. Ik heb wel een boekje voor Java, maar dat is erg beperkt. Daar staat het niet in.

MathPhy
 
Je kan de positie van de muis uitlezen bij een clickevent, deze coordinaten kun je opslaan in variabelen. Bij de 2e clickevent, zou je de positie van de staaf, naar de positie van de muis kunnen zetten.
Voor iets meer indept antwoord heb ik meer informatie nodig (code :)). ik zal verder nog even voor je kijken voor drag en drop, zou niet al te moeilijk moeten zijn (anders kom ik hier op terug :) )
 
even snel wat in elkaar geflanst, is alles behalve mooi maar het demonstreerd wel ongeveer hoe je het zou kunnen doen:

[cpp]

public class Program extends JFrame implements MouseMotionListener {

/**
* @param args
*/
public static void main(String[] args) {
new Program();

}

JPanel p = new JPanel();

public Program(){
super();
super.setSize(new Dimension(300,300));
super.setVisible(true);
super.setLayout(null);

p.setSize(new Dimension(50,50));
p.setLocation(new Point(50,50));
p.setBackground(Color.black);
super.add(p);
super.addMouseMotionListener(this);
}

@Override
public void mouseDragged(MouseEvent arg) {

Point mouse = arg.getPoint();
System.out.println("MouseDrag : " + mouse.x + " " + mouse.y);
mouse.x -= p.getWidth() - (p.getWidth() / 2);
mouse.y -= p.getHeight();
// if (InPanel(p)){
p.setLocation(mouse);
// }

}

@Override
public void mouseMoved(MouseEvent arg0) {
// TODO Auto-generated method stub

}

//doesnt work fix it =D
private boolean InPanel(Point mouse)
{
if (p.getLocation().x + p.getSize().width < mouse.x &&
mouse.x > p.getLocation().x){
//x location is within button
if (p.getLocation().y + p.getSize().height < mouse.y &&
mouse.y > p.getLocation().y)
{
return true;
}
}
return false;
}
}


[/cpp]
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan