Compare commits

..

2 Commits

Author SHA1 Message Date
Kai Sellmann b5464a1c79 Exception leerer Kartenstapel Spiel(nur Rechtschreibung) 2023-11-02 12:06:20 +01:00
Kai Sellmann aee6ab78ee getObersteKarte() und 'kartenzählen' 2023-11-02 07:37:41 +01:00
9 changed files with 48 additions and 318 deletions

View File

@ -6,24 +6,13 @@ written on: 05 / 10 / 2023 at: 23:43
*/
package Domain.Block;
import java.util.ArrayList;
public class Block {
private ArrayList<Blockzeile> zeilen;
public void addZeile(){
public Block(){
this.zeilen = new ArrayList<>();
}
public void addZeile(Blockzeile blockzeile) {
zeilen.add(blockzeile);
public Blockzeile[] getDaten() {
return null;
}
public Blockzeile[] getDaten(){
if(zeilen.isEmpty()){
System.out.println("Die Liste der Blockzeilen ist Leer. ");
return zeilen.toArray(new Blockzeile[0]);
}
return zeilen.toArray(new Blockzeile[0]);
}
}
//neues Kommentar
}

View File

@ -6,25 +6,17 @@ written on: 05 / 10 / 2023 at: 23:44
*/
package Domain.Block;
import Domain.Spieler;
import java.util.Objects;
public class Blockeintrag {
private int punkte;
private int stiche;
private Spieler id;
public int punkte;
public int stiche;
public Blockeintrag() {
}
public Blockeintrag(int punkte, int stiche, Spieler id) {
if(stiche < 0){
throw new IllegalArgumentException("Ihre Stiche dürfen nicht im Negativen bereich sein");
}
this.stiche = stiche;
public Blockeintrag(int punkte, int stiche) {
this.punkte = punkte;
this.id = id;
this.stiche = stiche;
}
public int getPunkte() {
@ -36,9 +28,6 @@ public class Blockeintrag {
}
public void setStiche(int stiche) {
if (stiche < 0){
throw new IllegalArgumentException("Ihre Stich dürfen nicht im Negative bereich sein");
}
this.stiche = stiche;
}
@ -46,31 +35,4 @@ public class Blockeintrag {
this.punkte = punkte;
}
public Spieler getId() {
return id;
}
@Override
public boolean equals(Object ob){
if (this == ob) {
return true;
}
if (ob == null || getClass() != ob.getClass()) {
return false;
}
Blockeintrag andererEintrag = (Blockeintrag) ob;
return this.punkte == andererEintrag.punkte && this.stiche == andererEintrag.stiche
&& Objects.equals(this.id, andererEintrag.id);
}
@Override
public int hashCode() {
return Objects.hash(punkte, stiche, id);
}
@Override
public String toString() {
return getPunkte() + ", S: " + getStiche() + " | ";
}
}

View File

@ -6,8 +6,6 @@ written on: 05 / 10 / 2023 at: 23:44
*/
package Domain.Block;
import java.util.ArrayList;
public class Blockzeile {
/*------------------------------------------*/
@ -23,21 +21,17 @@ public class Blockzeile {
/*------------------------------------------*/
private int rundenNummer;
private ArrayList<Blockeintrag> eintraege;
private Blockeintrag[] eintraege;
/*------------------------------------------*/
// Konstruktoren (default und spezifische)
/*------------------------------------------*/
public Blockzeile(){
}
public Blockzeile(int rundenNummer, Blockeintrag eintrag) {
public Blockzeile(int rundenNummer, int spielerAnzahl) {
this.rundenNummer = rundenNummer;
this.eintraege = new ArrayList<>();
addEintrag(eintrag);
this.eintraege = new Blockeintrag[spielerAnzahl];
}
/*------------------------------------------*/
// statische Methoden
/*------------------------------------------*/
@ -45,13 +39,7 @@ public class Blockzeile {
/*------------------------------------------*/
// Getter und Setter
/*------------------------------------------*/
public int getRundenNummer() {
return rundenNummer;
}
public void setRundenNummer(int rundenNummer) {
this.rundenNummer = rundenNummer;
}
/*------------------------------------------*/
// @Overrides
/*------------------------------------------*/
@ -60,27 +48,21 @@ public class Blockzeile {
// öffentliche Methodes
/*------------------------------------------*/
public void addEintrag(Blockeintrag eintrag) {
if(eintraege != null){
eintraege.add(eintrag);
public void addEintrag(Blockeintrag be) {
for (int i = 0; i < eintraege.length; i++) {
if (eintraege[i] == null) {
eintraege[i] = be;
}
}
}
public Blockeintrag[] getDaten() {
return eintraege.toArray(new Blockeintrag[0]);
return eintraege;
}
/*------------------------------------------*/
// Hilfsmethoden (privat)
/*------------------------------------------*/
public Blockeintrag[] getValidDaten() {
Blockeintrag[] dataArray = getDaten();
for (Blockeintrag eintrag : dataArray) {
if (eintrag == null) {
throw new IllegalStateException("Das Array ist leer");
}
}
return dataArray;
}
}

View File

@ -0,0 +1,8 @@
package Domain.Exceptions;
public class EmptyKartensortiertException extends SpielException {
public EmptyKartensortiertException(String message) {
super(2, message);
}
}

View File

@ -12,6 +12,8 @@ import java.util.List;
import java.util.Random;
import java.util.HashMap;
import Domain.Enums.Kartenfarbe;
import Domain.Exceptions.EmptyKartensortiertException;
import Domain.Exceptions.SpielException;
import Domain.Karten.*;
@ -20,7 +22,7 @@ public class Kartenstapel {
// Statische Konstanten
// Statische Attribute
private static int kartenzählen = 1;
// Attribute der Objekte
/**
@ -108,7 +110,7 @@ public class Kartenstapel {
* durch die @code Random 'zufall' befüllt.
*
*/
public void mischen() {
public void mischen() throws EmptyKartensortiertException {
ArrayList<Integer> zahlen = new ArrayList<>();
for (int i = 1; i <= 60; i++) {
zahlen.add(i);
@ -117,8 +119,13 @@ public class Kartenstapel {
for (int i = 0; i < 60; i++) {
int index = zufall.nextInt(zahlen.size());
int schlüsselzahl = zahlen.get(index);
kartengemischt.put(i + 1, kartensortiert.get(schlüsselzahl));
try {
kartengemischt.put(i + 1, kartensortiert.get(schlüsselzahl));
} catch(Exception e) {
new EmptyKartensortiertException("Es wurde versucht ein leerer Kartenstapel zu mischen.");
}
zahlen.remove(index);
}
for(Karte k : kartengemischt.values()) {
@ -130,12 +137,13 @@ public class Kartenstapel {
* Methode getObersteKarte(): Hier wird der Reihe nach die jeweils oberste Karte
* an den Spieler verteilt, bzw. am Ende des Verteilens der Trumpf gezogen,
* falls noch eine Karte auf dem Stapel liegen sollte. Hierzu wird die Runde,
* als Ausgangswert genommen.
* als Ausgangswert genommen. Die Prüfung ob der return = null ist erfolgt in der
* Klasse Spiel, um dann auszusagen, dass es keinen Trumpf gibt
*/
public Object getObersteKarte() {
Object k = kartengemischt.values().toArray()[0];
kartengemischt.remove(k);
return k;
Object k = kartengemischt.values().toArray()[0];
kartengemischt.remove(k);
return k;
}

View File

@ -144,7 +144,7 @@ public class Spiel implements Serializable {
} else if (!this.spieler.containsKey(id_spieler)) {
throw new SpielerNotFoundException("Dieser Spieler existiert nicht");
} else if (this.spieler.values().size() == 0) {
throw new EmptyListException("Dise Liste ist Leer.");
throw new EmptyListException("Diese Liste ist Leer.");
} else {
throw new RuntimeException("Unkown Error");
}

View File

@ -6,96 +6,6 @@ written on: 10 / 10 / 2023 at: 21:17
*/
package Test.Domain.Block;
import Domain.Block.Block;
import Domain.Block.Blockeintrag;
import Domain.Block.Blockzeile;
import Domain.Enums.Geschlecht;
import Facade.Spiel;
import org.junit.Test;
import static junit.framework.TestCase.assertEquals;
import static junit.framework.TestCase.assertTrue;
public class BlockTest {
Block block = new Block();
Blockeintrag b1 = new Blockeintrag(20,0,null);
Blockeintrag b2 = new Blockeintrag(30,1,null);
Blockeintrag b3 = new Blockeintrag(40,2,null);
Blockeintrag b4 = new Blockeintrag(20,0,null);
Blockeintrag b5 = new Blockeintrag(30,1,null);
Blockeintrag b6 = new Blockeintrag(40,2,null);
Blockzeile z1 = new Blockzeile(1,b1);
Blockzeile z2 = new Blockzeile(2,b2);
Blockzeile z3 = new Blockzeile(3, b3);
Blockzeile z4 = new Blockzeile(1,b1);
Blockzeile z5 = new Blockzeile(2,b2);
Blockzeile z6 = new Blockzeile(3, b3);
/**
* Testet die Methode addZeile in der Block-Klasse.
* Überprüft, ob die Anzahl der Zeilen im Block nach dem Hinzufügen korrekt ist
* und ob die hinzugefügte Zeile an der richtigen Position im Datenarray steht.
*/
@Test
public void addZeileTest() {
block.addZeile(z1);
block.addZeile(z2);
block.addZeile(z3);
z1.addEintrag(b1);
z1.addEintrag(b2);
z1.addEintrag(b3);
z2.addEintrag(b1);
z2.addEintrag(b2);
z2.addEintrag(b3);
z3.addEintrag(b1);
z3.addEintrag(b2);
z3.addEintrag(b3);
assertEquals(3,block.getDaten().length);
assertTrue((z1 == block.getDaten()[0]) &&
(z2 == block.getDaten()[1]) && (z3 == block.getDaten()[2]));
}
/**
* Testet die Methode getDaten der Klasse Block. Überprüft, ob die Daten im
* Block korrekt abgerufen werden können.
*/
@Test
public void getDatenTest() {
block.addZeile(z4);
block.addZeile(z5);
block.addZeile(z6);
z1.addEintrag(b4);
z1.addEintrag(b5);
z1.addEintrag(b6);
z2.addEintrag(b4);
z2.addEintrag(b5);
z2.addEintrag(b6);
z3.addEintrag(b4);
z3.addEintrag(b5);
z3.addEintrag(b6);
assertTrue((block.getDaten()[0].getDaten()[0].getPunkte() ==20)
&& (block.getDaten()[0].getDaten()[0].getStiche() == 0)
&& (block.getDaten()[1].getDaten()[0].getPunkte() == 30)
&& (block.getDaten()[1].getDaten()[0].getStiche() == 1)
&& (block.getDaten()[2].getDaten()[0].getPunkte() == 40)
&& (block.getDaten()[2].getDaten()[0].getStiche() == 2));
}
/**
* Testet die Methode getDaten der Klasse Block für einen leeren Block.
* Überprüft, ob für einen leeren Block ein leeres Datenarray zurückgegeben
* wird.
*/
@Test
public void getDatenTestLeererBlock(){
Block block2 = new Block();
assertEquals(0, block2.getDaten().length);
}
}
}

View File

@ -6,39 +6,6 @@ written on: 10 / 10 / 2023 at: 21:17
*/
package Test.Domain.Block;
import Domain.Block.Blockeintrag;
import org.junit.Test;
import static junit.framework.TestCase.assertEquals;
import static org.junit.Assert.assertThrows;
import static org.junit.Assert.assertTrue;
public class BlockeintragTest {
@Test
public void getPunkteTest(){
Blockeintrag eintrag = new Blockeintrag(20,0,null);
assertTrue((eintrag.getPunkte() == 20));
eintrag.setPunkte(30);
assertTrue((eintrag.getPunkte() == 30));
eintrag.setPunkte(40);
assertTrue((eintrag.getPunkte()== 40));
}
@Test
public void getStiche() {
Blockeintrag eintrag = new Blockeintrag(30,1,null);
assertEquals(1, eintrag.getStiche());
eintrag.setStiche(2);
assertEquals(2, eintrag.getStiche());
eintrag.setStiche(3);
assertEquals(3, eintrag.getStiche());
}
//Exception Test hier schreiben
@Test
public void testNegativeStiche() throws Exception {
assertThrows(IllegalArgumentException.class, () -> new Blockeintrag(50, -3, null));
assertThrows(IllegalArgumentException.class, () -> new Blockeintrag(30,-1, null));
assertThrows(IllegalArgumentException.class, () -> new Blockeintrag(10, -4, null));
}
}

View File

@ -6,102 +6,6 @@ written on: 10 / 10 / 2023 at: 21:17
*/
package Test.Domain.Block;
import Domain.Block.Block;
import Domain.Block.Blockeintrag;
import Domain.Block.Blockzeile;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class BlockzeileTest {
Block b = new Block();
Blockeintrag e1 = new Blockeintrag(20,0,null);
Blockeintrag e2 = new Blockeintrag(30,1,null);
Blockeintrag e3 = new Blockeintrag(40,2,null);
Blockeintrag e4 = new Blockeintrag(50,2, null);
Blockeintrag e5 = new Blockeintrag(50, 2, null);
Blockeintrag e6 = new Blockeintrag(40, 1, null);
Blockzeile z1 = new Blockzeile(1, e1);
Blockzeile z2 = new Blockzeile(2, e2);
Blockzeile z3 = new Blockzeile(3, e3);
/**
* testet addEintrag
* Anmerkung assertEquals überprüft nicht ob der Eintrag richtig ist sondern ob das
* Objekt eintrag1 im array liegt Eintrag wird in Blockeintrag auf Richtigkeit
* getestet
*/
@Test
public void addEintragTest() {
Blockeintrag[] daten;
//1 Eintrag
z1.addEintrag(e1);
z1.addEintrag(e2);
daten = z1.getDaten();
assertEquals("addEintrag: 1 Eintrag", 3, daten.length);
assertEquals("addEintrag: 1 Eintrag", e1, daten[1]);
assertEquals("addEintrag: 1 Eintrag", e2, daten[2]);
//2 Eintrag
z1.addEintrag(e3);
z1.addEintrag(e4);
daten = z1.getDaten();
assertEquals("addEintrag: 2 Eintrag", 5, daten.length);
assertEquals("addEintrag: 2 Eintrag", e3, daten[3]);
assertEquals("addEintrag: 2 Eintrag", e4, daten[4]);
//3 Eintrag
z1.addEintrag(e5);
z1.addEintrag(e6);
daten = z1.getDaten();
assertEquals("addEintrag: 3 Eintrag", 7, daten.length);
assertEquals("addEintrag: 3 Eintrag", e5, daten[5]);
assertEquals("addEintrag: 3 Eintrag", e6, daten[6]);
}
//Überprüfung ob Daten korrekt zurückgegeben werden
@Test
public void getDatenTest() {
z1.addEintrag(e1);
z1.addEintrag(e2);
Blockeintrag[] daten = z1.getDaten();
assertEquals(3, daten.length);
assertEquals(e1, daten[1]);
assertEquals(e2, daten[2]);
z1.addEintrag(null);
Blockeintrag[] daten1 = z1.getDaten();
}
@Test
public void duplikateRunde() throws Exception{
Blockeintrag e1 = new Blockeintrag(30,1,null);
Blockeintrag e2 = new Blockeintrag(20,0,null);
Blockzeile z1 = new Blockzeile(4, e1);
Blockzeile z2 = new Blockzeile(4, e2);
}
@Test
public void invalidRunde() throws Exception{
Blockzeile z4 = new Blockzeile(-1, e1);
}
@Test
public void invalidRunde2() throws Exception{
Blockzeile z5 = new Blockzeile(-3, e2);
}
@Test
public void getRundenNummer(){
assertEquals(3, z3.getRundenNummer());
z3.setRundenNummer(4);
assertEquals(4, z3.getRundenNummer());
z3.setRundenNummer(5);
assertEquals(5, z3.getRundenNummer());
}
}
}