Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package boggle.pkg11;
- import java.util.ArrayList;
- /**
- *
- */
- public class Raster {
- /*
- Constanten die moeten ingesteld worden in door spel menu.
- */
- public int aantalMensen;
- public int aantalBots;
- public int totaalAantalSpelers;
- public String[] naamSpelers;
- public float niveauBot;
- /*
- De lijsten met alle spelers
- */
- ArrayList<Speler> spelers;
- Speler currentSpeler;
- int currentSpelerNumber;
- /*
- Constante verhoudingen die gebruikt worden in de updateWindowSize() methode.
- */
- public final static float SIZE_WIDTH_VERHOUDING = 0.125f;
- public final static float SIZE_HEIGHT_VERHOUDING = 0.15f;
- public final static float SIZE_BETWEEN_VERHOUDING = 0.3f;
- public final static float SIZE_TEXTSIZE_VERHOUDING = 0.5f;
- public final static float RASTER_XOFFSET_VERHOUDING = 0.166f;
- /*
- Het main object van het spel
- */
- BoggleApp game;
- /*
- */
- String woord; //Het woord at momenteel gevormd word
- int punten; //Aantal totale punten van de speler
- Blok lastBlokDragged; //Het blok die het laatste aangeklikt werd
- boolean waitNextPlayer;//Ofdat het spel moet wachten op de volgende speler
- private int aantalClicks;
- /*
- Waarden voor de afmetingen en positie van het raster
- */
- private float size;
- private float between;
- private float xOffset;
- private float yOffset;
- private float textSize;
- private float textSize2;
- private int width1;
- private int height1;
- /*
- */
- ArrayList<Blok> blokken; //Alle blokken die op het scherm staan
- ArrayList<String> correctWords; //Alle woorden die al gevonden zijn door de speler
- ArrayList<String> woorden; //Alle woorden die bestaan in de nederlandse
- ArrayList<Blok> blokkenUsed; //Alle blokken die momenteel gebruikt worden om het woord te maken
- ArrayList<Effect> effecten; //Alle effecten die ooit gebruikt werden
- /**
- * De constructor van Raster
- */
- public Raster() {
- game = BoggleApp.game;
- woord = "";
- waitNextPlayer = true;
- aantalClicks = 0;
- /*
- Het aanmaken van de arraylisten
- */
- woorden = new ArrayList();
- correctWords = new ArrayList();
- blokkenUsed = new ArrayList();
- effecten = new ArrayList();
- blokken = new ArrayList();
- spelers = new ArrayList();
- String[] Woorden = game.loadStrings("NL.txt");
- for(int i = 0; i<Woorden.length;i++){
- woorden.add(Woorden[i]);
- }
- /*
- Het inlezen van het bestand NL.txt, en al deze woorden in "woorden" opslaan
- Source: http://stackoverflow.com/questions/8330695/java-scanner-not-going-through-entire-file
- */
- // BufferedReader br = null;
- // try {
- // br = new BufferedReader(new FileReader(new File("NL.txt")));
- // String lijn;
- // while ((lijn = br.readLine()) != null) {
- // woorden.add(lijn);
- // }
- // } catch (FileNotFoundException e) {
- // e.printStackTrace();
- // } catch (IOException e) {
- // e.printStackTrace();
- // } finally {
- // if (br != null) {
- // try {
- // br.close();
- // } catch (IOException e) {
- // e.printStackTrace();
- // }
- // }
- // }
- //Begin waarde geven
- char[] test = {'a', 'a', 'a', 'a', 'a', 'a'};
- lastBlokDragged = new Blok(test, -20);
- //Zetten van de afmetingen van het raster
- updateWindowSize();
- //Het aanmaken van de blokken die op het scherm staan
- char[] blok1 = {'R', 'E', 'S', 'I', 'H', 'N'};
- char[] blok2 = {'W', 'L', 'U', 'R', 'G', 'E'};
- char[] blok3 = {'A', 'P', 'D', 'E', 'C', 'M'};
- char[] blok4 = {'N', 'B', 'I', 'T', 'L', 'A'};
- char[] blok5 = {'T', 'O', 'N', 'E', 'D', 'S'};
- char[] blok6 = {'T', 'E', 'N', 'I', 'G', 'V'};
- char[] blok7 = {'M', 'B', 'D', 'J', 'Q', 'O'};
- char[] blok8 = {'Z', 'K', 'O', 'N', 'E', 'T'};
- char[] blok9 = {'A', 'M', 'I', 'R', 'O', 'S'};
- char[] blok10 = {'A', 'A', 'I', 'E', 'O', 'W'};
- char[] blok11 = {'N', 'Z', 'E', 'V', 'A', 'D'};
- char[] blok12 = {'S', 'R', 'A', 'H', 'C', 'E'};
- char[] blok13 = {'R', 'K', 'X', 'A', 'F', 'I'};
- char[] blok14 = {'H', 'I', 'S', 'E', 'E', 'F'};
- char[] blok15 = {'U', 'N', 'Y', 'J', 'G', 'E'};
- char[] blok16 = {'P', 'U', 'N', 'E', 'T', 'L'};
- blokken.add(new Blok(blok1, 0));
- blokken.add(new Blok(blok2, 1));
- blokken.add(new Blok(blok3, 2));
- blokken.add(new Blok(blok4, 3));
- blokken.add(new Blok(blok5, 4));
- blokken.add(new Blok(blok6, 5));
- blokken.add(new Blok(blok7, 6));
- blokken.add(new Blok(blok8, 7));
- blokken.add(new Blok(blok9, 8));
- blokken.add(new Blok(blok10, 9));
- blokken.add(new Blok(blok11, 10));
- blokken.add(new Blok(blok12, 11));
- blokken.add(new Blok(blok13, 12));
- blokken.add(new Blok(blok14, 13));
- blokken.add(new Blok(blok15, 14));
- blokken.add(new Blok(blok16, 15));
- }
- /**
- * De functie die alles tekent op het scherm
- */
- public void draw() {
- //Indien het grote van het kader veranderd is, alle afmetingen aanpassen
- updateWindowSize();
- //Het tekenen van het scorebord
- scorebord();
- //Het tekenen van alle blokken
- for (int i = 0; i < 4; i++) {
- for (int j = 0; j < 4; j++) {
- game.stroke(5);
- game.strokeWeight(2);
- game.fill(243, 239, 224);
- float posX = xOffset + i * (size + between);
- float posY = yOffset + j * (size + between);
- game.rect(posX, posY, size, size, 15);
- }
- }
- //Het tekenen van alle blokken in een andere kleur die al gebruikt zijn in het woord
- for (int x = 0; x < blokkenUsed.size(); x++) {
- int j = blokkenUsed.get(x).getID() % 4;
- int i = (blokkenUsed.get(x).getID() - j) / 4;
- float posX = xOffset + i * (size + between);
- float posY = yOffset + j * (size + between);
- game.fill(150, 150, 150);
- game.rect(posX, posY, size, size, 15);
- }
- //Het tekenen van alle letters in de blokken
- game.textSize(textSize);
- game.noStroke();
- game.fill(100);
- for (int i = 0; i < 4; i++) {
- for (int j = 0; j < 4; j++) {
- float letterPosX = xOffset + i * (size + between) + ((size / 2) - (game.textWidth(blokken.get(i * 4 + j).getLetter()) / 2));
- float letterPosY = yOffset + j * (size + between) + ((size / 2) + (textSize / 2));
- game.text(blokken.get(i * 4 + j).getLetter(), letterPosX, letterPosY);
- }
- }
- //Het tekenen van het woord die momenteel gevormd wordt
- game.textSize(20);
- game.fill(0);
- game.text(woord, 100, 80);
- //Het tekenen van score
- game.text("Punten: " + punten, 100, 20);
- //Het tekenen van de woorden die al gevonden werden
- float woordX = xOffset + 4 * size + 4 * between + 20;
- float woordY = yOffset + 50;
- for (int x = 0; correctWords.size() > x; x++) {
- game.text(correctWords.get(x), woordX, woordY);
- woordY = woordY + 25;
- }
- //Het tekenen van alle effecten die nog niet ten einde zijn
- for (int x = 0; effecten.size() > x; x++) {
- if (!effecten.get(x).isFinished()) {
- effecten.get(x).draw();
- }
- }
- //Tekenen van de naam van de speler
- game.fill(245);
- game.stroke(5);
- game.strokeWeight(2);
- game.text(currentSpeler.getNaam(), (xOffset + 4 * size + 4 * between + (2 * xOffset - game.textWidth("Gevonden Woorden") / 2)), yOffset + (textSize / 2) - 40);
- if (waitNextPlayer) {
- textSize2 = textSize * 1f;
- game.textSize(textSize2);
- game.noStroke();
- game.fill(150, 200);
- game.rect(0, 0, game.width, game.height);
- game.stroke(5);
- game.strokeWeight(2);
- game.fill(50);
- game.text("Klik twee maal om te spelen.", xOffset + 10, yOffset + textSize2);
- game.text("Het is aan speler " + currentSpeler.getAlleenNaam(), xOffset + 10, textSize2 + yOffset + textSize2);
- game.text("Succes!", xOffset + 10, textSize2 + yOffset + (2f * textSize2));
- }
- }
- /**
- * Indien de gebruiken het scherm aanpast, zullen alle afmetingen ook
- * aangepast worden
- */
- public final void updateWindowSize() {
- yOffset = 100;
- if (width1 != game.width || height1 != game.height) {
- size = game.width * SIZE_WIDTH_VERHOUDING;
- if (4 * size + 3 * between + yOffset > game.height) {
- size = game.height * SIZE_HEIGHT_VERHOUDING;
- }
- between = size * SIZE_BETWEEN_VERHOUDING;
- textSize = size * SIZE_TEXTSIZE_VERHOUDING;
- xOffset = (game.width - 4 * size - 3 * between) * RASTER_XOFFSET_VERHOUDING;
- }
- width1 = game.width;
- height1 = game.height;
- }
- /**
- * Het tekenen van het scorebord
- */
- public void scorebord() {
- game.textSize(textSize / 3);
- game.fill(72, 91, 93);
- game.stroke(5);
- game.strokeWeight(2);
- game.rect((xOffset + 4 * size + 4 * between), yOffset, 4 * xOffset, (4 * size + 3 * between));
- game.fill(245);
- game.text("Gevonden Woorden", (xOffset + 4 * size + 4 * between + (2 * xOffset - game.textWidth("Gevonden Woorden") / 2)), yOffset + (textSize / 2));
- }
- /**
- * De functie die opgeroepen word wanneer de muis ingedrukt verplaatst wordt
- */
- public void mouseDragged() {
- if (waitNextPlayer) {
- return;
- }
- Blok myBlok = getBlockAtMouseOffset();
- if (myBlok != null) {
- int idc = myBlok.getID();
- int id = lastBlokDragged.getID();
- System.out.println("Current Block (idc) ID: " + idc + " Last Block (id) ID: " + id + ".");
- // if (idc != id) {
- // if ((idc + 1) == id || (idc - 1) == id
- // || (idc + 4) == id || (idc - 4) == id
- // || (idc + 5) == id || (idc - 5) == id
- // || (idc + 3) == id || (idc - 3) == id
- // || id == -20) {
- // if (!alreadyUsed(myBlok)) {
- // woord = woord + myBlok.getLetter();
- // blokkenUsed.add(myBlok);
- // lastBlokDragged = myBlok;
- // }
- // }
- // Een alternatieve methode zodat het foutloos zou werken. (nog niet af)
- if (idc != id) {
- switch (idc) {
- //Elk hoek punt
- case 0:
- if (id == 1 || id == 5 || id == 4 || id == -20) {
- if (!alreadyUsed(myBlok)) {
- woord = woord + myBlok.getLetter();
- blokkenUsed.add(myBlok);
- lastBlokDragged = myBlok;
- }
- }
- break;
- // switch (idc) {
- case 1:
- if(id == 0 || id == 4 || id == 5 || id == 6 || id == 2 || id == -20)
- {
- if (!alreadyUsed(myBlok)) {
- woord = woord + myBlok.getLetter();
- blokkenUsed.add(myBlok);
- lastBlokDragged = myBlok;
- }
- }
- break;
- // switch (idc) {
- case 2:
- if(id == 1 || id == 5 || id == 6 || id == 7 || id == 3 || id == -20){
- if (!alreadyUsed(myBlok)) {
- woord = woord + myBlok.getLetter();
- blokkenUsed.add(myBlok);
- lastBlokDragged = myBlok;
- }
- }
- break;
- // switch (idc) {
- case 3:
- if(id == 2 || id == 6 || id == 7 || id ==-20){
- if (!alreadyUsed(myBlok)) {
- woord = woord + myBlok.getLetter();
- blokkenUsed.add(myBlok);
- lastBlokDragged = myBlok;
- }
- }
- break;
- // switch (idc) {
- case 4:
- if(id == 0 || id == 1 || id == 5 || id == 9 || id == 8 || id == -20){
- if (!alreadyUsed(myBlok)) {
- woord = woord + myBlok.getLetter();
- blokkenUsed.add(myBlok);
- lastBlokDragged = myBlok;
- }
- }
- break;
- case 5:
- if(id == 0 || id == 1 || id == 2 || id == 6 || id == 10 || id == 8 || id == 9 || id == 4 || id == -20){
- if (!alreadyUsed(myBlok)) {
- woord = woord + myBlok.getLetter();
- blokkenUsed.add(myBlok);
- lastBlokDragged = myBlok;
- }
- }
- break;
- case 6:
- if(id == 1 || id == 2 || id == 3 || id == 7 || id == 11 || id == 10 || id == 9 || id == 5 || id == -20){
- if (!alreadyUsed(myBlok)) {
- woord = woord + myBlok.getLetter();
- blokkenUsed.add(myBlok);
- lastBlokDragged = myBlok;
- }
- }
- break;
- case 7:
- if(id == 3 || id == 2 || id == 6 || id == 10 ||id == 11 || id == -20){
- if (!alreadyUsed(myBlok)) {
- woord = woord + myBlok.getLetter();
- blokkenUsed.add(myBlok);
- lastBlokDragged = myBlok;
- }
- }
- break;
- case 8:
- if ( id == 4 || id == 5 || id == 9 || id == 13 || id == 12 || id == -20){
- if (!alreadyUsed(myBlok)) {
- woord = woord + myBlok.getLetter();
- blokkenUsed.add(myBlok);
- lastBlokDragged = myBlok;
- }
- }
- break;
- case 9:
- if (id == 4 || id == 5 || id == 6 || id == 10 || id == 14 || id == 13 || id == 12 || id == 8 || id == -20){
- if (!alreadyUsed(myBlok)) {
- woord = woord + myBlok.getLetter();
- blokkenUsed.add(myBlok);
- lastBlokDragged = myBlok;
- }
- }
- break;
- case 10:
- if (id == 5 || id == 6 || id == 7 || id == 11 || id == 15 || id == 14 || id == 13 || id == 9 || id == -20){
- if (!alreadyUsed(myBlok)) {
- woord = woord + myBlok.getLetter();
- blokkenUsed.add(myBlok);
- lastBlokDragged = myBlok;
- }
- }
- break;
- case 11:
- if(id == 7 || id == 6 || id == 10 || id == 14 || id == 15 || id == -20){
- if (!alreadyUsed(myBlok)) {
- woord = woord + myBlok.getLetter();
- blokkenUsed.add(myBlok);
- lastBlokDragged = myBlok;
- }
- }
- break;
- case 12:
- if ( id == 8 || id == 9 || id == 13 || id == -20){
- if (!alreadyUsed(myBlok)) {
- woord = woord + myBlok.getLetter();
- blokkenUsed.add(myBlok);
- lastBlokDragged = myBlok;
- }
- }
- break;
- case 13 :
- if( id == 12 || id == 8 || id == 9 || id == 10 || id == 14 || id == -20){
- if (!alreadyUsed(myBlok)) {
- woord = woord + myBlok.getLetter();
- blokkenUsed.add(myBlok);
- lastBlokDragged = myBlok;
- }
- }
- break;
- case 14:
- if ( id == 13 || id == 9 || id == 10 || id == 11 || id == 15 || id == -20){
- if (!alreadyUsed(myBlok)) {
- woord = woord + myBlok.getLetter();
- blokkenUsed.add(myBlok);
- lastBlokDragged = myBlok;
- }
- }
- break;
- case 15:
- if( id == 11 || id == 10 ||id == 14 || id == -20){
- if (!alreadyUsed(myBlok)) {
- woord = woord + myBlok.getLetter();
- blokkenUsed.add(myBlok);
- lastBlokDragged = myBlok;
- }
- }
- break;
- }
- }
- {{
- // case 3:
- // if (!alreadyUsed(myBlok)) {
- // woord = woord + myBlok.getLetter();
- // blokkenUsed.add(myBlok);
- // lastBlokDragged = myBlok;
- // }
- // }
- // break;
- // case 12:
- // if ((idc - 1) == id || (idc + 4) == id || (idc + 5) == id || id == -20) {
- // if (!alreadyUsed(myBlok)) {
- // woord = woord + myBlok.getLetter();
- // blokkenUsed.add(myBlok);
- // lastBlokDragged = myBlok;
- // }
- // }
- // break;
- // case 15:
- // if ((idc + 1) == id || (idc + 4) == id || (idc + 5) == id || id == -20) {
- // if (!alreadyUsed(myBlok)) {
- // woord = woord + myBlok.getLetter();
- // blokkenUsed.add(myBlok);
- // lastBlokDragged = myBlok;
- // }
- // }
- // break;
- //
- // // Middelste 2 rijen
- // case 1:
- // case 2:
- // case 5:
- // case 6:
- // case 9:
- // case 10:
- // case 13:
- // case 14:
- // if ((idc + 1) == id || (idc - 1) == id || (idc + 4) == id || (idc - 4) == id || (idc + 5) == id || (idc - 5) == id || (idc + 3) == id || (idc - 3) == id || id == -20) {
- // if (!alreadyUsed(myBlok)) {
- // woord = woord + myBlok.getLetter();
- // blokkenUsed.add(myBlok);
- // lastBlokDragged = myBlok;
- // }
- // }
- // break;
- //
- // //2 middelste blokken van bovenste en onderste rij
- // case 4:
- // case 8:
- // if ((idc - 1) == id || (idc + 4) == id || (idc - 4) == id || (idc + 3) == id || (idc - 3) == id || id == -20) {
- // if (!alreadyUsed(myBlok)) {
- // woord = woord + myBlok.getLetter();
- // blokkenUsed.add(myBlok);
- // lastBlokDragged = myBlok;
- // }
- // }
- // break;
- // case 7:
- // case 11:
- // if ((idc + 1) == id || (idc + 4) == id || (idc - 4) == id || (idc + 3) == id || (idc - 3) == id || id == -20) {
- // if (!alreadyUsed(myBlok)) {
- // woord = woord + myBlok.getLetter();
- // blokkenUsed.add(myBlok);
- // lastBlokDragged = myBlok;
- // }
- // }
- // break;
- }
- }
- }}
- /**
- * Kijkt of het gegeven blok al gebruikt word in het woord dat momenteel
- * gemaakt wordt
- */
- public boolean alreadyUsed(Blok myBlok) {
- for (int x = 0; x < blokkenUsed.size(); x++) {
- if (myBlok.getID() == blokkenUsed.get(x).getID()) {
- return true;
- }
- }
- return false;
- }
- /**
- * De functie die gecalled word wanneer de muis los gelaten wordt
- */
- public void mouseReleased() {
- if (waitNextPlayer) {
- return;
- }
- if (wordExist(woord) && woord.length() > 2) {
- boolean algebruikt = false;
- for (int x = 0; x < correctWords.size(); x++) {
- if (correctWords.get(x).equals(woord)) {
- algebruikt = true;
- }
- }
- if (!algebruikt) {
- System.out.println("Het woord \"" + woord + "\" was nog niet gebruikt.");
- Effect effect = new Effect(between, size, xOffset, yOffset, blokkenUsed);
- effecten.add(effect);
- correctWords.add(woord);
- currentSpeler.addWoord(woord);
- currentSpeler.addScore(punten(woord));
- punten(woord);
- }
- }
- woord = "";
- char[] test = {'a', 'a', 'a', 'a', 'a', 'a'};
- lastBlokDragged = new Blok(test, -20);
- blokkenUsed.clear();
- }
- public void mouseClicked() {
- if (waitNextPlayer) {
- if (++aantalClicks > 1) {
- waitNextPlayer = false;
- aantalClicks = 0;
- }
- }
- }
- /**
- * Het toevoegen van de score aan de hand van de lengte van het gevormde
- * woord
- */
- public int punten(String w) {
- if (w.length() >= 8) {
- punten = punten + 11;
- return 11;
- } else if (w.length() == 7) {
- punten = punten + 5;
- return 5;
- } else if (w.length() == 6) {
- punten = punten + 3;
- return 3;
- } else if (w.length() == 5) {
- punten = punten + 2;
- return 2;
- } else if (w.length() >= 3) {
- punten = punten + 1;
- return 1;
- }
- return 0;
- }
- /**
- * Kijkt ofdat het gegeven woord in de lijst staat
- */
- public boolean wordExist(String word) {
- for (int i = 0; i < woorden.size(); i++) {
- if (woorden.get(i).equalsIgnoreCase(word)) {
- System.out.println("Het woord \"" + woord + "\" bestaat.");
- return true;
- }
- }
- System.out.println("Het woord \"" + woord + "\" bestaat niet.");
- return false;
- }
- /**
- * Geeft de blok waarop de muis momenteel staat
- */
- public Blok getBlockAtMouseOffset() {
- for (int i = 0; i < 4; i++) {
- for (int j = 0; j < 4; j++) {
- float posX = xOffset + i * (size + between);
- float posY = yOffset + j * (size + between);
- if (game.mouseX > posX && game.mouseX < posX + size && game.mouseY > posY && game.mouseY < posY + size) {
- return blokken.get(i * 4 + j);
- }
- }
- }
- return null;
- }
- public float getSizeOfBlocks() {
- return size;
- }
- public float getSpaceBetweenBlocks() {
- return between;
- }
- public float getRasterX() {
- return xOffset;
- }
- public float getRasterY() {
- return yOffset;
- }
- public final void setSpeelWaarden(int aantalMensen, String[] naamSpelers, float niveauBot) {
- this.aantalMensen = aantalMensen;
- this.aantalBots = 4 - aantalMensen;
- this.totaalAantalSpelers = 4;
- this.naamSpelers = naamSpelers;
- this.niveauBot = niveauBot;
- }
- public final void maakSpelers() {
- spelers = new ArrayList();
- for (int x = 0; x < aantalMensen; x++) {
- spelers.add(new SpelerMens(naamSpelers[x]));
- }
- for (int x = 0; x < aantalBots; x++) {
- spelers.add(new SpelerBot(niveauBot));
- }
- currentSpelerNumber = 0;
- currentSpeler = spelers.get(currentSpelerNumber);
- }
- public void eindeTimer() {
- if (!(currentSpelerNumber + 1 == spelers.size())) {
- if (!(spelers.get(++currentSpelerNumber) instanceof SpelerBot)) {
- System.out.println("VOLGENDE SPELER");
- currentSpeler = spelers.get(++currentSpelerNumber);
- correctWords = new ArrayList();
- punten = 0;
- game.timer.resetTimer(20000);
- waitNextPlayer = true;
- } else {
- }
- } else {
- game.displayNummer = BoggleApp.RESULT_SCREEN;
- }
- }
- public ArrayList<Speler> getSpelers() {
- return spelers;
- }
- public boolean isWaitingNextPlayer() {
- return waitNextPlayer;
- }
- public float getTextSize() {
- return textSize;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement