import javax.swing.SwingUtilities;
public class Luokka {
public static void main(String[] args) {
Mato mato = new Mato();
Omena omena = new Omena();
Kayttoliittyma kayttoliittyma = new Kayttoliittyma(mato, omena);
SwingUtilities.invokeLater(kayttoliittyma);
}
}import java.awt.Container;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.WindowConstants;
public class Kayttoliittyma implements Runnable {
private JFrame frame;
private Mato mato;
private Omena omena;
public Kayttoliittyma(Mato mato, Omena omena) {
this.mato = mato;
this.omena = omena;
}
@Override
public void run() {
frame = new JFrame("Otsikko");
frame.setPreferredSize(new Dimension(500, 500));
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
luoKomponentit(frame.getContentPane());
frame.pack();
frame.setVisible(true);
}
private void luoKomponentit(Container container) {
Piirtoalusta piirtoalusta = new Piirtoalusta(mato, omena);
container.add(piirtoalusta);
frame.addKeyListener(new Nappaimistokuuntelija(mato, piirtoalusta));
}
public JFrame getFrame() {
return frame;
}
}import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;
public class Piirtoalusta extends JPanel{
private Mato mato;
private Omena omena;
public Piirtoalusta(Mato mato, Omena omena) {
super.setBackground(Color.GRAY);
this.mato = mato;
this.omena = omena;
}
@Override
protected void paintComponent(Graphics graphics) {
super.paintComponent(graphics);
mato.piirra(graphics);
omena.piirra(graphics);
}
}import java.awt.Graphics;
public class Mato {
private Arpoja arpoja;
private int x;
private int y;
public Mato(){
arpoja = new Arpoja();
this.x = arpoja.getX();
this.y = arpoja.getY();
}
public int getX(){
return x;
}
public int getY(){
return y;
}
public void siirry(int xMuutos, int yMuutos){
this.x += xMuutos;
this.y += yMuutos;
}
public void piirra(Graphics graphics){
graphics.fillRect(x, y, 20, 20);
}
}import java.awt.Component;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class Nappaimistokuuntelija implements KeyListener{
private Component component;
private Mato mato;
public Nappaimistokuuntelija(Mato mato, Component component){
this.mato = mato;
this.component = component;
}
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_LEFT) {
mato.siirry(-10, 0);
} else if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
mato.siirry(10, 0);
} else if(e.getKeyCode() == KeyEvent.VK_UP){
mato.siirry(0, -10);
} else if(e.getKeyCode() == KeyEvent.VK_DOWN){
mato.siirry(0, 10);
}
component.repaint();
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
}import java.util.Random;
public class Arpoja {
private Random ran = new Random();
private int x;
private int y;
public Arpoja(){
this.x = ran.nextInt(300) + 101;
this.y = ran.nextInt(300) + 101;
}
public int getX(){
return this.x;
}
public int getY(){
return this.y;
}
}Eli miten saan tähän ohjelmaan sellaisen toiminoon että mato liikkuisi vaikka 5 sekunnissa. Kun painaa jotain näppäintä mato rupeaa liikkumaan sinne 5 sekunnissa.
Lisäys: Älkää sitten välittäkö noista omena jutuista. En laittanut kaikkea koodia tänne sekottamaan päätä.
Sinun pitää pääohjelmaasi tehdä silmukka, jossa matoa pelin aikana liikutetaan
pääpiirteittään näin:
while (peli on käynnissä) {
jos ohjausnäppäimiä painettu, muuta madon suunta
liikuta madon päätä voimassa olevaan suuntaan
jos törmäys seinään/itseensä, poistu peli käynnissä silmukasta -> game over
jos törmäys omenaan, kasvata matoa (häntä ei liiku)
tähän kohtaan sopiva odotus, jotta silmukka ei pyöri (mato liiku)
liian lujaa
}Kiitos tästä pete
Aihe on jo aika vanha, joten et voi enää vastata siihen.