package view;
import model.*;
import org.omg.CosNaming.NamingContextExtPackage.StringNameHelper;
import javax.swing.*;
import java.util.ArrayList;
import java.util.Random;
/**
* User: Glenn Jaspers
* Date: 6-3-13
*/
public class ZeeslagGUI {
private boolean tweeSpelers;
private String winnaar;
private int score;
private String resultaat;
private Zeeslagmaster spel = new Zeeslagmaster();
private Highscore highscore = new Highscore();
private Speler speler1;
private Speler speler2;
private Random random = new Random();
public ZeeslagGUI() {
this.tweeSpelers = false;
this.score = 50;
}
public void setResultaat(String resultaat) {
this.resultaat = resultaat;
}
public void setTweeSpelers(boolean tweeSpelers) {
this.tweeSpelers = tweeSpelers;
}
public void setWinnaar(String winnaar) {
this.winnaar = winnaar;
}
public void setSpeler2(Speler speler2) {
this.speler2 = speler2;
}
public void setSpeler1(Speler speler1) {
this.speler1 = speler1;
}
public void setScore(int score) {
this.score = score;
}
public boolean getTweeSpelers() {
return tweeSpelers;
}
public String getWinnaar() {
return winnaar;
}
public int getScore() {
return score;
}
public Speler getSpeler2() {
return speler2;
}
public Speler getSpeler1() {
return speler1;
}
public void setSpelbord1(int lengte, int breedte, int aantal){
spel.getSpelbord1().setLengte(lengte);
spel.getSpelbord1().setBreedte(breedte);
spel.getSpelbord2().setAantalSchepen(aantal);
}
public void setSpelbord2(int lengte, int breedte,int aantal){
spel.getSpelbord2().setLengte(lengte);
spel.getSpelbord2().setBreedte(breedte);
spel.getSpelbord2().setAantalSchepen(aantal);
}
public void standaardSpel(){
ArrayList<Schip> schepen = new ArrayList<>();
schepen.clear();
for (int j = 0; j < 2; j++) {
for (int i = 0; i < 5; i++) {
if (j == 0) {
schepen = spel.setStandaardSchepen(i);
vraagSchepen(speler1, spel.getSpelbord1(), schepen);
} else {
schepen = spel.setStandaardSchepen(i);
vraagSchepen(speler2,spel.getSpelbord2(),schepen);
}
}
}
int i = 0;
boolean einde = false;
while (einde == false) {
if (i % 2 == 0) {
vraagSchieten(speler1,spel.getSpelbord2());
} else {
vraagSchieten(speler2, spel.getSpelbord1());
}
i++;
if (spel.getSpelbord2().getAantalRaak() >= 17) {
speler1.setHighscore(spel.getSpelbord1().getAantalSchoten());
einde = true;
winnaar = speler1.getNaam();
score = speler1.getHighscore();
highscore.vulHighscoreAan(speler1);
} else {
if (spel.getSpelbord1().getAantalRaak() >= 17) {
speler2.setHighscore(spel.getSpelbord2().getAantalSchoten());
einde = true;
winnaar = speler2.getNaam();
score = speler2.getHighscore();
highscore.vulHighscoreAan(speler2);
}
}
}
new WinnaarFrame(this);
}
public boolean vraagSchepen(Speler speler, Spelbord spelbord, ArrayList<Schip> schepen) {
for (Schip schip: schepen){
if (speler.getNaam() == "Computer") {
boolean gekozen = false;
do {
try {
spel.setX(random.nextInt(10));
spel.setY(random.nextInt(10));
int h = random.nextInt(2);
if (h == 0)
spel.setR('v');
else spel.setR('h');
spel.plaatsSchepen(spelbord, schip);
gekozen = true;
} catch (IllegalArgumentException e) {
gekozen = false;
}
} while (!gekozen);
} else {
new BotenPlaatsenFrame(this, speler, spelbord, spel, schip);
return true;
}
}
return true;
}
public String vraagSchieten(Speler speler, Spelbord spelbord){
String resSchot;
if (speler.getNaam() == "Computer") {
do{
resSchot = spel.cpuSchiet();
} while (resSchot == "Buiten het veld geschoten.\n" || resSchot == "Je hebt deze coördinaat al gebruikt.\n");
spelbord.setAantalSchoten(spelbord.getAantalSchoten() +1);
}else {
do{
new SchietenFrame(this,speler,spelbord,spel);
resSchot = resultaat;
}while (resSchot=="Je hebt deze coördinaat al gebruikt.\n");
spelbord.setAantalSchoten(spelbord.getAantalSchoten()+1);
}
return resSchot;
}
}