200 lines
3.9 KiB
Java
200 lines
3.9 KiB
Java
package Game;
|
|
|
|
import java.awt.Color;
|
|
import java.awt.Graphics;
|
|
|
|
import javax.swing.JOptionPane;
|
|
|
|
public class GameLogic {
|
|
private Player player1, player2;
|
|
private int width, height;
|
|
private Color colorP1, colorP2;
|
|
|
|
private Bullet bullet1, bullet2;
|
|
|
|
// **** Invisibility *****
|
|
|
|
private boolean inVisibilityHappend;
|
|
private Invisibility invisibleMod;
|
|
|
|
|
|
public GameLogic(int maxWidth, int maxHeight)
|
|
{
|
|
width = maxWidth;
|
|
height = maxHeight;
|
|
colorP1 = new Color(3,3,173);
|
|
colorP2 = new Color(173, 3, 3 );
|
|
|
|
inVisibilityHappend = false;
|
|
invisibleMod = new Invisibility(maxWidth, maxHeight);
|
|
|
|
player1 = new Player(getNewName("Please enter Player 1 Name"), Player.LEFT, colorP1, width - 300, 420, 0); //starts from right to left!
|
|
player2 = new Player(getNewName("Now, Please enter Player 2 Name"), Player.RIGHT, colorP2, 0 + 300, 420, 0); //starts from left to right!
|
|
}
|
|
|
|
|
|
private String getNewName(String s){
|
|
return JOptionPane.showInputDialog(s);
|
|
}
|
|
|
|
public void setP1Direction(int direct)
|
|
{
|
|
player1.setDirection(direct);
|
|
}
|
|
|
|
public void setP2Direction(int direct)
|
|
{
|
|
player2.setDirection(direct);
|
|
}
|
|
|
|
public String getP1Name()
|
|
{
|
|
return player1.getName();
|
|
}
|
|
|
|
public String getP2Name()
|
|
{
|
|
return player2.getName();
|
|
}
|
|
|
|
public int getPlayer1Point()
|
|
{
|
|
return player1.getPoints();
|
|
}
|
|
|
|
public int getPlayer2Point()
|
|
{
|
|
return player2.getPoints();
|
|
}
|
|
|
|
public Player getP1(){
|
|
return player1;
|
|
}
|
|
|
|
public Player getP2(){
|
|
return player2;
|
|
}
|
|
|
|
|
|
|
|
|
|
public Bullet getBullet1() {
|
|
return bullet1;
|
|
}
|
|
|
|
|
|
public Bullet getBullet2() {
|
|
return bullet2;
|
|
}
|
|
|
|
|
|
public boolean stepAndOk()
|
|
{
|
|
|
|
player1.step();
|
|
player2.step();
|
|
inVisibilityHappend = invisibleMod.makePoint(player1, player2);
|
|
if(inVisibilityHappend)
|
|
{
|
|
checkPlayersVisibility();
|
|
}
|
|
if(player1.loosed(player2, width, height))
|
|
{
|
|
player2.addPoints();
|
|
return false;
|
|
}
|
|
else if(player2.loosed(player1, width, height))
|
|
{
|
|
player1.addPoints();
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
public void fire(Player p)
|
|
{
|
|
if(!p.isCanFire())
|
|
return;
|
|
if(p == player1)
|
|
{
|
|
bullet1 = new Bullet(player1.getHead().getX(), player1.getHead().getY(), player1.getDirection(), player2.getHead());
|
|
return;
|
|
}
|
|
else if(p == player2)
|
|
{
|
|
bullet2 = new Bullet(player2.getHead().getX(), player2.getHead().getY(), player2.getDirection(), player1.getHead());
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
public void bulletStep(Graphics g, int bulletState)
|
|
{
|
|
|
|
//Player1 Shoots
|
|
try{ //Freezes game and shoots
|
|
if(bulletState == Bullet.STILL_GO)
|
|
bullet1.draw(g);
|
|
else
|
|
player1.setCanFire(false);
|
|
}catch (Exception e) {
|
|
System.out.println("no bullet to p1");
|
|
}
|
|
//Player2 shoots
|
|
try{ //Freezes game and shoots
|
|
bulletState = bullet2.fireStep(width, height);
|
|
if(bulletState == Bullet.STILL_GO)
|
|
bullet2.draw(g);
|
|
else
|
|
player2.setCanFire(false);
|
|
}catch (Exception e) {
|
|
System.out.println("no bullet to p2");
|
|
}
|
|
}
|
|
|
|
public void restart()
|
|
{
|
|
player1 = new Player(player1.getName(), Player.LEFT, colorP1,width - 300, 420, player1.getPoints());
|
|
player2 = new Player(player2.getName(), Player.RIGHT, colorP2, 0 + 300, 420, player2.getPoints());
|
|
inVisibilityHappend = false;
|
|
invisibleMod = new Invisibility(width, height);
|
|
}
|
|
|
|
public void checkPlayersVisibility()
|
|
{
|
|
int x = invisibleMod.getX();
|
|
int y = invisibleMod.getY();
|
|
|
|
if(player1.getHead().getX() == x && player1.getHead().getY() == y)
|
|
invisibleModOn(player1, true);
|
|
else if(player2.getHead().getX() == x && player2.getHead().getY() == y)
|
|
invisibleModOn(player2, true);
|
|
}
|
|
|
|
public void invisibleModOn(Player p, boolean switcher)
|
|
{
|
|
if(switcher)
|
|
{
|
|
System.out.println("got The Shit!!!");
|
|
p.setIsVisible(false);
|
|
invisibleMod.setX(-200);
|
|
invisibleMod.setY(-200);
|
|
}
|
|
else
|
|
p.setIsVisible(true);
|
|
}
|
|
|
|
|
|
|
|
public void draw(Graphics g)
|
|
{
|
|
player1.draw(g);
|
|
player2.draw(g);
|
|
if(inVisibilityHappend)
|
|
invisibleMod.draw(g);
|
|
}
|
|
|
|
}
|