Hey beste tweakers!!
Ik heb een probleempje met java. De opdracht lijkt makkelijk maar is moeilijker dan het lijkt! Ik studeer nu informatica aan HS Leiden. Ik moet ook java doen, ik heb er alleen niet echt aanleg voor en heb er echt veel moeite mee! Dus als je daar rekening mee wilt houden bij je uitleg zou ik dat alvast erg waarderen;)
Oke, de opdracht! Ik moet in Java een bal tekenen die uit zichzelf heen en weer gaat, en als die tegen de rand van het scherm gaat, moet ie weer de andere kant op. Ook moet de bal omhoog kunnen en je moet een knop hebben die hem van richting laat veranderen. Nu heb ik dat allemaal al werkend.
Maar er is nog een opdracht waar ik vastloop! Je moet namelijk de bal ook nog sneller en langzamer laten gaan. Dat klinkt in het begin erg makkelijk maar ik kom er gewoon niet uit:S Ik heb hieronder mijn code staan (bestaat uit 3 klassen) :
ps. Ik weet niet zeker hoe ik de code moet presenteren... als er een speciale manier is moet je het maar zeggen!
package h4opdr7;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class AutoBal extends JPanel implements ActionListener
{
private int horizontalePlaats = 250;
private int verticalePlaats = 150;
private int richtingEnSnelheid = +1;
private final int WACHTTIJD = 1;
public AutoBal()
{
javax.swing.Timer autoKlik = new javax.swing.Timer(WACHTTIJD, this);
autoKlik.start();
}
public int getHorPlaats()
{
return horizontalePlaats;
}
public int getVerPlaats()
{
return verticalePlaats;
}
public int getRichtingEnSnelheid()
{
return richtingEnSnelheid;
}
public void setHorPlaats(int nieuweHorPlaats)
{
horizontalePlaats = nieuweHorPlaats;
}
public void setVerPlaats(int nieuweVerPlaats)
{
verticalePlaats = nieuweVerPlaats;
}
public void setRichtingEnSnelheid(int nieuweRichtingEnSnelheid)
{
richtingEnSnelheid = nieuweRichtingEnSnelheid;
}
public void actionPerformed(ActionEvent e)
{
setHorPlaats( getHorPlaats() + richtingEnSnelheid );
repaint();
if ( horizontalePlaats > 580 )
{
setRichtingEnSnelheid( - getRichtingEnSnelheid() );
}
if ( horizontalePlaats < 12 )
{
setRichtingEnSnelheid( - getRichtingEnSnelheid() );
}
if ( richtingEnSnelheid < 0 )
{
richtingEnSnelheid = - 1;
}
if ( richtingEnSnelheid > 1 )
{
richtingEnSnelheid = + 1;
}
}
public void paintComponent(Graphics g)
{
super.paintComponent( g );
final int BALDIAMETER = 100;
g.setColor(Color.ORANGE);
g.fillOval(horizontalePlaats, verticalePlaats, BALDIAMETER, BALDIAMETER);
g.setColor(Color.BLACK);
g.drawOval(horizontalePlaats, verticalePlaats, BALDIAMETER, BALDIAMETER);
g.drawOval(horizontalePlaats + BALDIAMETER / 4 , verticalePlaats, BALDIAMETER / 2, BALDIAMETER);
}
}
package h4opdr7;
import java.awt.event.*;
import javax.swing.*;
public class AutoBalBediening extends JPanel implements ActionListener
{
private JButton wisselRichting;
private JButton omhoog, omlaag;
private JButton Sneller, Langzamer;
AutoBal bal;
public AutoBalBediening(AutoBal bal)
{
this.bal = bal;
wisselRichting = new JButton("Wissel van richting");
wisselRichting.addActionListener(this);
add(wisselRichting);
omhoog = new JButton("Omhoog");
omhoog.addActionListener(this);
add(omhoog);
omlaag = new JButton("Omlaag");
omlaag.addActionListener(this);
add(omlaag);
Sneller = new JButton("Sneller");
Sneller.addActionListener(this);
add(Sneller);
Langzamer = new JButton("Langzamer");
Langzamer.addActionListener(this);
add(Langzamer);
}
public void actionPerformed(ActionEvent e)
{
if (e.getSource() == wisselRichting)
{
bal.setRichtingEnSnelheid(- bal.getRichtingEnSnelheid());
}
if (bal.getRichtingEnSnelheid() > 0)
{
if (e.getSource() == omlaag)
{
bal.setVerPlaats(bal.getVerPlaats() + bal.getRichtingEnSnelheid());
}
if (e.getSource() == omhoog)
{
bal.setVerPlaats(bal.getVerPlaats() - bal.getRichtingEnSnelheid());
}
}
else
{
if (e.getSource() == omlaag)
{
bal.setVerPlaats(bal.getVerPlaats() - bal.getRichtingEnSnelheid());
}
if (e.getSource() == omhoog)
{
bal.setVerPlaats(bal.getVerPlaats() + bal.getRichtingEnSnelheid());
}
}
if (e.getSource() == Sneller)
{
bal.setRichtingEnSnelheid(bal.getRichtingEnSnelheid() + 1);
if (bal.getRichtingEnSnelheid() > 0)
{
bal.setRichtingEnSnelheid(bal.getRichtingEnSnelheid() - 1);
}
else
{
bal.setRichtingEnSnelheid(bal.getRichtingEnSnelheid());
}
}
if (e.getSource() == Langzamer)
{
bal.setRichtingEnSnelheid(bal.getRichtingEnSnelheid() -1);
}
}
}
package h4opdr7;
import javax.swing.*;
import java.awt.*;
public class AutoBalOpstart extends JFrame
{
public AutoBalOpstart()
{
JFrame venster = new JFrame();
venster.setSize(700,400);
venster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
venster.setTitle("Automatische bal");
venster.setLocation(100,100);
AutoBal bal;
bal = new AutoBal();
venster.add( bal, BorderLayout.CENTER);
AutoBalBediening bedieningspaneel;
bedieningspaneel = new AutoBalBediening(bal);
venster.add(bedieningspaneel, BorderLayout.SOUTH);
venster.setVisible(true);
}
public static void main( String[] args)
{
new AutoBalOpstart();
}
}
Wat het nu doet, is: Als de bal richting de rechterkant gaat en je drukt op langzamer, dan staat ie stil, als je nog een keer drukt, gaat de bal de andere kant op. Als hij dan tegen de kant aan gaat en dus omdraait, gebeurt hetzelfde als je op sneller drukt! Ik heb al wat dingetjes geprobeerd zoals je ziet! Het stukje code voor langzamer en sneller staat in AutoBalBediening bijna helemaal onderaan!
Ik hoop dat ik hiermee genoeg heb toegelicht! Als je meer wilt weten moet je dat laten weten!
Alvast bedankt voor de moeite en het lezen,
Mark
Ik heb een probleempje met java. De opdracht lijkt makkelijk maar is moeilijker dan het lijkt! Ik studeer nu informatica aan HS Leiden. Ik moet ook java doen, ik heb er alleen niet echt aanleg voor en heb er echt veel moeite mee! Dus als je daar rekening mee wilt houden bij je uitleg zou ik dat alvast erg waarderen;)
Oke, de opdracht! Ik moet in Java een bal tekenen die uit zichzelf heen en weer gaat, en als die tegen de rand van het scherm gaat, moet ie weer de andere kant op. Ook moet de bal omhoog kunnen en je moet een knop hebben die hem van richting laat veranderen. Nu heb ik dat allemaal al werkend.
Maar er is nog een opdracht waar ik vastloop! Je moet namelijk de bal ook nog sneller en langzamer laten gaan. Dat klinkt in het begin erg makkelijk maar ik kom er gewoon niet uit:S Ik heb hieronder mijn code staan (bestaat uit 3 klassen) :
ps. Ik weet niet zeker hoe ik de code moet presenteren... als er een speciale manier is moet je het maar zeggen!
package h4opdr7;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class AutoBal extends JPanel implements ActionListener
{
private int horizontalePlaats = 250;
private int verticalePlaats = 150;
private int richtingEnSnelheid = +1;
private final int WACHTTIJD = 1;
public AutoBal()
{
javax.swing.Timer autoKlik = new javax.swing.Timer(WACHTTIJD, this);
autoKlik.start();
}
public int getHorPlaats()
{
return horizontalePlaats;
}
public int getVerPlaats()
{
return verticalePlaats;
}
public int getRichtingEnSnelheid()
{
return richtingEnSnelheid;
}
public void setHorPlaats(int nieuweHorPlaats)
{
horizontalePlaats = nieuweHorPlaats;
}
public void setVerPlaats(int nieuweVerPlaats)
{
verticalePlaats = nieuweVerPlaats;
}
public void setRichtingEnSnelheid(int nieuweRichtingEnSnelheid)
{
richtingEnSnelheid = nieuweRichtingEnSnelheid;
}
public void actionPerformed(ActionEvent e)
{
setHorPlaats( getHorPlaats() + richtingEnSnelheid );
repaint();
if ( horizontalePlaats > 580 )
{
setRichtingEnSnelheid( - getRichtingEnSnelheid() );
}
if ( horizontalePlaats < 12 )
{
setRichtingEnSnelheid( - getRichtingEnSnelheid() );
}
if ( richtingEnSnelheid < 0 )
{
richtingEnSnelheid = - 1;
}
if ( richtingEnSnelheid > 1 )
{
richtingEnSnelheid = + 1;
}
}
public void paintComponent(Graphics g)
{
super.paintComponent( g );
final int BALDIAMETER = 100;
g.setColor(Color.ORANGE);
g.fillOval(horizontalePlaats, verticalePlaats, BALDIAMETER, BALDIAMETER);
g.setColor(Color.BLACK);
g.drawOval(horizontalePlaats, verticalePlaats, BALDIAMETER, BALDIAMETER);
g.drawOval(horizontalePlaats + BALDIAMETER / 4 , verticalePlaats, BALDIAMETER / 2, BALDIAMETER);
}
}
package h4opdr7;
import java.awt.event.*;
import javax.swing.*;
public class AutoBalBediening extends JPanel implements ActionListener
{
private JButton wisselRichting;
private JButton omhoog, omlaag;
private JButton Sneller, Langzamer;
AutoBal bal;
public AutoBalBediening(AutoBal bal)
{
this.bal = bal;
wisselRichting = new JButton("Wissel van richting");
wisselRichting.addActionListener(this);
add(wisselRichting);
omhoog = new JButton("Omhoog");
omhoog.addActionListener(this);
add(omhoog);
omlaag = new JButton("Omlaag");
omlaag.addActionListener(this);
add(omlaag);
Sneller = new JButton("Sneller");
Sneller.addActionListener(this);
add(Sneller);
Langzamer = new JButton("Langzamer");
Langzamer.addActionListener(this);
add(Langzamer);
}
public void actionPerformed(ActionEvent e)
{
if (e.getSource() == wisselRichting)
{
bal.setRichtingEnSnelheid(- bal.getRichtingEnSnelheid());
}
if (bal.getRichtingEnSnelheid() > 0)
{
if (e.getSource() == omlaag)
{
bal.setVerPlaats(bal.getVerPlaats() + bal.getRichtingEnSnelheid());
}
if (e.getSource() == omhoog)
{
bal.setVerPlaats(bal.getVerPlaats() - bal.getRichtingEnSnelheid());
}
}
else
{
if (e.getSource() == omlaag)
{
bal.setVerPlaats(bal.getVerPlaats() - bal.getRichtingEnSnelheid());
}
if (e.getSource() == omhoog)
{
bal.setVerPlaats(bal.getVerPlaats() + bal.getRichtingEnSnelheid());
}
}
if (e.getSource() == Sneller)
{
bal.setRichtingEnSnelheid(bal.getRichtingEnSnelheid() + 1);
if (bal.getRichtingEnSnelheid() > 0)
{
bal.setRichtingEnSnelheid(bal.getRichtingEnSnelheid() - 1);
}
else
{
bal.setRichtingEnSnelheid(bal.getRichtingEnSnelheid());
}
}
if (e.getSource() == Langzamer)
{
bal.setRichtingEnSnelheid(bal.getRichtingEnSnelheid() -1);
}
}
}
package h4opdr7;
import javax.swing.*;
import java.awt.*;
public class AutoBalOpstart extends JFrame
{
public AutoBalOpstart()
{
JFrame venster = new JFrame();
venster.setSize(700,400);
venster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
venster.setTitle("Automatische bal");
venster.setLocation(100,100);
AutoBal bal;
bal = new AutoBal();
venster.add( bal, BorderLayout.CENTER);
AutoBalBediening bedieningspaneel;
bedieningspaneel = new AutoBalBediening(bal);
venster.add(bedieningspaneel, BorderLayout.SOUTH);
venster.setVisible(true);
}
public static void main( String[] args)
{
new AutoBalOpstart();
}
}
Wat het nu doet, is: Als de bal richting de rechterkant gaat en je drukt op langzamer, dan staat ie stil, als je nog een keer drukt, gaat de bal de andere kant op. Als hij dan tegen de kant aan gaat en dus omdraait, gebeurt hetzelfde als je op sneller drukt! Ik heb al wat dingetjes geprobeerd zoals je ziet! Het stukje code voor langzamer en sneller staat in AutoBalBediening bijna helemaal onderaan!
Ik hoop dat ik hiermee genoeg heb toegelicht! Als je meer wilt weten moet je dat laten weten!
Alvast bedankt voor de moeite en het lezen,
Mark
[ Voor 85% gewijzigd door Macromark op 14-11-2010 15:46 ]