import java.awt.*; import java.awt.event.*; import java.util.*; import javax.swing.*; class Spelplan extends JPanel{ private ArrayList platser = new ArrayList(); private Spelare kalle; private SpelFrame hela; public Spelplan(SpelFrame sf){ hela=sf; kalle=new Spelare(25, 25, this, hela); platser.add(new Plats(360,10)); platser.add(new Plats(110,70)); platser.add(new Plats(70,200)); platser.add(new Plats(425,175)); platser.add(new Plats(125,220)); platser.add(new Plats(325,100)); platser.add(new Plats(225,125)); addMouseListener(new MusLyss()); addKeyListener(new TryckLyss()); } class MusLyss extends MouseAdapter{ public void mouseClicked(MouseEvent e){ requestFocus(); } } public void paintComponent(Graphics g){ super.paintComponent(g); kalle.skrivut(g); Iterator iter=platser.iterator(); while (iter.hasNext()){ Plats pl=(Plats)(iter.next()); pl.skrivut(g); } } class TryckLyss extends KeyAdapter{ public void keyPressed(KeyEvent ke){ int riktning=ke.getKeyCode(); switch (riktning){ case KeyEvent.VK_UP: kalle.move(0,-1); break; case KeyEvent.VK_DOWN: kalle.move(0,1); break; case KeyEvent.VK_LEFT: kalle.move(-1,0); break; case KeyEvent.VK_RIGHT: kalle.move(1,0); break; default: return; } repaint(); harFlyttat(); } } private void harFlyttat(){ Plats p=kollaTräff(); if (p!=null){ kalle.ökaPoäng(1); Toolkit.getDefaultToolkit().beep(); platser.remove(p); if (platser.isEmpty()) hela.vunnit(kalle); } } private Plats kollaTräff(){ Iterator iter=platser.iterator(); while (iter.hasNext()){ Plats pl=(Plats)(iter.next()); if (pl.kollaTräff(kalle)) return pl; } return null; } }