import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.Timer; import java.util.*; public class GameView extends JComponent { ArrayList levelList = new ArrayList(); ArrayList playLevelList; Timer timer = new Timer(10, new TickListener()); Level level; Level gameOverLevel = new GameOverLevel(); public GameView() { initializeLevels(); playLevelList = (ArrayList) levelList.clone(); nextLevel(); // Initierar start-level timer.start(); //Tangentbordsegenskaper & lyssnare this.addKeyListener(new TangentLyssnare()); this.setFocusable(true); this.transferFocus(); } /** * Ger */ public void initializeLevels() { // Lägger till banorna i levelList //levelList.add(startLevel); levelList = new ArrayList(); levelList.add(new MenyLevel()); levelList.add(new Level0()); levelList.add(new Level1()); levelList.add(new Level2()); //levelList.add(level1post); levelList.add(new Level3()); //levelList.add(endLevel); } public void nextLevel() { if (playLevelList.isEmpty()) { System.out.println("Du har klarat spelet!!!"); level = new IsOverLevel(); } else { level = (Level) playLevelList.get(0); System.out.println("NyLevelEfterGameOver = " + level); playLevelList.remove(0); } } /** * */ public void paintComponent(Graphics g) { level.draw(g); } /** * Anropas vid varje tick * @author pathe915 * */ class TickListener implements ActionListener { public void actionPerformed(ActionEvent e) { //Ge världen möjlighet att agera level.clockTick(); // Om Vi ska starta om spelet. if (level.restartGame) { level.restartGame = false; // initialiserar banorna initializeLevels(); playLevelList = (ArrayList) levelList.clone(); nextLevel(); } // Om level är GameOver. if (level.gameover) { level.gameover = false; System.out.println("Game Over"); level = gameOverLevel; } // Om level är avklarad, kör nästa if (level.inGoal) { nextLevel(); } // System.out.println("TICK "); //Rita om komponenten (den yttre klassen) repaint(); } } class TangentLyssnare extends KeyAdapter { public void keyPressed(KeyEvent e) { level.keyPressed(e); } public void keyReleased(KeyEvent e) { level.keyReleased(e); } } }