1
0

Compare commits

..

13 Commits

15 changed files with 312 additions and 112 deletions
+1
View File
@@ -7,5 +7,6 @@
</content> </content>
<orderEntry type="inheritedJdk" /> <orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="mysql:mysql-connector-java:8.0.25" level="project" />
</component> </component>
</module> </module>
@@ -3,6 +3,7 @@ package de.oszimt.ls.aliendefence.controller;
import de.oszimt.ls.aliendefence.model.Level; import de.oszimt.ls.aliendefence.model.Level;
import de.oszimt.ls.aliendefence.model.persistence.IPersistance; import de.oszimt.ls.aliendefence.model.persistence.IPersistance;
import de.oszimt.ls.aliendefence.model.User; import de.oszimt.ls.aliendefence.model.User;
import de.oszimt.ls.aliendefence.model.persistence.IUserPersistance;
public class AlienDefenceController { public class AlienDefenceController {
@@ -11,23 +12,30 @@ public class AlienDefenceController {
private LevelController levelController; private LevelController levelController;
private TargetController targetController; private TargetController targetController;
private AttemptController attemptController; private AttemptController attemptController;
//TODO UserController implementieren private UserController userController;
//Persistenz //Persistenz
private IPersistance alienDefenceModel; private IPersistance alienDefenceModel;
private IUserPersistance userModel;
public AlienDefenceController(IPersistance alienDefenceModel) { public AlienDefenceController(IPersistance alienDefenceModel, IUserPersistance userModel) {
super(); super();
this.alienDefenceModel = alienDefenceModel; this.alienDefenceModel = alienDefenceModel;
this.userModel = userModel;
this.attemptController = new AttemptController(alienDefenceModel); this.attemptController = new AttemptController(alienDefenceModel);
this.levelController = new LevelController(alienDefenceModel); this.levelController = new LevelController(alienDefenceModel);
this.targetController = new TargetController(alienDefenceModel); this.targetController = new TargetController(alienDefenceModel);
this.userController = new UserController(userModel);
} }
public IPersistance getAlienDefenceModel() { public IPersistance getAlienDefenceModel() {
return alienDefenceModel; return alienDefenceModel;
} }
public IUserPersistance getUserModel() {
return userModel;
}
public AttemptController getAttemptController() { public AttemptController getAttemptController() {
return attemptController; return attemptController;
} }
@@ -40,6 +48,10 @@ public class AlienDefenceController {
return targetController; return targetController;
} }
public UserController getUserController() {
return userController;
}
public GameController startGame(Level selectedLevel, User user) { public GameController startGame(Level selectedLevel, User user) {
this.gameController = new GameController(selectedLevel, user, this); this.gameController = new GameController(selectedLevel, user, this);
return this.gameController; return this.gameController;
@@ -34,13 +34,13 @@ public class AttemptController {
} }
/** /**
* calculates points from attempt for highscore TODO create formula here * calculates points from attempt for highscore
* *
* @param level Levelobjekt * @param level Levelobjekt
* @param hitcounter Controllerobjekt das die Treffer und Reaktionszeiten misst * @param hitcounter Controllerobjekt das die Treffer und Reaktionszeiten misst
* @return points * @return points
*/ */
public int calculatePoints(Level level, HitCounter hitcounter) { public int calculatePoints(Level level, HitCounter hitcounter) {
return -1; return (int) ((hitcounter.getHit()/level.getTargets().size())* 400L +(hitcounter.getHit()/hitcounter.getShots())* 200L +(1000-(hitcounter.getReactionTime()/hitcounter.getSumReactionDiffernce())*400));
} }
} }
@@ -7,6 +7,8 @@ import de.oszimt.ls.aliendefence.model.Level;
import de.oszimt.ls.aliendefence.model.Point; import de.oszimt.ls.aliendefence.model.Point;
import de.oszimt.ls.aliendefence.model.Target; import de.oszimt.ls.aliendefence.model.Target;
import de.oszimt.ls.aliendefence.model.User; import de.oszimt.ls.aliendefence.model.User;
import de.oszimt.ls.aliendefence.model.persistence.IAttemptPersistance;
import de.oszimt.ls.aliendefence.model.persistenceDB.AttemptDB;
import de.oszimt.ls.aliendefence.view.menue.Highscore; import de.oszimt.ls.aliendefence.view.menue.Highscore;
public class GameController { public class GameController {
@@ -47,18 +49,15 @@ public class GameController {
setHighscore = false; //damit keine doppelten Eintrüge erzeugt werden setHighscore = false; //damit keine doppelten Eintrüge erzeugt werden
// TODO Highscoreeintrag erzeugen Highscore >> F_user_id, F_level_id, shots, /*System.out.println("Highscoreeintrag für " + currentLevel.getName() + ": " + currentUser.getFirst_name()
// hits, reaction_time
System.out.println("Highscoreeintrag für " + currentLevel.getName() + ": " + currentUser.getFirst_name()
+ " hat " + this.getShotsFired() + " mal auf " + this.getTargets().size() + " hat " + this.getShotsFired() + " mal auf " + this.getTargets().size()
+ " Ziele gefeuert und " + this.getHits() + " mal getroffen."); + " Ziele gefeuert und " + this.getHits() + " mal getroffen.");
System.out.println("Highscorepunkte: " + alienDefenceController.getAttemptController().calculatePoints(this.currentLevel, this.hitCounter)); System.out.println("Highscorepunkte: " + alienDefenceController.getAttemptController().calculatePoints(this.currentLevel, this.hitCounter));*/
int insert_id = 0; //int insert_id = 0;
// AttemptDB attemptDB =
// this.alienDefenceController.getAlienDefenceModel().getAttemptPersistance(); IAttemptPersistance attemptDB = this.alienDefenceController.getAlienDefenceModel().getAttemptPersistance();
// int insert_id = attemptDB.createHighscoreEntry(currentUser.getP_user_id(), int insert_id = attemptDB.createHighscoreEntry(currentUser.getP_user_id(), currentLevel.getLevel_id(),
// currentLevel.getLevel_id(), this.getShotsFired(), this.getHits(), this.hitCounter.getReactionTime());
// this.getShotsFired(), this.getHits(), relReactionDiffernce);
new Highscore(this.alienDefenceController.getAttemptController(), currentLevel, new Highscore(this.alienDefenceController.getAttemptController(), currentLevel,
insert_id); insert_id);
@@ -5,8 +5,7 @@ import de.oszimt.ls.aliendefence.model.persistence.IUserPersistance;
/** /**
* de.oszimt.ls.aliendefence.controller for users * de.oszimt.ls.aliendefence.controller for users
* @author Clara Zufall * @author Joel Baldauf
* TODO implement this class
*/ */
public class UserController { public class UserController {
@@ -15,9 +14,14 @@ public class UserController {
public UserController(IUserPersistance userPersistance) { public UserController(IUserPersistance userPersistance) {
this.userPersistance = userPersistance; this.userPersistance = userPersistance;
} }
/**
* erstellt einen User in der Persistenzschicht
* @param user Das zu erstellende Userobjekt
*
*/
public void createUser(User user) { public void createUser(User user) {
this.userPersistance.createUser(user);
} }
/** /**
@@ -26,19 +30,36 @@ public class UserController {
* @param passwort das richtige Passwort * @param passwort das richtige Passwort
* @return Userobjekt, null wenn der User nicht existiert * @return Userobjekt, null wenn der User nicht existiert
*/ */
public User readUser(String username, String passwort) { public User readUser(String username, String passwort) {
return null; if (checkPassword(username, passwort)) return this.userPersistance.readUser(username);
else return null;
} }
/**
* verändert einen User in der Persistenzschicht
* @param user zu aktualisierender User
*
*/
public void changeUser(User user) { public void changeUser(User user) {
this.userPersistance.updateUser(user);
} }
/**
* löscht einen User in der Persistenzschicht
* @param user zu löschender User
*
*/
public void deleteUser(User user) { public void deleteUser(User user) {
this.userPersistance.deleteUser(user);
} }
/**
* überprüft, ob das Passwort eines Benutzers richtig ist
* @param username zu prüfender Nutzername
* @param passwort zu prüfendes Passwort
*/
public boolean checkPassword(String username, String passwort) { public boolean checkPassword(String username, String passwort) {
return false; return this.userPersistance.readUser(username).getPassword().equals(passwort);
} }
} }
@@ -5,5 +5,7 @@ import de.oszimt.ls.aliendefence.model.User;
public interface IUserPersistance { public interface IUserPersistance {
User readUser(String username); User readUser(String username);
int createUser(User user);
void updateUser(User user);
void deleteUser(User user);
} }
@@ -1,10 +1,6 @@
package de.oszimt.ls.aliendefence.model.persistenceDB; package de.oszimt.ls.aliendefence.model.persistenceDB;
import java.sql.Connection; import java.sql.*;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import de.oszimt.ls.aliendefence.model.User; import de.oszimt.ls.aliendefence.model.User;
import de.oszimt.ls.aliendefence.model.persistence.IUserPersistance; import de.oszimt.ls.aliendefence.model.persistence.IUserPersistance;
@@ -12,8 +8,7 @@ import de.oszimt.ls.aliendefence.model.persistenceDB.AccessDB;
/** /**
* databaseconnection for userobjects, Story usermanagement * databaseconnection for userobjects, Story usermanagement
* @author Clara Zufall * @author Joel Baldauf
* TODO finish this class
*/ */
public class UserDB implements IUserPersistance{ public class UserDB implements IUserPersistance{
@@ -23,6 +18,47 @@ public class UserDB implements IUserPersistance{
this.dbAccess = dbAccess; this.dbAccess = dbAccess;
} }
/**
* insert new user into database
*
* @param user userobject to be inserted into database
* @return lastKey
*/
public int createUser(User user) {
String sql = "INSERT INTO users (first_name, sur_name, birthday, street, house_number, postal_code, city, login_name, password, salary_expectations, marital_status, final_grade) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);";
int lastKey = -1;
try (Connection con = DriverManager.getConnection(this.dbAccess.getFullURL(), this.dbAccess.getUser(),
this.dbAccess.getPassword());
PreparedStatement statement = con.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);) {
//statement.setInt(1, level_id);
statement.setString(1, user.getFirst_name());
statement.setString(2, user.getSur_name());
statement.setDate(3, Date.valueOf(user.getBirthday()));
statement.setString(4, user.getStreet());
statement.setString(5, user.getHouse_number());
statement.setString(6, user.getPostal_code());
statement.setString(7, user.getCity());
statement.setString(8, user.getLoginname());
statement.setString(9, user.getPassword());
statement.setInt(10, user.getSalary_expectations());
statement.setString(11, user.getMarital_status());
statement.setDouble(12, user.getFinal_grade());
statement.execute();
ResultSet generatedKeys = statement.getGeneratedKeys();
if (generatedKeys.next()) {
lastKey = generatedKeys.getInt(1);
}
generatedKeys.close();
} catch (SQLException e) {
e.printStackTrace();
}
return lastKey;
}
/** /**
* read userdata by unique username * read userdata by unique username
* *
@@ -54,4 +90,51 @@ public class UserDB implements IUserPersistance{
return user; return user;
} }
/**
* update existing user
*
* @param user userobject to be updated
*/
public void updateUser (User user) {
String sql = "UPDATE users SET first_name = ?, sur_name = ?, birthday = ?, street = ?, house_number = ?, " +
"postal_code = ?, city = ?, login_name = ?, password = ?, salary_expectations = ?, marital_status = ?, final_grade = ? WHERE P_user_id = ?";
try (Connection con = DriverManager.getConnection(this.dbAccess.getFullURL(), this.dbAccess.getUser(),
this.dbAccess.getPassword()); PreparedStatement statement = con.prepareStatement(sql)) {
statement.setString(1, user.getFirst_name());
statement.setString(2, user.getSur_name());
statement.setDate(3, Date.valueOf(user.getBirthday()));
statement.setString(4, user.getStreet());
statement.setString(5, user.getHouse_number());
statement.setString(6, user.getPostal_code());
statement.setString(7, user.getCity());
statement.setString(8, user.getLoginname());
statement.setString(9, user.getPassword());
statement.setInt(10, user.getSalary_expectations());
statement.setString(11, user.getMarital_status());
statement.setDouble(12, user.getFinal_grade());
statement.setInt(13, user.getP_user_id());
statement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* delete existing user
*
* @param user userobject to be deleted
*/
public void deleteUser (User user) {
String sql = "DELETE FROM users WHERE P_user_id = " + user.getP_user_id() + ";";
try (Connection con = DriverManager.getConnection(this.dbAccess.getFullURL(), this.dbAccess.getUser(),
this.dbAccess.getPassword()); Statement statement = con.createStatement()) {
statement.executeUpdate(sql);
} catch (SQLException e) {
e.printStackTrace();
}
}
} }
@@ -15,5 +15,13 @@ public class UserDummy implements IUserPersistance {
public User readUser(String username) { public User readUser(String username) {
return new User(1, "Dummy", "Persistenz", LocalDate.now(), "Dummystr.", "12C", "11111", "Nowhere", username, "pass", 12000, "gefangen", 1.58); return new User(1, "Dummy", "Persistenz", LocalDate.now(), "Dummystr.", "12C", "11111", "Nowhere", username, "pass", 12000, "gefangen", 1.58);
} }
public int createUser(User user) {
return 0;
}
public void deleteUser(User user) {
System.out.println("");
}
public void updateUser(User user) {
System.out.println("");
}
} }
@@ -2,15 +2,19 @@ package de.oszimt.ls.aliendefence.view;
import de.oszimt.ls.aliendefence.controller.AlienDefenceController; import de.oszimt.ls.aliendefence.controller.AlienDefenceController;
import de.oszimt.ls.aliendefence.model.persistence.IPersistance; import de.oszimt.ls.aliendefence.model.persistence.IPersistance;
import de.oszimt.ls.aliendefence.model.persistenceDummy.PersistanceDummy; import de.oszimt.ls.aliendefence.model.persistence.IUserPersistance;
import de.oszimt.ls.aliendefence.model.persistenceDB.AccessDB;
import de.oszimt.ls.aliendefence.model.persistenceDB.PersistanceDB;
import de.oszimt.ls.aliendefence.model.persistenceDB.UserDB;
import de.oszimt.ls.aliendefence.view.menue.MainMenu; import de.oszimt.ls.aliendefence.view.menue.MainMenu;
public class StartAlienDefence { public class StartAlienDefence {
public static void main(String[] args) { public static void main(String[] args) {
AccessDB dbAccess = new AccessDB();
IPersistance alienDefenceModel = new PersistanceDummy();//TODO new PersistanceDB(); IPersistance alienDefenceModel = new PersistanceDB();
AlienDefenceController alienDefenceController = new AlienDefenceController(alienDefenceModel); IUserPersistance userModel = new UserDB(dbAccess);
AlienDefenceController alienDefenceController = new AlienDefenceController(alienDefenceModel, userModel);
MainMenu.show(alienDefenceController); MainMenu.show(alienDefenceController);
} }
} }
@@ -1,7 +1,6 @@
package de.oszimt.ls.aliendefence.view.menue; package de.oszimt.ls.aliendefence.view.menue;
import java.awt.BorderLayout; import java.awt.*;
import java.awt.Dimension;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import java.util.Vector; import java.util.Vector;
@@ -15,6 +14,7 @@ import javax.swing.JTable;
import de.oszimt.ls.aliendefence.controller.AttemptController; import de.oszimt.ls.aliendefence.controller.AttemptController;
import de.oszimt.ls.aliendefence.model.Level; import de.oszimt.ls.aliendefence.model.Level;
public class Highscore extends JFrame { public class Highscore extends JFrame {
// Attribute // Attribute
@@ -50,13 +50,25 @@ public class Highscore extends JFrame {
// Tablle basierend auf zweidimensionalem Vector // Tablle basierend auf zweidimensionalem Vector
JTable table = new JTable(vecRow, title); JTable table = new JTable(vecRow, title);
table.setBackground(Color.BLACK);
table.setForeground(Color.YELLOW);
table.setSelectionBackground(Color.YELLOW);
table.setSelectionForeground(Color.BLACK);
table.getTableHeader().setOpaque(false);
table.getTableHeader().setBackground(Color.BLACK);
table.getTableHeader().setForeground(Color.YELLOW);
if (mark >= 0) if (mark >= 0)
table.setRowSelectionInterval(mark, mark); table.setRowSelectionInterval(mark, mark);
setMinimumSize(new Dimension(650, 500)); setMinimumSize(new Dimension(650, 500));
getContentPane().add(new JScrollPane(table), BorderLayout.NORTH); JScrollPane scrollPane = new JScrollPane(table);
scrollPane.getViewport().setBackground(Color.BLACK);
getContentPane().add(scrollPane, BorderLayout.NORTH);
setTitle("Highscore-Liste"); // Titel setTitle("Highscore-Liste"); // Titel
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
pack(); pack();
getContentPane().setBackground(Color.BLACK);
setVisible(true); setVisible(true);
JButton btnZielndern = new JButton("Highscoreliste löschen"); JButton btnZielndern = new JButton("Highscoreliste löschen");
@@ -67,6 +79,7 @@ public class Highscore extends JFrame {
}); });
JPanel pnlSouth = new JPanel(); JPanel pnlSouth = new JPanel();
pnlSouth.setBackground(Color.BLACK);
pnlSouth.add(btnZielndern); pnlSouth.add(btnZielndern);
// fügt Panel mit Button hinzu // fügt Panel mit Button hinzu
@@ -2,22 +2,40 @@
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="de.oszimt.ls.aliendefence.view.menue.LevelChoice"> <form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="de.oszimt.ls.aliendefence.view.menue.LevelChoice">
<grid id="27dc6" binding="panel" layout-manager="BorderLayout" hgap="0" vgap="0"> <grid id="27dc6" binding="panel" layout-manager="BorderLayout" hgap="0" vgap="0">
<constraints> <constraints>
<xy x="20" y="20" width="501" height="400"/> <xy x="20" y="20" width="677" height="400"/>
</constraints> </constraints>
<properties/> <properties>
<background color="-16777216"/>
<foreground color="-16777216"/>
</properties>
<border type="none"/> <border type="none"/>
<children> <children>
<grid id="6dda1" layout-manager="FlowLayout" hgap="5" vgap="5" flow-align="1"> <grid id="6dda1" layout-manager="FlowLayout" hgap="5" vgap="5" flow-align="1">
<constraints border-constraint="South"/> <constraints border-constraint="South"/>
<properties/> <properties>
<background color="-16777216"/>
<foreground color="-16777216"/>
</properties>
<border type="none"/> <border type="none"/>
<children> <children>
<component id="a4374" class="javax.swing.JButton" binding="btnBack">
<constraints/>
<properties>
<text value="zurück"/>
</properties>
</component>
<component id="cdd2d" class="javax.swing.JButton" binding="btnPlay"> <component id="cdd2d" class="javax.swing.JButton" binding="btnPlay">
<constraints/> <constraints/>
<properties> <properties>
<text value="Spielen"/> <text value="Spielen"/>
</properties> </properties>
</component> </component>
<component id="a6b5c" class="javax.swing.JButton" binding="btnHighscore">
<constraints/>
<properties>
<text value="Highscore"/>
</properties>
</component>
<component id="c85bc" class="javax.swing.JButton" binding="btnNewLevel"> <component id="c85bc" class="javax.swing.JButton" binding="btnNewLevel">
<constraints/> <constraints/>
<properties> <properties>
@@ -41,19 +59,30 @@
<component id="fc00" class="javax.swing.JLabel"> <component id="fc00" class="javax.swing.JLabel">
<constraints border-constraint="North"/> <constraints border-constraint="North"/>
<properties> <properties>
<enabled value="true"/>
<font size="18" style="1"/> <font size="18" style="1"/>
<foreground color="-16711936"/>
<horizontalAlignment value="0"/> <horizontalAlignment value="0"/>
<text value="Levelauswahl"/> <text value="Levelauswahl"/>
</properties> </properties>
</component> </component>
<scrollpane id="231d4"> <scrollpane id="231d4" binding="scrollPane">
<constraints border-constraint="Center"/> <constraints border-constraint="Center"/>
<properties/> <properties>
<background color="-16777216"/>
<foreground color="-16711936"/>
</properties>
<border type="none"/> <border type="none"/>
<children> <children>
<component id="28513" class="javax.swing.JTable" binding="tblLevels"> <component id="28513" class="javax.swing.JTable" binding="tblLevels">
<constraints/> <constraints/>
<properties/> <properties>
<background color="-16777216"/>
<foreground color="-16711936"/>
<gridColor color="-16777216"/>
<selectionBackground color="-16711936"/>
<selectionForeground color="-16777216"/>
</properties>
</component> </component>
</children> </children>
</scrollpane> </scrollpane>
@@ -21,6 +21,9 @@ public class LevelChoice {
private JTable tblLevels; private JTable tblLevels;
private JButton btnDeleteLevel; private JButton btnDeleteLevel;
private JButton btnPlay; private JButton btnPlay;
private JScrollPane scrollPane;
private JButton btnBack;
private JButton btnHighscore;
private final LevelController lvlControl; private final LevelController lvlControl;
private final LeveldesignWindow leveldesignWindow; private final LeveldesignWindow leveldesignWindow;
@@ -65,12 +68,30 @@ public class LevelChoice {
if (source == LeveldesignWindow.LEVELEDITOR) { if (source == LeveldesignWindow.LEVELEDITOR) {
btnPlay.setVisible(false); btnPlay.setVisible(false);
btnHighscore.setVisible(false);
} }
else if (source == LeveldesignWindow.TESTEN) { else if (source == LeveldesignWindow.TESTEN) {
btnNewLevel.setVisible(false); btnNewLevel.setVisible(false);
btnUpdateLevel.setVisible(false); btnUpdateLevel.setVisible(false);
btnDeleteLevel.setVisible(false); btnDeleteLevel.setVisible(false);
} }
scrollPane.getViewport().setBackground(Color.BLACK);
tblLevels.getTableHeader().setOpaque(false);
tblLevels.getTableHeader().setBackground(Color.BLACK);
tblLevels.getTableHeader().setForeground(Color.YELLOW);
btnBack.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
leveldesignWindow.dispose();
}
});
btnHighscore.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
btnHighscore_Clicked(controller);
}
});
} }
private String[][] getLevelsAsTableModel() { private String[][] getLevelsAsTableModel() {
@@ -119,6 +140,14 @@ public class LevelChoice {
t.start(); t.start();
} }
public void btnHighscore_Clicked(AlienDefenceController alienDefenceController) {
//Level_id des selektierten Elements auslesen
int level_id = Integer
.parseInt((String) this.tblLevels.getModel().getValueAt(this.tblLevels.getSelectedRow(), 0));
new Highscore(alienDefenceController.getAttemptController(), alienDefenceController.getLevelController().readLevel(level_id));
}
public JPanel getPanel() { public JPanel getPanel() {
return panel; return panel;
@@ -1,6 +1,6 @@
package de.oszimt.ls.aliendefence.view.menue; package de.oszimt.ls.aliendefence.view.menue;
import java.awt.CardLayout; import java.awt.*;
import javax.swing.JFrame; import javax.swing.JFrame;
import javax.swing.JPanel; import javax.swing.JPanel;
@@ -21,8 +21,8 @@ public class LeveldesignWindow extends JFrame {
private CardLayout cards; private CardLayout cards;
public static int TESTEN = 0; public static final int TESTEN = 0;
public static int LEVELEDITOR = 1; public static final int LEVELEDITOR = 1;
/** /**
* Create the frame. * Create the frame.
@@ -35,6 +35,8 @@ public class LeveldesignWindow extends JFrame {
setBounds(100, 100, 1200, 800); setBounds(100, 100, 1200, 800);
contentPane = new JPanel(); contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setBackground(Color.BLACK);
setContentPane(contentPane); setContentPane(contentPane);
this.cards = new CardLayout(); this.cards = new CardLayout();
contentPane.setLayout(cards); contentPane.setLayout(cards);
@@ -47,6 +49,8 @@ public class LeveldesignWindow extends JFrame {
this.showLevelChooser(); this.showLevelChooser();
this.setLocationRelativeTo(null); this.setLocationRelativeTo(null);
this.setUndecorated(true);
this.setExtendedState(JFrame.MAXIMIZED_BOTH);
this.setVisible(true); this.setVisible(true);
} }
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="de.oszimt.ls.aliendefence.view.menue.MainMenu"> <form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="de.oszimt.ls.aliendefence.view.menue.MainMenu">
<grid id="27dc6" binding="main" layout-manager="GridLayoutManager" row-count="13" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1"> <grid id="27dc6" binding="main" layout-manager="GridLayoutManager" row-count="13" column-count="3" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<margin top="0" left="0" bottom="0" right="0"/> <margin top="0" left="0" bottom="0" right="0"/>
<constraints> <constraints>
<xy x="20" y="20" width="326" height="715"/> <xy x="20" y="20" width="326" height="715"/>
@@ -15,8 +15,8 @@
<children> <children>
<component id="c5b1d" class="javax.swing.JLabel"> <component id="c5b1d" class="javax.swing.JLabel">
<constraints> <constraints>
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="1" fill="0" indent="0" use-parent-layout="false"> <grid row="1" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="0" fill="0" indent="0" use-parent-layout="false">
<preferred-size width="177" height="9"/> <preferred-size width="177" height="100"/>
</grid> </grid>
</constraints> </constraints>
<properties> <properties>
@@ -27,8 +27,8 @@
</component> </component>
<component id="8961e" class="javax.swing.JLabel"> <component id="8961e" class="javax.swing.JLabel">
<constraints> <constraints>
<grid row="1" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="0" fill="0" indent="1" use-parent-layout="false"> <grid row="2" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="1" fill="0" indent="1" use-parent-layout="false">
<preferred-size width="200" height="103"/> <preferred-size width="200" height="200"/>
</grid> </grid>
</constraints> </constraints>
<properties> <properties>
@@ -40,7 +40,7 @@
</component> </component>
<component id="965b" class="javax.swing.JLabel"> <component id="965b" class="javax.swing.JLabel">
<constraints> <constraints>
<grid row="2" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/> <grid row="4" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
</constraints> </constraints>
<properties> <properties>
<font size="14" style="1"/> <font size="14" style="1"/>
@@ -50,7 +50,7 @@
</component> </component>
<component id="14947" class="javax.swing.JLabel"> <component id="14947" class="javax.swing.JLabel">
<constraints> <constraints>
<grid row="4" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/> <grid row="6" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
</constraints> </constraints>
<properties> <properties>
<font size="14" style="1"/> <font size="14" style="1"/>
@@ -60,64 +60,32 @@
</component> </component>
<component id="b84a7" class="javax.swing.JPasswordField" binding="passwordTextField"> <component id="b84a7" class="javax.swing.JPasswordField" binding="passwordTextField">
<constraints> <constraints>
<grid row="5" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="6" anchor="8" fill="1" indent="0" use-parent-layout="false"> <grid row="7" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="1" indent="0" use-parent-layout="false">
<preferred-size width="150" height="-1"/> <preferred-size width="150" height="-1"/>
</grid> </grid>
</constraints> </constraints>
<properties/> <properties/>
</component> </component>
<component id="4aca1" class="javax.swing.JLabel">
<constraints>
<grid row="6" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<font size="14" style="1"/>
<foreground color="-256"/>
<text value="Level:"/>
</properties>
</component>
<component id="a16d0" class="javax.swing.JComboBox" binding="level">
<constraints>
<grid row="7" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="2" anchor="8" fill="1" indent="0" use-parent-layout="false"/>
</constraints>
<properties/>
</component>
<component id="39eaf" class="javax.swing.JButton" binding="playButton"> <component id="39eaf" class="javax.swing.JButton" binding="playButton">
<constraints> <constraints>
<grid row="8" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/> <grid row="9" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
</constraints> </constraints>
<properties> <properties>
<actionCommand value=""/> <actionCommand value=""/>
<text value="Spielen"/> <text value="Spielen"/>
</properties> </properties>
</component> </component>
<component id="6cda2" class="javax.swing.JButton" binding="testButton">
<constraints>
<grid row="9" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<text value="Testen"/>
</properties>
</component>
<component id="9d215" class="javax.swing.JTextField" binding="loginTextField"> <component id="9d215" class="javax.swing.JTextField" binding="loginTextField">
<constraints> <constraints>
<grid row="3" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="6" anchor="8" fill="1" indent="0" use-parent-layout="false"> <grid row="5" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="1" indent="0" use-parent-layout="false">
<preferred-size width="150" height="-1"/> <preferred-size width="150" height="-1"/>
</grid> </grid>
</constraints> </constraints>
<properties/> <properties/>
</component> </component>
<component id="e66c9" class="javax.swing.JButton" binding="highscoreButton" default-binding="true">
<constraints>
<grid row="10" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<text value="Highscore"/>
</properties>
</component>
<component id="7ae73" class="javax.swing.JButton" binding="levelEditorButton" default-binding="true"> <component id="7ae73" class="javax.swing.JButton" binding="levelEditorButton" default-binding="true">
<constraints> <constraints>
<grid row="11" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/> <grid row="10" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
</constraints> </constraints>
<properties> <properties>
<background color="-256"/> <background color="-256"/>
@@ -127,7 +95,7 @@
</component> </component>
<component id="ef1af" class="javax.swing.JButton" binding="exitButton"> <component id="ef1af" class="javax.swing.JButton" binding="exitButton">
<constraints> <constraints>
<grid row="12" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/> <grid row="11" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
</constraints> </constraints>
<properties> <properties>
<background color="-3552823"/> <background color="-3552823"/>
@@ -135,6 +103,44 @@
<text value="Beenden"/> <text value="Beenden"/>
</properties> </properties>
</component> </component>
<hspacer id="abee9">
<constraints>
<grid row="4" column="0" row-span="1" col-span="1" vsize-policy="1" hsize-policy="6" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
</constraints>
</hspacer>
<hspacer id="da8b7">
<constraints>
<grid row="4" column="2" row-span="1" col-span="1" vsize-policy="1" hsize-policy="6" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
</constraints>
</hspacer>
<vspacer id="c33be">
<constraints>
<grid row="0" column="1" row-span="1" col-span="1" vsize-policy="6" hsize-policy="1" anchor="0" fill="2" indent="0" use-parent-layout="false"/>
</constraints>
</vspacer>
<vspacer id="8c4ad">
<constraints>
<grid row="12" column="1" row-span="1" col-span="1" vsize-policy="6" hsize-policy="1" anchor="0" fill="2" indent="0" use-parent-layout="false"/>
</constraints>
</vspacer>
<vspacer id="109a4">
<constraints>
<grid row="8" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="1" anchor="0" fill="2" indent="0" use-parent-layout="false">
<minimum-size width="-1" height="30"/>
<preferred-size width="-1" height="30"/>
<maximum-size width="-1" height="30"/>
</grid>
</constraints>
</vspacer>
<vspacer id="99842">
<constraints>
<grid row="3" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="1" anchor="0" fill="2" indent="0" use-parent-layout="false">
<minimum-size width="-1" height="30"/>
<preferred-size width="-1" height="30"/>
<maximum-size width="-1" height="30"/>
</grid>
</constraints>
</vspacer>
</children> </children>
</grid> </grid>
</form> </form>
@@ -15,21 +15,16 @@ public class MainMenu {
private JPanel main; private JPanel main;
private JTextField loginTextField; private JTextField loginTextField;
private JComboBox level;
private JButton playButton; private JButton playButton;
private JButton testButton;
private JButton highscoreButton;
private JButton levelEditorButton; private JButton levelEditorButton;
private JButton exitButton; private JButton exitButton;
private JPasswordField passwordTextField; private JPasswordField passwordTextField;
public MainMenu(AlienDefenceController alienDefenceController) { public MainMenu(AlienDefenceController alienDefenceController) {
//fill level chooser //fill level chooser
// Levelliste für die ComboBox abrufen // Levelliste für die ComboBox abrufen
List<Level> arrLevel = alienDefenceController.getLevelController().readAllLevels(); List<Level> arrLevel = alienDefenceController.getLevelController().readAllLevels();
String[] arrLevelNames = getLevelNames(arrLevel); String[] arrLevelNames = getLevelNames(arrLevel);
level.setModel(new DefaultComboBoxModel<String>(arrLevelNames));
// Button Spielen - ActionListener // Button Spielen - ActionListener
playButton.addActionListener(new ActionListener() { playButton.addActionListener(new ActionListener() {
@@ -44,9 +39,9 @@ public class MainMenu {
Thread t = new Thread("GameThread") { Thread t = new Thread("GameThread") {
@Override @Override
public void run() { public void run() {
new LeveldesignWindow(alienDefenceController, user, LeveldesignWindow.TESTEN);
GameController gameController = alienDefenceController.startGame(arrLevel.get(level.getSelectedIndex()), user); //GameController gameController = alienDefenceController.startGame(arrLevel.get(level.getSelectedIndex()), user);
new GameGUI(gameController).start(); //new GameGUI(gameController).start();
} }
}; };
t.start(); t.start();
@@ -59,22 +54,14 @@ public class MainMenu {
}); });
// Button Testen - ActionListener // Button Testen - ActionListener
testButton.addActionListener(new ActionListener() { /*testButton.addActionListener(new ActionListener() {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
// Erstellt Modell von aktuellen Nutzer // Erstellt Modell von aktuellen Nutzer
User user = new User(1, "test", "pass"); User user = new User(1, "test", "pass");
new LeveldesignWindow(alienDefenceController, user, LeveldesignWindow.TESTEN); new LeveldesignWindow(alienDefenceController, user, LeveldesignWindow.TESTEN);
} }
}); });*/
// Button Highscore
highscoreButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new Highscore(alienDefenceController.getAttemptController(), arrLevel.get(level.getSelectedIndex()));
}
});
// Button Leveleditor // Button Leveleditor
levelEditorButton.addActionListener(new ActionListener() { levelEditorButton.addActionListener(new ActionListener() {
@@ -106,10 +93,12 @@ public class MainMenu {
public static void show(AlienDefenceController alienDefenceController) { public static void show(AlienDefenceController alienDefenceController) {
JFrame frame = new JFrame("AlienDefence"); JFrame frame = new JFrame("AlienDefence");
frame.setUndecorated(true);
frame.setContentPane(new MainMenu(alienDefenceController).main); frame.setContentPane(new MainMenu(alienDefenceController).main);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack(); frame.pack();
frame.setLocationRelativeTo(null); frame.setLocationRelativeTo(null);
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setVisible(true); frame.setVisible(true);
} }
} }