Hvem gider tjekke vores program??
Det er nok ikke så let lige at over skue sammenhængen, men alle kommentarer og forslag til forbedringer har interesse - evt. bare til enkelte klasser.*********************************************************
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.FileInputStream;
import java.io.IOException;
public class Start extends JFrame implements ActionListener{
JButton startGame, instruks;
JPanel top;
public void actionPerformed(ActionEvent evt)
{
if(evt.getSource()== startGame ){
Model model = new Model();
View view = new View(model);
view.setSize(758, 580);
view.setVisible(true);
view.setDefaultCloseOperation(view.EXIT_ON_CLOSE);
setVisible(false);
} else{
remove(top);
setTitle("Instruktioner");
setSize(500, 600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTextArea text = new JTextArea();
text.setEditable(false);
try {
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream("instruks.txt")));
String line;
while((line = in.readLine()) != null) {
text.append(line + "\n");
}
} catch (IOException e) {
e.printStackTrace();
}
getContentPane().add(text);
}
}
public Start() {
setTitle("Traffic");
setSize(500, 600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
top = new JPanel();
ImageIcon billede = new ImageIcon("empire_ampel.jpg");
JLabel icon = new JLabel(billede);
top.add(icon);
JPanel bund = new JPanel();
startGame = new JButton("START");
instruks = new JButton("Instruktioner");
bund.add(startGame);
bund.add(instruks);
getContentPane().add(top, BorderLayout.NORTH);
getContentPane().add(bund, BorderLayout.SOUTH);
setVisible(true);
startGame.addActionListener(this);
instruks.addActionListener(this);
}
public static void main (String [] args) {
Start frame = new Start();
}
}
***********************************************************************************
import java.util.ArrayList;
import java.util.Random;
public class Model {
boolean gameOver;
int point;
static final int POINT = 30;
ArrayList biler = new ArrayList();
Lyskryds lyskryds[] = new Lyskryds[6];
public Model(){
lyskryds[0] = new Lyskryds(new Placering(140,140));
lyskryds[1] = new Lyskryds(new Placering(340,140));
lyskryds[2] = new Lyskryds(new Placering(540, 140));
lyskryds[3] = new Lyskryds(new Placering(140,340));
lyskryds[4] = new Lyskryds(new Placering(340, 340));
lyskryds[5] = new Lyskryds(new Placering(540,340));
}
public void rykAlle(){
for(int i = 0; i < biler.size(); i++ ){
Vehicle b = (Vehicle) biler.get(i);
b.ryk = true;
for(int j = 0; j < lyskryds.length; j++ )
{
b.tjekLyskryds(lyskryds[j]);
}
for(int j = 0; j < biler.size(); j++ )
{
if(j!=i){
Vehicle vehicle = (Vehicle) biler.get(j);
b.tjekCar(vehicle);
}
}
b.ryk();
}
}
public void addCar(){
int i = getRandom();
if (i == 1)biler.add(new CarNorth1());
else if (i == 2)biler.add(new CarNorth2());
else if (i == 3 )biler.add(new CarNorth3());
else if (i == 4 )biler.add(new CarEast1());
else if (i == 5)biler.add(new CarEast1());
else if (i == 6)biler.add(new CarSouth1());
else if (i == 7 )biler.add(new CarSouth2());
else if (i == 8 )biler.add(new CarSouth3());
else if (i == 9)biler.add(new CarWest1());
else biler.add(new CarWest2());
}
public void addAmbulance(){
int j = getRandom();
if (j < 3)biler.add(new AmbulanceWest1());
else if (j > 2 || j < 6)biler.add(new AmbulanceWest2());
else if (j > 5 || j < 9)biler.add(new AmbulanceEast1());
else biler.add(new AmbulanceEast2());
}
public int getRandom(){
Random rng = new Random();
return rng.nextInt(10) + 1;
}
}
**********************************************************************************
import javax.swing.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class View extends JFrame implements ActionListener {
static int KNAPBREDDE = 60;
static String KNAPBILLEDE = "kryds.gif";
String dyt = "beepbeep.wav";
String crash = "carcrach.wav";
int tæller = 0;
int frekvens = 50;
Driver puls;
Model model;
JPanel vej, knapper;
JButton knap1, knap2, knap3, knap4, knap5, knap6;
public View(Model model) {
this.model = model;
puls= new Driver(this);
puls.start();
knapper = new JPanel();
vej = new JPanel();
vej.setLayout(null);
knapper.setLayout(null);
setLayout(null);
vej.setBounds(0,0,758,555);
knapper.setBounds(0,0,758,555);
knap1 = new JButton("1", new ImageIcon(KNAPBILLEDE));
knap1.setBounds(145,145,KNAPBREDDE,KNAPBREDDE);
knap1.addActionListener(this);
knapper.add(knap1);
knap2 = new JButton("2",new ImageIcon(KNAPBILLEDE));
knap2.setBounds(345,145,KNAPBREDDE,KNAPBREDDE);
knap2.addActionListener(this);
knapper.add(knap2);
knap3 = new JButton("3",new ImageIcon(KNAPBILLEDE));
knap3.setBounds(545,145,KNAPBREDDE,KNAPBREDDE);
knap3.addActionListener(this);
knapper.add(knap3);
knap4 = new JButton("4",new ImageIcon(KNAPBILLEDE));
knap4.setBounds(145,345,KNAPBREDDE,KNAPBREDDE);
knap4.addActionListener(this);
knapper.add(knap4);
knap5 = new JButton("5",new ImageIcon(KNAPBILLEDE));
knap5.setBounds(345,345,KNAPBREDDE,KNAPBREDDE);
knap5.addActionListener(this);
knapper.add(knap5);
knap6 = new JButton("6",new ImageIcon(KNAPBILLEDE));
knap6.setBounds(545,345,KNAPBREDDE,KNAPBREDDE);
knap6.addActionListener(this);
knapper.add(knap6);
add(vej);
add(knapper);
}
public void actionPerformed(ActionEvent e) {
// der trækkes 1 fra i fordi arrayet starter ved 0
JButton knap = (JButton) e.getSource();
int i = Integer.parseInt(knap.getLabel()) - 1;
Thread t = new Thread(model.lyskryds[i]);
t.start();
}
void draw(){
vej.removeAll();
for(int i = 0; i < model.lyskryds.length; i++ )
{
Lyskryds lyskurv = model.lyskryds[i];
JLabel lyskryds = new JLabel("");
String sbillede = "kryds" + lyskurv.kryds + ".gif";
lyskryds.setIcon( new ImageIcon(sbillede) );
lyskryds.setBounds(lyskurv.p.x-10, lyskurv.p.y, 92, 83);
vej.add(lyskryds);
}
for(int i = 0; i < model.biler.size(); i++ ){
Vehicle bil = (Vehicle) model.biler.get(i);
JLabel bilLabel = new JLabel("");
String billede = "bil"+ bil.billede + ".gif";
bilLabel.setIcon( new ImageIcon(billede));
bilLabel.setBounds(bil.x, bil.y, bil.width, bil.height);
vej.add(bilLabel);
}
JTextField point = new JTextField("POINT : " + model.point);
point.setBounds(680,10, 80, 20);
vej.add(point);
JLabel vejbillede = new JLabel("");
vejbillede.setIcon(new ImageIcon("vej.jpg"));
vejbillede.setBounds(0,0, 753, 552);
vej.add(vejbillede);
repaint();
}
public void puls(){
model.rykAlle();
tæller ++;
if(tæller > frekvens)
{
model.addCar();
tæller = 0;
if(model.getRandom()== 3){
model.addAmbulance();
}
}
//Tjekker om bilerne er ude af spillebrættet
tjekBoard();
//data er ændret derfor klades draw
draw();
}
public void vundet(){
JOptionPane.showMessageDialog(null, "Spillet er slut. Du opnåede " + model.point +
" points.", "Nyt spil", JOptionPane.INFORMATION_MESSAGE);
model.biler.clear();
setVisible(false);
puls.stop();
}
public void tjekBoard(){
if (tjekVundet()){
model.gameOver = true;
vundet();
}
for(int i = 0; i < model.biler.size(); i++ ){
Vehicle bil = (Vehicle) model.biler.get(i);
if (bil.x < 0 || bil.x >850 || bil.y < 0 || bil.y >700){ model.biler.remove(i); model.point++;}
}
}
public boolean tjekVundet(){
if(model.point > model.POINT){
return true;
}
else return false;
}
public void gameOver(){
JOptionPane.showMessageDialog(null, "Game Over "
, "Game over", JOptionPane.INFORMATION_MESSAGE);
setVisible(false);
puls.stop();
}
}
***********************************************************************************
import java.awt.*;
import java.applet.AudioClip;
import java.applet.Applet;
import java.net.URL;
public abstract class Vehicle extends Rectangle {
boolean ryk;
String retning;
String billede;
int type;
public Vehicle(){}
public abstract void ryk();
public abstract void tjekLyskryds(Lyskryds l);
public boolean tjekCarSide(Placering p){
return false;
}
public abstract boolean tjek(Vehicle vehicle);
public abstract void queue();
public abstract void crash();
public void Sound(String file){
AudioClip testClip;
try{
testClip= Applet.newAudioClip(new URL("file:" + file));
testClip.play();
}catch(Exception e){
System.out.println(e.toString());
}
}
//themplate metode
public void tjekCar(Vehicle vehicle){
if(tjek(vehicle)){
if(vehicle.retning.equals(retning)){
//hook metode
queue();
}
else crash();
}
}
}
***********************************************************************************
import java.util.Random;
public abstract class Car extends Vehicle {
final static int AFSTANDMELLEMBILER = 8;
final static int BILLÆNGDE = 38;
final static int BILBREDDE = 20;
int SPEED = 2;
//skal ikke implementeres i sub klasser når den er her
public void queue(){
ryk = false;
}
public void crash(){
ryk = false;
Sound("beepbeep.wav");
}
public int getRandom(){
Random rng = new Random();
int i = rng.nextInt(10) + 1;
if (i == 1|| i == 2 || i == 3)return 1;
else if (i == 4|| i == 5 )return 2;
else if (i == 6|| i == 7 || i == 8)return 3;
else return 4;
}
}
*************************************************************************************
public abstract class Ambulance extends Vehicle{
View view;
boolean wrongside = false;
final static int AFSTANDMELLEMBILER = 30;
final static int BILLÆNGDE = 50;
final static int BILBREDDE = 24;
final static int SPEED = 4;
public Ambulance(){
Sound("ambulancelip36.wav");
height = BILBREDDE;
width = BILLÆNGDE;
}
protected int jump;
public void queue(){
if(wrongside) y +=jump;
else y -=jump; wrongside = true;
}
public void crash(){
Sound("carcrash.wav");
view.gameOver();
}
*************************************************************************************
import java.awt.*;
public abstract class AmbulanceWest extends Ambulance {
int AFSTANDMELLEMBILER = 30;
int BILLÆNGDE = 50;
int BILBREDDE = 24;
public AmbulanceWest(){
jump = 25;
retning = "h";
billede = "westambulance";
}
public void ryk(){
if(ryk) x += SPEED;
}
public void tjekLyskryds(Lyskryds l){ }
public boolean tjek(Vehicle vehicle){
return (new Rectangle(x + BILLÆNGDE, y, AFSTANDMELLEMBILER, BILBREDDE).intersects(vehicle));
}
}
class AmbulanceWest1 extends AmbulanceWest {
public AmbulanceWest1(){
x = 0; y = 377;
}
}
class AmbulanceWest2 extends AmbulanceWest {
public AmbulanceWest2(){
x = 0; y = 176;
}
}
*************************************************************************************
import java.awt.*;
public abstract class AmbulanceEast extends Ambulance {
public AmbulanceEast(){
this.view = view;
//initialiseres her fordi(den kan ikke uden for)
jump = -25;
retning = "h";
billede = "eastambulance";
}
public void ryk(){
if(ryk) x -= SPEED;
}
public void tjekLyskryds(Lyskryds l){}
public boolean tjek(Vehicle vehicle){
return (new Rectangle(x - AFSTANDMELLEMBILER, y, AFSTANDMELLEMBILER, BILBREDDE).intersects(vehicle));
}
}
class AmbulanceEast1 extends AmbulanceEast {
public AmbulanceEast1(){
x = 755; y = 153;
}
}
class AmbulanceEast2 extends AmbulanceEast {
public AmbulanceEast2(){
x = 755 ; y = 354;
}
}
*************************************************************************************
import java.awt.*;
public abstract class CarNorth extends Car {
public CarNorth(){
height = BILLÆNGDE;
width = BILBREDDE;
retning = "v";
billede = getRandom() + "north";
}
public void ryk(){
if(ryk)y += SPEED;
}
public void tjekLyskryds(Lyskryds l){
if(l.tilstand == 2 && l.north.contains(x, y+BILLÆNGDE))ryk = false;
}
public boolean tjek(Vehicle vehicle){
return (new Rectangle(x, y + BILLÆNGDE, BILBREDDE, AFSTANDMELLEMBILER).intersects(vehicle));
}
}
class CarNorth1 extends CarNorth {
public CarNorth1(){
x =154;
y = 0;
}
}
class CarNorth2 extends CarNorth {
public CarNorth2(){
x =354;
y = 0;
}
}
class CarNorth3 extends CarNorth {
public CarNorth3(){
x =555;
y = 0;
}
}
*************************************************************************************
import java.awt.*;
public class CarEast extends Car {
public CarEast(){
height = BILBREDDE;
width = BILLÆNGDE;
retning = "h";
billede = getRandom() + "east" ;
}
public void ryk(){
if(ryk) x -= SPEED;
}
public void tjekLyskryds(Lyskryds l){
if(l.tilstand ==1 && l.east.contains(x, y))ryk = false;
}
public boolean tjek(Vehicle vehicle){
return (new Rectangle(x - AFSTANDMELLEMBILER, y, AFSTANDMELLEMBILER, BILBREDDE).intersects(vehicle));
}
}
class CarEast1 extends CarEast {
public CarEast1(){
x = 755; y = 153;
}
}
class CarEast2 extends CarEast {
public CarEast2(){
x = 755 ; y = 354;
}
}
*************************************************************************************
import java.awt.*;
public class CarSouth extends Car {
public CarSouth(){
height = BILLÆNGDE;
width = BILBREDDE;
retning = "v";
billede =getRandom() + "south";
}
public void ryk(){
if(ryk) y -= SPEED;
}
public void tjekLyskryds(Lyskryds l){
if(l.tilstand ==2 && l.south.contains(x, y))ryk = false;
}
public boolean tjek(Vehicle vehicle){
return (new Rectangle(x, y-AFSTANDMELLEMBILER, BILBREDDE, AFSTANDMELLEMBILER).intersects(vehicle));
}
}
class CarSouth1 extends CarSouth {
public CarSouth1(){
x =582;
y = 560;
}
}
class CarSouth2 extends CarSouth {
public CarSouth2(){
x =379;
y = 560;
}
}
class CarSouth3 extends CarSouth {
public CarSouth3(){
x =179;
y = 560;
}
}
*************************************************************************************
import java.awt.*;
public class CarWest extends Car {
public CarWest(){
height = BILBREDDE;
width = BILLÆNGDE;
retning = "h";
billede = getRandom() + "west";
}
public void ryk(){
if(ryk) x += SPEED;
}
public void tjekLyskryds(Lyskryds l){
if(l.tilstand ==1 && l.west.contains(x + BILLÆNGDE, y))ryk = false;
}
public boolean tjek(Vehicle vehicle){
return (new Rectangle(x + BILLÆNGDE, y, AFSTANDMELLEMBILER, BILBREDDE).intersects(vehicle));
}
}
class CarWest1 extends CarWest {
public CarWest1(){
x = 0; y = 379;
}
}
class CarWest2 extends CarWest {
public CarWest2(){
x = 0; y = 178;
}
}
