import javax.swing.*; import java.awt.event.*; import java.awt.*; import java.util.*; import inlupp3.*; 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 DPlats(110,70)); platser.add(new Plats(70,200)); platser.add(new DPlats(335,275)); platser.add(new Plats(125,220)); //platser.add(new Plats(325,100)); platser.add(new DPlats(325,100)); platser.add(new Plats(225,125)); addMouseListener(new MusLyss()); addKeyListener(new TryckLyss()); } //class Muslyss 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(){ if (kalle.getSteg()<0 || kalle.getPoang()<1) hela.forlorat(kalle); Plats p=(Plats)kollaTraff(); if (p!=null){ if (!(p instanceof DPlats)){ if (hela.visaFraga()){ JOptionPane.showMessageDialog(this,"rätt!!!"); kalle.okapoang(1); hela.setTexten(""); platser.remove(p); } else{ JOptionPane.showMessageDialog(this,"fel svar 1 minus!"); kalle.okapoang(-1); } } DPlats p1=(DPlats)kollaTraff(); if (p1!=null){ if (p1 instanceof DPlats){ if (hela.visaFraga()){ JOptionPane.showMessageDialog(this,"rätt! en diamant"); kalle.getGrej("Diamant"); platser.remove(p1); hela.setTexten("grattis till en diamant & 3 p"); kalle.okapoang(3); } else { JOptionPane.showMessageDialog(this,"fel svar 1 minus!"); kalle.okapoang(-1); } } } if (platser.isEmpty() || kalle.getPoang()>10) hela.vunnit(kalle); } } //flyttat private Plats kollaTraff(){ Iterator iter=platser.iterator(); while (iter.hasNext()){ Plats pl=(Plats)(iter.next()); if (pl.kollaTraff(kalle)) return pl; } return null; } }//spelplan