De method in spel om de coordinaten van raket en alien te vergelijken werkt niet.
Iemand?
Spel
Superklasse
subklassen
Iemand?
Spel
Code:
import java.applet.*;
import java.awt.*;
import javax.swing.Timer;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.lang.Object;
import java.util.ArrayList;
import java.util.Random;
//een simpel schietspel van 15 seconden waarbij het ruimteschip dmv raketten bewegende aliens
//moet zien te raken en dmv bewegen zijn positie kan bepalen
public class Spel extends Applet
{
//Timers
Timer nieuwePositieTimer;
Timer nieuweAlienTimer;
Timer stopSpelTimer;
//een nieuwe arraylist bewegendedelen
ArrayList<BewegendeDelen> bewegendedelenarray = new ArrayList<BewegendeDelen>();
Ruimteschip ruimteschip = new Ruimteschip();
Raket raket = null;
public void init()
{
setBackground(Color.white);
//nieuwepositielistener
ActionListener nieuwePositieListener = new nieuwePositieListener();
//interval van 1/4 seconde
final int nieuwepositieDELAY = 250;
//nieuwe positie timer
Timer nieuwePositieTimer = new Timer(nieuwepositieDELAY, nieuwePositieListener);
this.nieuwePositieTimer = nieuwePositieTimer;
//start de nieuwe positietimer
nieuwePositieTimer.start();
//nieuwe alien listener
ActionListener nieuweAlienListener = new nieuweAlienListener();
//interval van 4 seconden
final int nieuwealienDELAY = 4000;
//nieuwe alientimer
Timer nieuweAlienTimer = new Timer(nieuwealienDELAY, nieuweAlienListener);
this.nieuweAlienTimer = nieuweAlienTimer;
//start de nieuwe alientimer
nieuweAlienTimer.start();
//stop het spel listener
ActionListener stopSpelListener = new stopSpelListener(15);
//1 seconde interval
final int stopspelDELAY = 1000;
//nieuwe timer stop het spel
stopSpelTimer = new Timer(stopspelDELAY, stopSpelListener);
//start de timer
stopSpelTimer.start();
//bewegendedelenarray.add(alien);
bewegendedelenarray.add(ruimteschip);
//bewegendedelenarray.add(raket);
}
//tekenen
public void paint(Graphics g)
{ //print uit bewegendedelenarray obj van het type BewegendeDelen
for(BewegendeDelen obj : bewegendedelenarray)
{ //teken de bewegende delen (ruimteschip, aliens en raketten)
System.out.println(obj);
obj.paint(g);
//als teller op nul staat game over!
if (count <= 0)
g.drawString("Game over!", 250, 250);
//laat de score zien als de teller op nul staat
if (count <= 0)
g.drawString("Je score is: " + score + "!", 250, 300);
}
}
//pijltjes toetsen indrukken om te bewegen en spatie om te schieten
public boolean keyDown(Event e, int key)
{ //naar links
if(key == Event.LEFT)
{ if (ruimteschip.getX() > 10)
{
ruimteschip.beweegLinks();
System.out.println("links");
repaint();
}
}
else
//naar rechts
if(key == Event.RIGHT)
{ if (ruimteschip.getX() < 450)
{
ruimteschip.beweegRechts();
repaint();
}
}
else
//schieten
if (key == 32)
{
raket = new Raket(ruimteschip.getX(), ruimteschip.getY());
bewegendedelenarray.add(raket);
raket.beweeg();
repaint();
}
return true;
}
//kijken of de raket een alien raakt
public boolean isGeraakt()
{
for(BewegendeDelen obj : bewegendedelenarray)
//controleren of er een raket is
while(raket != null)
{ //als objecten zelfde coordinaten hebben, verwijder object, opnieuw tekenen en score ophogen
if (obj.getX() >= obj.getX() && obj.getX() <= (obj.getX()+obj.getWeergave().length()) && obj.getX()==obj.getY())
{ //roep verwijderen aan
obj.verwijder();
raket = null;
repaint();
score++;
}
}
return !gemist;
}
//iedere 1/4 seconden krijgen de aliens een nieuwe positie
class nieuwePositieListener implements ActionListener
{
public void actionPerformed(ActionEvent event)
{ System.out.println("nieuwe pos");
Random generator = new Random();
for(BewegendeDelen obj : bewegendedelenarray)
{
obj.beweeg();
}
repaint();
}
}
//om de vier seconden een nieuwe alien op het scherm
class nieuweAlienListener implements ActionListener
{
public void actionPerformed(ActionEvent event)
{ //voeg een nieuw alien object aan de array toe en repaint
System.out.println("nieuwe alien");
bewegendedelenarray.add(new Alien());
//repaint();
}
}
//na 15 seconden stopt het spel: Game Over!
class stopSpelListener implements ActionListener
{
public stopSpelListener(int initialCount)
{
count = initialCount;
}
public void actionPerformed(ActionEvent event)
{ count--;
//als de teller op 0 staat is het spel voorbij
if (count == 0)
{
nieuwePositieTimer.stop();
nieuweAlienTimer.stop();
stopSpelTimer.stop();
}
else
{
System.out.println("time left: " + count);
}
}
//private int count;
}
//instantievariabelen
private int count;
private int score;
private boolean gemist;
}
Superklasse
Code:
import java.awt.*;
import java.awt.Graphics2D;
//superclass met gezamenlijke eigenschappen van de bewegende delen ruimteschip, alien en raket
public class BewegendeDelen
{
public void paint(Graphics g)
{ //weergave drawstring met x en y positie
Graphics2D g2D = (Graphics2D)g;
g.drawString(weergave, x, y);
}
//zet de x positie
public void setX(int xPos)
{
x = xPos;
}
//en y positie
public void setY(int yPos)
{
y = yPos;
}
public void setWeergave(String deWeergave)
{
weergave = deWeergave;
}
public String getWeergave()
{
return weergave;
}
public int getX()
{
return x;
}
public int getY()
{
return y;
}
//beweegmethod rechts
public void beweegRechts()
{ //verschuif rechts
x = x + 25;
}
//beweegmethod links
public void beweegLinks()
{ //verschuif links
x = x - 25;
}
public void beweeg()
{
}
public void verwijder()
{
}
public String toString()
{
return weergave + ": (" + x + ", " + y +")";
}
//geef de breedte terug
public int getWidth()
{
return width;
}
//instantievariabelen
public int x;
public int y;
public String weergave;
public int width;
}
subklassen
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.Graphics2D;
//subklasse van "bewegendedelen" die eigenschappen ervan erft, en met beweegmethods
public class Ruimteschip extends BewegendeDelen
{
public Ruimteschip()
{
weergave = "<<=>>";
x = 250;
y = 500;
}
}
Code:
import java.awt.*;
import java.awt.image.*;
import java.applet.Applet;
//de alien class
public class Alien extends BewegendeDelen
{
public Alien()
{
weergave = "^^^";
y = 25;
}
public void beweeg()
{
x= x+10;
}
}
Code:
import java.awt.*;
import java.awt.image.*;
import java.applet.Applet;
public class Raket extends BewegendeDelen
{
public Raket(int x, int y)
{
weergave = "|";
setX(x+17);
setY(y);
}
//schietmethod, verticaal omhoog bewegen
public void beweeg()
{
y = y - 40;
}
//een lege string als weergave
public void verwijder()
{
weergave = "";
}
}