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.