Alles nochmal korrigiert/optimiert und JUnit Tests für die Punkte Verrechnung.

master
s.eser 2024-03-23 22:04:27 +01:00
parent dde68f1784
commit a57232941e
6 changed files with 105 additions and 91 deletions

View File

@ -4,8 +4,25 @@
<exclude-output /> <exclude-output />
<content url="file://$MODULE_DIR$"> <content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
</content> </content>
<orderEntry type="inheritedJdk" /> <orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module-library" scope="TEST">
<library name="JUnit5.8.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter/5.8.1/junit-jupiter-5.8.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter-api/5.8.1/junit-jupiter-api-5.8.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/junit/platform/junit-platform-commons/1.8.1/junit-platform-commons-1.8.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter-params/5.8.1/junit-jupiter-params-5.8.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter-engine/5.8.1/junit-jupiter-engine-5.8.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/junit/platform/junit-platform-engine/1.8.1/junit-platform-engine-1.8.1.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
</component> </component>
</module> </module>

View File

@ -3,6 +3,12 @@ package de.hs_mannheim.informatik.blackjack;
import java.util.Scanner; import java.util.Scanner;
public class BlackJackSpiel { public class BlackJackSpiel {
public static void main(String[] args) {
BlackJackSpiel spiel = new BlackJackSpiel();
}
public BlackJackSpiel(){ public BlackJackSpiel(){
System.out.println("Willkommen zum BlackJack Trainer"); System.out.println("Willkommen zum BlackJack Trainer");

View File

@ -6,6 +6,13 @@ public class Hand {
private ArrayList<Karte> hand = new ArrayList<>(); private ArrayList<Karte> hand = new ArrayList<>();
Hand(Karte... karte){
for(int i = 0; i<karte.length; i++){
hand.add(karte[i]);
}
}
Hand(Kartenstapel ks){ Hand(Kartenstapel ks){
hand.add(ks.getKarte()); hand.add(ks.getKarte());
hand.add(ks.getKarte()); hand.add(ks.getKarte());
@ -22,9 +29,48 @@ public class Hand {
public int getPunkte(){ public int getPunkte(){
int ergebnis = 0; int ergebnis = 0;
int counterAss = 0;
for(int i = 0; i<hand.size(); i++){ for(int i = 0; i<hand.size(); i++){
ergebnis += hand.get(i).getPunkte(hand); if(hand.get(i).karte.equals("Ass"))
counterAss++;
} }
for(int i = 0; i<hand.size(); i++){
ergebnis += hand.get(i).getPunkte();
}
if(counterAss==1) {
for (int i = 0; i < hand.size(); i++) {
if (hand.get(i).karte.equals("Ass") && ergebnis <= 10) {
ergebnis += 11;
} else if(hand.get(i).karte.equals("Ass"))
ergebnis += 1;
}
} else if(counterAss==2){
for (int i = 0; i < hand.size(); i++) {
if (hand.get(i).karte.equals("Ass") && ergebnis <= 9) {
ergebnis += 11;
} else if(hand.get(i).karte.equals("Ass"))
ergebnis += 1;
}
} else if(counterAss==3){
for (int i = 0; i < hand.size(); i++) {
if (hand.get(i).karte.equals("Ass") && ergebnis <= 8) {
ergebnis += 11;
} else if(hand.get(i).karte.equals("Ass"))
ergebnis += 1;
}
} else if(counterAss==4){
for (int i = 0; i < hand.size(); i++) {
if (hand.get(i).karte.equals("Ass") && ergebnis <= 7) {
ergebnis += 11;
} else if(hand.get(i).karte.equals("Ass"))
ergebnis += 1;
}
}
return ergebnis; return ergebnis;
} }

View File

@ -1,12 +1,11 @@
package de.hs_mannheim.informatik.blackjack; package de.hs_mannheim.informatik.blackjack;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Scanner;
public class Karte { public class Karte {
private String farbe; String farbe;
private String karte; String karte;
@ -20,84 +19,12 @@ public class Karte {
return farbe + " " + karte; return farbe + " " + karte;
} }
public int getPunkte(ArrayList<Karte> hand){ public int getPunkte(){
int counter = 0;
for(int i = 0; i<hand.size(); i++){
if(hand.get(i).karte.equals("Ass"))
counter ++;
}
if(karte.equals("Bube")||karte.equals("Dame")||karte.equals("König")) if(karte.equals("Bube")||karte.equals("Dame")||karte.equals("König"))
return 10; return 10;
else if(karte.equals("Ass")&&counter==1) { else if(karte.equals("Ass"))
int entscheidung = 0; return 0;
for(int i = 0; i<hand.size(); i++) {
if (hand.get(i).karte.equals("Bube")||hand.get(i).karte.equals("Dame")||hand.get(i).karte.equals("König")) {
entscheidung += 10;
} else if (!hand.get(i).karte.equals("Ass")) {
entscheidung += Integer.parseInt(hand.get(i).karte);
}
}
if (entscheidung<=10)
return 11;
else
return 1;
}else if(karte.equals("Ass")&&counter==2) {
int entscheidung = 0;
int counterAss = 0;
for(int i = 0; i<hand.size(); i++) {
if (hand.get(i).karte.equals("Bube")||hand.get(i).karte.equals("Dame")||hand.get(i).karte.equals("König")) {
entscheidung += 10;
} else if (!hand.get(i).karte.equals("Ass")) {
entscheidung += Integer.parseInt(hand.get(i).karte);
} else if(counterAss<1) {
entscheidung += 1;
counterAss ++;
}
}
if (entscheidung<=10)
return 11;
else
return 1;
}else if(karte.equals("Ass")&&counter==3) {
int entscheidung = 0;
int counterAss = 0;
for(int i = 0; i<hand.size(); i++) {
if (hand.get(i).karte.equals("Bube")||hand.get(i).karte.equals("Dame")||hand.get(i).karte.equals("König")) {
entscheidung += 10;
} else if (!hand.get(i).karte.equals("Ass")) {
entscheidung += Integer.parseInt(hand.get(i).karte);
} else if(counterAss<2) {
entscheidung += 1;
counterAss ++;
}
}
if (entscheidung<=10)
return 11;
else
return 1;
}else if(karte.equals("Ass")&&counter==4) {
int entscheidung = 0;
int counterAss = 0;
for(int i = 0; i<hand.size(); i++) {
if (hand.get(i).karte.equals("Bube")||hand.get(i).karte.equals("Dame")||hand.get(i).karte.equals("König")) {
entscheidung += 10;
} else if (!hand.get(i).karte.equals("Ass")) {
entscheidung += Integer.parseInt(hand.get(i).karte);
} else if(counterAss<3) {
entscheidung += 1;
counterAss ++;
}
}
if (entscheidung<=10)
return 11;
else
return 1;
}
else else
return Integer.parseInt(karte); return Integer.parseInt(karte);
} }

View File

@ -1,11 +0,0 @@
package de.hs_mannheim.informatik.blackjack;
public class Main {
public static void main(String[] args) {
BlackJackSpiel spiel = new BlackJackSpiel();
}
}

View File

@ -0,0 +1,29 @@
package de.hs_mannheim.informatik.blackjack;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class HandKarteTest {
@Test
void getPunkte() {
Kartenstapel ks = new Kartenstapel();
Hand handRandom = new Hand(ks);
Hand hand1 = new Hand(new Karte("Pik","Bube"),new Karte("Herz","Ass"));
Hand hand2 = new Hand(new Karte("Karo","Ass"),new Karte("Herz","9"),new Karte("Herz","5"));
Hand hand3 = new Hand(new Karte("Pik","Ass"),new Karte("Herz","Ass"));
Hand hand4 = new Hand(new Karte("Herz","9"),new Karte("Karo","Bube"),new Karte("Pik","Ass"));
Hand hand5 = new Hand(new Karte("Pik","Ass"),new Karte("Herz","Ass"),new Karte("Karo","Ass"),new Karte("Kreuz","Ass"));
assertNotNull(handRandom);
assertTrue(hand1.isBlackJack());
assertEquals(15,hand2.getPunkte());
assertEquals(12,hand3.getPunkte());
assertEquals(20,hand4.getPunkte());
assertEquals(14,hand5.getPunkte());
}
}