package Gui;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.util.ArrayList;
import javax.swing.*;
import Actions.ImageLoader;
import Actions.SetDefault;
import Actions.Stats;
import Actions.StatsChange;
public class Panel extends JPanel implements Runnable{
private static final long serialVersionUID = 1L;
private int move = 15;
private boolean ingame = true, laden = false;
private int schussNr = 4, punkte = 10000;
private int xhe3 = -1100;
private int schuss = 0, treffer = 0;
public ArrayList<ImageLoader> il = new ArrayList<ImageLoader>();
public ArrayList<ImageLoader> he3 = new ArrayList<ImageLoader>();
private JLabel points;
private JButton newGame;
private JTextField newName;
public Panel() {
setSize(1000,743);
setLayout(null);
setVisible(true);
initializeIL();
repaint();
points = new JLabel("Punkte: " + punkte);
points.setBounds(790,10,200,40);
points.setFont(new Font("Arial",Font.BOLD,25));
points.setVisible(true);
add(points);
newGame = new JButton("Neues Spiel");
newGame.setFont(new Font("Arial", Font.BOLD, 20));
newGame.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
new SetDefault(Main.panel);
newGame.setVisible(false);
}
});
newGame.setBounds(400,570,200,50);
newGame.setVisible(false);
add(newGame);
try {
new Stats();
} catch (IOException e) {
e.printStackTrace();
}
newName = new JTextField();
newName.setFont(new Font("Arial", Font.BOLD, 30));
newName.setBackground(new Color(220,220,220));
add(newName);
}
public void initializeIL() {
il.add(0, new ImageLoader(-1000, 0, 0, "rsc/MHBGE3.png", 3000, 743, "bgEbene3"));
il.add(1, new ImageLoader(-1000, 0, 0, "rsc/MHBGE2.png", 3000, 743, "bgEbene2"));
il.add(2, new ImageLoader(-1000, 0, 0, "rsc/MHBGE1.png", 3000, 743, "bgEbene1"));
il.add(3, new ImageLoader(-650, -45, 0, "rsc/Mühle.png", 600, 600, "mühlrad"));
for(int i = 4; i < 10; i++) {
int x = -900,y = 550,maxy = 480;
if(i == 5) { x = -600; y = 490; maxy = 420; }
else if(i == 6) { x = -100; y = 470; maxy = 400; }
else if(i == 7) { x = 400; y = 465; maxy = 395; }
else if(i == 8) { x = 1000; y = 440; maxy = 370; }
else if(i == 9) { x = 1600; y = 380; maxy = 310; }
il.add(i, new ImageLoader(x, y, maxy, "rsc/Moorhuhn1.png", 40, 60, "huhnEbene2"));
}
int xs[] = {10,45,80,115,150};
for(int i = 10; i < 15; i++) {
il.add(i, new ImageLoader(xs[i-10], 650, 650, "rsc/shotpat.png", 25, 50, "patrone"));
}
for(int i = 15; i < 20; i++) {
int x = -800; int y = 590; int maxy = 490;
if(i == 16) { x = 200; y = 700; maxy = 600; }
else if(i == 17) { x = 600; y = 650; maxy = 550; }
else if(i == 18) { x = 1300; y = 660; maxy = 560; }
else if(i == 19) { x = 1800; y = 620; maxy = 520; }
il.add(i, new ImageLoader(x, y, maxy, "rsc/Moorhuhn2.png", 60, 100, "huhnEbene1"));
}
for(int i = 0; i < 20; i++) {
int w = (int)(Math.random()*400) + 300;
he3.add(i,new ImageLoader(xhe3, ((int)(Math.random()*100)+150), 2100, 50, 25, "rsc/Moorhuhn3_1.png", "huhnEbene3_1"));
xhe3 = xhe3 - w - 400;
//System.out.println(xhe3);
}
}
public void paintComponent(Graphics g) {
g.drawImage(il.get(0).getImage(), il.get(0).getX(), il.get(0).getY(), il.get(0).getWidth(), il.get(0).getHeight(), null);
for(int i = 4; i < 10; i++) {
g.drawImage(il.get(i).getImage(), il.get(i).getX(), il.get(i).getY(), il.get(i).getWidth(), il.get(i).getHeight(), null);
g.setColor(Color.RED);
g.drawLine(il.get(i).getX(), il.get(i).getY(), il.get(i).getX()+il.get(i).getWidth(), il.get(i).getY());
g.drawLine(il.get(i).getX(), il.get(i).getY()+il.get(i).getHeight(), il.get(i).getX()+il.get(i).getWidth(), il.get(i).getY()+il.get(i).getHeight());
g.drawLine(il.get(i).getX(), il.get(i).getY(), il.get(i).getX(), il.get(i).getY()+il.get(i).getHeight());
g.drawLine(il.get(i).getX()+il.get(i).getWidth(), il.get(i).getY(), il.get(i).getX()+il.get(i).getWidth(), il.get(i).getY()+il.get(i).getHeight());
}
for(int i = 0; i < he3.size(); i++) {
g.drawImage(he3.get(i).getImage(), he3.get(i).getX(), he3.get(i).getY(), he3.get(i).getWidth(), he3.get(i).getHeight(), null);
g.setColor(Color.RED);
g.drawLine(he3.get(i).getX(), he3.get(i).getY(), he3.get(i).getX()+he3.get(i).getWidth(), he3.get(i).getY());
g.drawLine(he3.get(i).getX(), he3.get(i).getY()+he3.get(i).getHeight(), he3.get(i).getX()+he3.get(i).getWidth(), he3.get(i).getY()+he3.get(i).getHeight());
g.drawLine(he3.get(i).getX(), he3.get(i).getY(), he3.get(i).getX(), he3.get(i).getY()+he3.get(i).getHeight());
g.drawLine(he3.get(i).getX()+he3.get(i).getWidth(), he3.get(i).getY(), he3.get(i).getX()+he3.get(i).getWidth(), he3.get(i).getY()+he3.get(i).getHeight());
}
g.drawImage(il.get(1).getImage(), il.get(1).getX(), il.get(1).getY(), il.get(1).getWidth(), il.get(1).getHeight(), null);
for(int i = 15; i < 20; i++) {
g.drawImage(il.get(i).getImage(), il.get(i).getX(), il.get(i).getY(), il.get(i).getWidth(), il.get(i).getHeight(), null);
g.setColor(Color.RED);
g.drawLine(il.get(i).getX(), il.get(i).getY(), il.get(i).getX()+il.get(i).getWidth(), il.get(i).getY());
g.drawLine(il.get(i).getX(), il.get(i).getY()+il.get(i).getHeight(), il.get(i).getX()+il.get(i).getWidth(), il.get(i).getY()+il.get(i).getHeight());
g.drawLine(il.get(i).getX(), il.get(i).getY(), il.get(i).getX(), il.get(i).getY()+il.get(i).getHeight());
g.drawLine(il.get(i).getX()+il.get(i).getWidth(), il.get(i).getY(), il.get(i).getX()+il.get(i).getWidth(), il.get(i).getY()+il.get(i).getHeight());
}
g.drawImage(il.get(2).getImage(), il.get(2).getX(), il.get(2).getY(), il.get(2).getWidth(), il.get(2).getHeight(), null);
g.drawImage(il.get(3).getImage(), il.get(3).getX(), il.get(3).getY(), il.get(3).getWidth(), il.get(3).getHeight(), null);
for(int i = 10; i < 15; i++) {
g.drawImage(il.get(i).getImage(), il.get(i).getX(), il.get(i).getY(), il.get(i).getWidth(), il.get(i).getHeight(), null);
}
if(ingame == true) {
if(laden == true) {
g.setColor(Color.RED);
g.setFont(new Font("Impact", Font.BOLD, 30));
g.drawString("Keine Munition", 380, 360);
}
}
if(ingame == false) {
g.setColor(new Color(0, 0, 0, 200));
g.fillRect(70, 70, 860, 590);
g.setFont(new Font("Arial", Font.BOLD, 30));
g.setColor(Color.WHITE);
g.drawString("Punkte: " + punkte, 180, 180);
g.drawString("Schüsse: " + schuss, 600, 180);
g.drawString("Treffer: " + treffer, 600, 220);
double q;
int quote;
if(treffer > 0 && schuss > 0) { q = ((double)treffer / (double)schuss) * 100;
} else { q = 0; }
quote = (int)q;
g.drawString("Trefferquote: " + quote + "%", 180, 220);
newGame.setVisible(true);
if(punkte > Integer.parseInt(Stats.stats.get(4))) {
try {new StatsChange(punkte, ""); } catch (IOException e) { e.printStackTrace(); }
g.drawString("1)", 180, 320);
g.drawString("2)", 180, 390);
g.drawString("3)", 180, 460);
g.drawString(Stats.stats.get(0)+" Punkte", 240, 320);
g.drawString(Stats.stats.get(2)+" Punkte", 240, 390);
g.drawString(Stats.stats.get(4)+" Punkte", 240, 460);
if(StatsChange.newPointsPos == 0) {
newName.setVisible(true);
newName.addActionListener(new ActionListener() {
@Override public void actionPerformed(ActionEvent e) {
Stats.stats.set(1, newName.getText());
newName.setText("");
g.drawString(Stats.stats.get(1), 500, 320);
newName.setVisible(false);
}
});
newName.setBounds(500,290,350,50);
g.drawString(Stats.stats.get(3), 500, 390);
g.drawString(Stats.stats.get(5), 500, 460);
} else if(StatsChange.newPointsPos == 2) {
newName.addActionListener(new ActionListener() {
@Override public void actionPerformed(ActionEvent e) {
Stats.stats.set(3, newName.getText());
newName.setText("");
g.drawString(Stats.stats.get(3), 500, 390);
newName.setVisible(false);
}
});
newName.setBounds(500,360,350,50);
newName.setVisible(true);
g.drawString(Stats.stats.get(1), 500, 320);
g.drawString(Stats.stats.get(5), 500, 460);
} else if(StatsChange.newPointsPos == 4) {
newName.addActionListener(new ActionListener() {
@Override public void actionPerformed(ActionEvent e) {
newName.setVisible(false);
Stats.stats.set(5, newName.getText());
newName.setText("");
g.drawString(Stats.stats.get(5), 500, 460);
}
});
newName.setBounds(500,430,350,50);
newName.setVisible(true);
g.drawString(Stats.stats.get(1), 500, 320);
g.drawString(Stats.stats.get(3), 500, 390);
}
} else {
g.drawString("1)", 180, 320);
g.drawString("2)", 180, 390);
g.drawString("3)", 180, 460);
g.drawString(Stats.stats.get(0)+" Punkte", 240, 320);
g.drawString(Stats.stats.get(2)+" Punkte", 240, 390);
g.drawString(Stats.stats.get(4)+" Punkte", 240, 460);
g.drawString(Stats.stats.get(1), 500, 320);
g.drawString(Stats.stats.get(3), 500, 390);
g.drawString(Stats.stats.get(5), 500, 460);
}
}
}
public void setIngame(boolean i) { ingame = i; }
public boolean getIngame() { return ingame; }
public void setLaden(boolean i) { laden = i; }
public boolean getLaden() { return laden; }
public int getMoveInt() { return move; }
public int getSchussNr() { return schussNr; }
public void setSchussNr(int i) { schussNr = i; }
public int getpunkte() { return punkte; }
public void setPunkte(int i) { punkte += i; }
public void pointsSetText(int p) { points.setText("Punkte: " + p); }
public int getPoints() { return punkte; }
public void setPoints(int p) { punkte = p; }
public void setXhe3(int i) { xhe3 = i; }
public int getXhe3() { return xhe3; }
public void setSchuss(int i) { schuss = i; }
public int getSchuss() { return schuss; }
public void setTreffer(int i) { treffer = i; }
public int getTreffer() { return treffer; }
public void newNameInvisible() {
newName.setVisible(false);
}
public void moveLeft() {
for(int i = 0; i < 10; i++) {
il.get(i).setX(il.get(i).getX() + getMoveInt());
}
for(int i = 15; i < il.size(); i++) {
il.get(i).setX(il.get(i).getX() + getMoveInt());
}
for(int i = 0; i < he3.size(); i++) {
he3.get(i).setX(he3.get(i).getX() + getMoveInt());
}
repaint();
}
public void moveRight() {
for(int i = 0; i < 10; i++) {
il.get(i).setX(il.get(i).getX() - getMoveInt());
}
for(int i = 15; i < il.size(); i++) {
il.get(i).setX(il.get(i).getX() - getMoveInt());
}
for(int i = 0; i < he3.size(); i++) {
he3.get(i).setX(he3.get(i).getX() - getMoveInt());
}
repaint();
}
@Override
public void run() {
// TODO Auto-generated method stub
}
}