diff --git a/src/c/raetselronja.c b/src/c/raetselronja.c new file mode 100644 index 0000000..235d170 --- /dev/null +++ b/src/c/raetselronja.c @@ -0,0 +1,183 @@ +#include +#include +#include +#include +#include + +#include "raetselronja.h" +#include "userinput.h" +#include "randomnumber.h" + + + +int zahlenraetsel(int input[], int loesung, int n) { + + int eingabe = 0; + + for(int i = 0; i < n; i++){ + printf("%d", input[i]); + if (i < n -1){ + printf(","); + } + printf(" "); + } + printf("\n"); + + printf("Please enter a solution.\n"); + eingabe = userInput(); //hier stand mal scanf,jetzt kommt das in eine Funktion zum testen + if (eingabe == loesung){ + printf("The answer is right.\n"); + return 1; + } + else{ + printf("The answer is wrong.\n"); + return 0; + } + +} + +int aufrufzahlenraetsel() { + + int loesung = 0; + int n = 0; + + int auswahl = userInput(); + + switch (auswahl) { + case 1: + int input1[] = {25, 50, 54, 49, 98, 102, 97, 194}; + n = 8; + loesung = 198; + zahlenraetsel(input1, loesung, n); + break; + case 2: + int input2[] = {17, 19, 23, 29, 37}; + n = 5; + loesung = 47; + zahlenraetsel(input2, loesung, n); + break; + case 3: + int input3[] = {256, 289, 324, 361}; + n = 4; + loesung = 400; + zahlenraetsel(input3, loesung, n); + break; + default: return -1; + } + + return auswahl; +} + + +int armdruecken(int gegner, int spieler){ + +int differenz = 0; + + if (gegner > spieler){ + differenz = gegner - spieler; + printf("The opponent is around %d stronger.\n", differenz); + printf("Defeat."); + return 0; + } + if (gegner < spieler){ + differenz = spieler - gegner; + printf("The opponent is around %d weaker.\n", differenz); + printf("Victory."); + return 1; + } + +} + +int blackjack(int spieler, int gegner, int janein){ + + int lower = 1, upper = 11, count = 1, num = 0, ergebnis = 0; + bool wiederholen = false; + + srand(time(NULL)); + + if (wiederholen = false){ + printf("Do you want to start the game?\nYES(1), NO(2)\n"); + } + janein = userInput(); + + + while (spieler < 21 && gegner < 21) { + + if (janein == 1) { + for (int i = 1; i <= count; i++) { + int num = (randnum() % (upper - lower + 1)) + lower; + printf("You got a: %d.\n", num); + spieler += num; + printf("Now you have: %d\n", spieler); + } + for (int i = 1; i <= count; i++) { + int num = (randnum() % (upper - lower + 1)) + lower; + printf("The opponent got a: %d.\n", num); + gegner += num; + printf("Now the opponent has: %d\n", gegner); + } + printf("Do you want another card?\nYES(1), NO(2)\n"); + janein = userInput(); + } + else { + if (spieler <= 0) { + printf("Goodbye\n"); + ergebnis = 0; + return ergebnis; + break; + } + else if (spieler > gegner) { + printf("Player wins.\n"); + ergebnis = 1; + return ergebnis; + break; + } + else if (spieler < gegner) { + printf("Opponent wins\n."); + ergebnis = 2; + return ergebnis; + break; + } + } + } + if (janein == 1 && (spieler >= 21 || gegner >= 21)) { + + if ((gegner > 21 || gegner < 21) && spieler == 21) { + printf("Player wins.\n"); + ergebnis = 1; + return ergebnis; + } + else if (gegner == 21 && (spieler > 21 || spieler < 21)) { + printf("Opponent wins.\n"); + ergebnis = 2; + return ergebnis; + } + else if (gegner > 21 && spieler > 21) { + printf("No one wins.\n"); + ergebnis = 0; + return ergebnis; + + } + else if (gegner == spieler && gegner == 21) { + printf("Tie.\n"); + ergebnis = 0; + return ergebnis; + } + if (gegner > 21 && spieler < 21) { + printf("Player wins.\n"); + ergebnis = 1; + return ergebnis; + } + if (gegner < 21 && spieler > 21) { + printf("Opponent wins.\n"); + ergebnis = 2; + return ergebnis; + } + } + if (ergebnis = 0){ + wiederholen = true; + return blackjack(spieler, gegner, janein); + } + +} + diff --git a/src/c/raetselronja.h b/src/c/raetselronja.h new file mode 100644 index 0000000..2812df2 --- /dev/null +++ b/src/c/raetselronja.h @@ -0,0 +1,10 @@ +#ifndef RAETSELRONJA_H +#define RAETSELRONJA_H + +int zahlenraetsel(int input[], int loesung, int n); +int aufrufzahlenraetsel(); +int armdruecken(int gegner, int spieler); +int blackjack(int spieler, int gegner, int janein); + + +#endif \ No newline at end of file diff --git a/src/c/randomnumber.c b/src/c/randomnumber.c new file mode 100644 index 0000000..926cfea --- /dev/null +++ b/src/c/randomnumber.c @@ -0,0 +1,8 @@ +#include "randomnumber.h" + +int randnum(){ + +int value; +return value; + +} \ No newline at end of file diff --git a/src/c/randomnumber.h b/src/c/randomnumber.h new file mode 100644 index 0000000..e9de3e6 --- /dev/null +++ b/src/c/randomnumber.h @@ -0,0 +1,6 @@ +#ifndef RANDOMNUMBER_H +#define RANDOMNUMBER_H + +int randnum(); + +#endif \ No newline at end of file diff --git a/src/c/userinput.c b/src/c/userinput.c new file mode 100644 index 0000000..d602aa6 --- /dev/null +++ b/src/c/userinput.c @@ -0,0 +1,8 @@ +#include "userinput.h" + + +int userInput(){ + //TODO: user input einlesen + int value; + return value; +} \ No newline at end of file diff --git a/src/c/userinput.h b/src/c/userinput.h new file mode 100644 index 0000000..5e518ff --- /dev/null +++ b/src/c/userinput.h @@ -0,0 +1,6 @@ +#ifndef USERINPUT_H +#define USERINPUT_H + +int userInput(); + +#endif \ No newline at end of file diff --git a/test/c/test_raetselronja.c b/test/c/test_raetselronja.c new file mode 100644 index 0000000..5509e2d --- /dev/null +++ b/test/c/test_raetselronja.c @@ -0,0 +1,311 @@ +#ifdef TEST +#include "unity.h" +//in example.h wird die Funktion deklariert +#include "raetselronja.h" +#include "userinput.h" +#include "mock_userinput.h" +#include "randomnumber.h" +#include "mock_randomnumber.h" + +//Vor- bzw. Nachbereitung +void setUp(void) +{ +} + +void tearDown(void) +{ +} + +//Hier läuft der Test +void test_runRaetselTest(void){ + /* arrange */ + //Hier die Werte eingeben + int result; + int input[] = {0,1,2,3}; + int loesung = 4; + int n = 4; + + /* act */ + //Die Funktion wird ausgeführt + userInput_ExpectAndReturn(4); + result = zahlenraetsel(input, loesung, n); + + /* assert */ + //Vergleichen + TEST_ASSERT_EQUAL_INT(1, result); +} + +void test_runRaetselTestFalsch(void){ + +int result; +int input[] = {0,1,2,3}; +int loesung = 4; +int n = 4; + +userInput_ExpectAndReturn(5); +result = zahlenraetsel(input, loesung, n); + +TEST_ASSERT_EQUAL_INT(0, result); + +} + +void test_runRaetselTestrichtig(void){ + +int input[] = {1,2}; +int loesung = 198; +int n = 2; + +userInput_ExpectAndReturn(198); +int result = zahlenraetsel(input, loesung, n); + +TEST_ASSERT_EQUAL_INT(1, result); + +} + + +void test_runRaetselTestAufruf(void){ + + userInput_ExpectAndReturn(1); + userInput_ExpectAndReturn(1); + + + int result = aufrufzahlenraetsel(); + TEST_ASSERT_EQUAL_INT(1, result); + +} + + +void test_runRaetselTestArmduecken(void){ + + int spieler = 10; + int gegner = 25; + + printf("-----------------------------------------------\n"); + + int result = armdruecken(gegner, spieler); + TEST_ASSERT_EQUAL_INT(0, result); + +} + +void test_runRaetselTestBJ(void){ + + int spieler = 0; + int gegner = 0; + int janein = 0; + + userInput_ExpectAndReturn(1); + randnum_ExpectAndReturn(10); + randnum_ExpectAndReturn(8); + userInput_ExpectAndReturn(1); + randnum_ExpectAndReturn(9); + randnum_ExpectAndReturn(10); + userInput_ExpectAndReturn(1); + + printf("-----------------------------------------------\n"); + + int result = blackjack(spieler, gegner, janein); + TEST_ASSERT_EQUAL_INT(1, result); +} + +void test_runRaetselTestBJif(void){ + + int spieler = 0; + int gegner = 0; + int janein = 0; + + userInput_ExpectAndReturn(1); + randnum_ExpectAndReturn(10); + randnum_ExpectAndReturn(8); + userInput_ExpectAndReturn(2); + + printf("-----------------------------------------------\n"); + + int result = blackjack(spieler, gegner, janein); + TEST_ASSERT_EQUAL_INT(1, result); + +} + +void test_runRaetselTestBJifende(void){ + + int spieler = 0; + int gegner = 0; + int janein = 0; + + userInput_ExpectAndReturn(1); + randnum_ExpectAndReturn(10); + randnum_ExpectAndReturn(8); + userInput_ExpectAndReturn(1); + randnum_ExpectAndReturn(9); + randnum_ExpectAndReturn(7); + userInput_ExpectAndReturn(1); + + printf("-----------------------------------------------\n"); + + int result = blackjack(spieler, gegner, janein); + TEST_ASSERT_EQUAL_INT(1, result); + +} + +void test_runRaetselTestBJifende1(void){ + + int spieler = 0; + int gegner = 0; + int janein = 0; + + userInput_ExpectAndReturn(1); + randnum_ExpectAndReturn(10); + randnum_ExpectAndReturn(8); + userInput_ExpectAndReturn(1); + randnum_ExpectAndReturn(9); + randnum_ExpectAndReturn(7); + userInput_ExpectAndReturn(1); + + printf("-----------------------1------------------------\n"); + + int result = blackjack(spieler, gegner, janein); + TEST_ASSERT_EQUAL_INT(1, result); + +} + +void test_runRaetselTestBJifende2(void){ + + int spieler = 0; + int gegner = 0; + int janein = 0; + + userInput_ExpectAndReturn(1); + randnum_ExpectAndReturn(7); + randnum_ExpectAndReturn(10); + userInput_ExpectAndReturn(1); + randnum_ExpectAndReturn(8); + randnum_ExpectAndReturn(9); + userInput_ExpectAndReturn(1); + + printf("-----------------------2------------------------\n"); + + int result = blackjack(spieler, gegner, janein); + TEST_ASSERT_EQUAL_INT(2, result); + +} + +void test_runRaetselTestBJifende3(void){ + + int spieler = 0; + int gegner = 0; + int janein = 0; + + userInput_ExpectAndReturn(1); + randnum_ExpectAndReturn(10); + randnum_ExpectAndReturn(10); + userInput_ExpectAndReturn(1); + randnum_ExpectAndReturn(10); + randnum_ExpectAndReturn(10); + userInput_ExpectAndReturn(1); + + printf("-----------------------3------------------------\n"); + + int result = blackjack(spieler, gegner, janein); + TEST_ASSERT_EQUAL_INT(0, result); + +} + +void test_runRaetselTestBJifende4(void){ + + int spieler = 0; + int gegner = 0; + int janein = 0; + + userInput_ExpectAndReturn(1); + randnum_ExpectAndReturn(10); + randnum_ExpectAndReturn(10); + userInput_ExpectAndReturn(1); + randnum_ExpectAndReturn(9); + randnum_ExpectAndReturn(9); + userInput_ExpectAndReturn(1); + + printf("-----------------------4------------------------\n"); + + int result = blackjack(spieler, gegner, janein); + TEST_ASSERT_EQUAL_INT(0, result); + +} + +void test_runRaetselTestBJifende5(void){ + + int spieler = 0; + int gegner = 0; + int janein = 0; + + userInput_ExpectAndReturn(1); + randnum_ExpectAndReturn(10); + randnum_ExpectAndReturn(10); + userInput_ExpectAndReturn(1); + randnum_ExpectAndReturn(7); + randnum_ExpectAndReturn(10); + userInput_ExpectAndReturn(1); + + printf("-----------------------5------------------------\n"); + + int result = blackjack(spieler, gegner, janein); + TEST_ASSERT_EQUAL_INT(1, result); + +} + +void test_runRaetselTestBJifende6(void){ + + int spieler = 0; + int gegner = 0; + int janein = 0; + + userInput_ExpectAndReturn(1); + randnum_ExpectAndReturn(10); + randnum_ExpectAndReturn(10); + userInput_ExpectAndReturn(1); + randnum_ExpectAndReturn(10); + randnum_ExpectAndReturn(7); + userInput_ExpectAndReturn(1); + + printf("-----------------------6------------------------\n"); + + int result = blackjack(spieler, gegner, janein); + TEST_ASSERT_EQUAL_INT(2, result); + +} + +void test_runRaetselTestBJifnull(void){ + + int spieler = 0; + int gegner = 0; + int janein = 0; + + userInput_ExpectAndReturn(1); + randnum_ExpectAndReturn(10); + randnum_ExpectAndReturn(10); + userInput_ExpectAndReturn(1); + randnum_ExpectAndReturn(10); + randnum_ExpectAndReturn(10); + userInput_ExpectAndReturn(1); + + printf("-----------------------7------------------------\n"); + + int result = blackjack(spieler, gegner, janein); + TEST_ASSERT_EQUAL_INT(0, result); + + + + userInput_ExpectAndReturn(1); + randnum_ExpectAndReturn(10); + randnum_ExpectAndReturn(10); + userInput_ExpectAndReturn(1); + randnum_ExpectAndReturn(10); + randnum_ExpectAndReturn(7); + userInput_ExpectAndReturn(1); + + printf("-----------------------8------------------------\n"); + + result = blackjack(spieler, gegner, janein); + TEST_ASSERT_EQUAL_INT(2, result); + +} + +#endif // TEST \ No newline at end of file