Browse Source

Merge branch 'dev' into georg

remotes/origin/georg
KaffeeMaus 11 months ago
parent
commit
95df898178
  1. 257
      src/main/c/Tim/SchereSteinPapier.c
  2. 3
      src/main/c/Tim/SchereSteinPapier.h
  3. 7
      src/main/c/Tim/hangman.c
  4. 6
      src/main/c/Tim/hangman.h
  5. 14
      src/main/c/main.c
  6. 145
      src/test/c/Tim/test_SchereSteinPapier.c
  7. 24
      src/test/c/Tim/test_hangman.c

257
src/main/c/Tim/SchereSteinPapier.c

@ -1,9 +1,260 @@
#include "SchereSteinPapier.h"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
void gameLoop();
char* getWelcomeMessageSSP();
int selectCOMChoice();
void printResult(int, int, int);
int getuserSelection();
int schereSteinPapier()
void schereSteinPapier()
{
srand(time(NULL));
printf("%s", getWelcomeMessageSSP());
gameLoop();
}
void gameLoop()
{
printf("Test");
return 1;
while(1)
{
int comChoice, userChoice;
userChoice = getuserSelection();
if(userChoice == 0)
{
printf("Vielen Dank fuers Spielen! Tschau!\n");
break;
}
else if(userChoice == 1 || userChoice == 2 || userChoice == 3)
{
comChoice = selectCOMChoice();
int winNum = calculateWinner(userChoice, comChoice);
printResult(winNum, comChoice, userChoice);
}
else
{
printf("Deine eingegebene Wahl ist ungueltig\n");
}
}
}
//Berechnung,welche Auswahl gewinnt.
//@return: 0 = unentschieden; 1 = gewonnen; -1 = verloren; 3 = Fehler bei der Wertuebergabe
//@param userSelection = UserChoice; comSelection = COMChoice
int calculateWinner(int userSelection, int comSelection)
{
switch (userSelection)
{
case(1):
switch (comSelection) {
case(1): return 0;
case(2): return -1;
case(3): return 1;
default: return 3;
}
case(2):
switch (comSelection) {
case(1): return 1;
case(2): return 0;
case(3): return -1;
default: return 3;
}
case(3):
switch (comSelection) {
case(1): return -1;
case(2): return 1;
case(3): return 0;
default: return 3;
}
default: return 3;
}
}
int selectCOMChoice()
{
return rand() % 3 + 1;
}
int getuserSelection()
{
int userSelect;
printf("Bitte treffe deine Wahl!\n"
"1: Schere \n2: Stein \n3: Papier\n0: Spiel verlassen\n");
scanf("%d", &userSelect);
return userSelect;
}
char* getWelcomeMessageSSP()
{
return "\nHallo und Willkommen zu\n\n"
" _____ _ _____ _____ _ \r\n"
" | __ \\ | | | __ \\ / ____| (_) \r\n"
" | |__) |___ ___| | __ | |__) |_ _ _ __ ___ _ __ | (___ ___ _ ___ ___ ___ _ __ ___ \r\n"
" | _ // _ \\ / __| |/ / | ___/ _` | '_ \\ / _ \\ '__| \\___ \\ / __| / __/ __|/ _ \\| '__/ __|\r\n"
" | | \\ \\ (_) | (__| < | | | (_| | |_) | __/ | ____) | (__| \\__ \\__ \\ (_) | | \\__ \\\r\n"
" |_| \\_\\___/ \\___|_|\\_\\ |_| \\__,_| .__/ \\___|_| |_____/ \\___|_|___/___/\\___/|_| |___/ \r\n"
" | | \r\n"
" |_| \n"
"credits to wynand1004\n\n"
"In diesem Spiel spielst du gegen einen COM Schere-Stein-Papier!\n"
"Waehle, sobald dich die Konsole dazu auffordert, deine 'Waffe' aus, indem du die entsprechende Zahl eintippst.\n"
"Gibst du bei der Aufforderung 0 ein, gelangst du zurueck ins Hauptmenue!\n\n";
}
void printResult(int winNumb, int comSelect, int userSelect)
{
char comWeapon[10];
switch(comSelect)
{
case(1):
strcpy(comWeapon, "Schere");
break;
case(2):
strcpy(comWeapon,"Stein");
break;
case(3):
strcpy(comWeapon,"Papier");
break;
default:
strcpy(comWeapon, "Not found");
break;
}
if(userSelect == 1)
{
switch (comSelect)
{
case(1):
printf(" _______ _______\n"
"---' ____)____ ____(____ '---\n"
" ______) (______\n"
" __________) (__________\n"
" (____) (____)\n"
"---.__(___) (___)__.---\n"
" Scissor vs Scissor\n");
break;
case(2):
printf(" _______ _______\n"
"---' ____)____ (____ '---\n"
" ______) (_____)\n"
" __________) (_____)\n"
" (____) (____)\n"
"---.__(___) (___)__.---\n"
" Scissor vs Rock\n");
break;
case(3):
printf(" _______ _______\n"
"---' ____)____ ____(____ '----\n"
" ______) (______\n"
" __________) (_______\n"
" (____) (_______\n"
"---.__(___) (_________.---\n"
" Scissor vs Paper\n");
break;
default:
printf("ungültige Eingabe\n");
break;
}
}
else if(userSelect ==2)
{
switch (comSelect)
{
case(1):
printf(" _______ _______\n"
"---' ____) ____(____ '---\n"
" (_____) (______\n"
" (_____) (__________\n"
" (____) (____)\n"
"---.__(___) (___)__.---\n"
" Rock VS Scissor\n");
break;
case(2):
printf(" _______ _______\n"
"---' ____) (____ '---\n"
" (_____) (_____)\n"
" (_____) (_____)\n"
" (____) (____)\n"
"---.__(___) (___)__.---\n"
" Rock VS Rock\n");
break;
case(3):
printf(" _______ _______\n"
"---' ____) ____(____ '----\n"
" (_____) (______\n"
" (_____) (_______\n"
" (____) (_______\n"
"---.__(___) (_________.---\n"
" Rock VS Paper\n");
break;
default:
printf("ungültige Eingabe\n");
break;
}
}
else if(userSelect ==3)
{
switch (comSelect)
{
case(1):
printf(" _______ _______\n"
"---' ____)____ ____(____ '---\n"
" ______) (______\n"
" _______) (__________\n"
" _______) (____)\n"
"---.__________) (___)__.---\n"
" Paper VS Scissor\n");
break;
case(2):
printf(" _______ _______\n"
"---' ____)____ (____ '---\n"
" ______) (_____)\n"
" _______) (_____)\n"
" _______) (____)\n"
"---.__________) (___)__.---\n"
" Paper VS Rock\n");
break;
case(3):
printf(" _______ _______\n"
"---' ____)____ ____(____ '----\n"
" ______) (______\n"
" _______) (_______\n"
" _______) (_______\n"
"---.__________) (_________.---\n"
" Paper VS Paper\n");
break;
default:
printf("ungültige Eingabe\n");
break;
}
}
else
{
printf("ungültige Eingabe");
}
switch (winNumb)
{
case(-1):printf("Der Computer hat %s gewaehlt, Du hast verloren!!!\n\n", comWeapon);
break;
case(0): printf("Der Computer hat %s gewaehlt, Es steht unentschieden!!!\n\n", comWeapon);
break;
case(1): printf("Der Computer hat %s gewaehlt, Du hast gewonnen!!!\n\n", comWeapon);
break;
default: printf("Error!");
break;
}
}

3
src/main/c/Tim/SchereSteinPapier.h

@ -1,6 +1,7 @@
#ifndef SCHERESTEINPAPIER_H
#define SCHERESTEINPAPIER_H
int schereSteinPapier();
void schereSteinPapier();
int calculateWinner(int, int);
#endif

7
src/main/c/Tim/hangman.c

@ -0,0 +1,7 @@
#include "hangman.h"
#include <stdio.h>
void hangman()
{
printf("Hello World!");
}

6
src/main/c/Tim/hangman.h

@ -0,0 +1,6 @@
#ifndef HANGMAN_H
#define HANGMAN_H
void hangman();
#endif

14
src/main/c/main.c

@ -11,7 +11,8 @@
//todo
// Includiert hier euer .h-Datei für das entsprechende Spiel mit '#include "datei.h"'
#include <stdio.h>
#include "Tim/SchereSteinPapier.h"
#include "SchereSteinPapier.h"
#include "hangman.h"
void openInterface();
@ -31,7 +32,8 @@ void openInterface()
// Vergesst das \n am Ende des Namens nicht!!!
printf("\n\nHallo und willkommen bei unserer Spielesammlung!!!\n"
"Du hast folgende Spiele zur Auswahl:\n\n"
"1: Schere-Stein-Papier\n");
"1: Schere-Stein-Papier\n"
"2: Hangman\n");
printf("\nBitte waehle die Zahl des entsprechenden Spiels aus, um damit zu starten.\nAm Ende eines Spiels kannst du mit der Taste 0 wieder zurueck zum Hauptmenue kommen.\nIm Hauptmenue beendest du mit der Auswahl 0 das Programm \n\n");
scanf_s("%d", &selection);
@ -44,10 +46,10 @@ void openInterface()
case(1):
schereSteinPapier();
break;
/*case(2):
//Spiel()
break;
case(3):
case(2):
hangman();
break;
/*case(3):
//Spiel()
break;
case(4):

145
src/test/c/Tim/test_SchereSteinPapier.c

@ -1,5 +1,10 @@
#include "SchereSteinPapier.h"
#include "unity.h"
#include <stdlib.h>
const int scissor = 1;
const int rock = 2;
const int paper = 3;
void setUp(void)
{
@ -11,11 +16,147 @@ void tearDown(void)
}
//Testfälle für Unentschieden
//1. Beide wählen Schere
void test_draw_USER_Scissor_COM_Scissor()
{
//arrange
int expectedResult = 0;
//act
int actualResult = calculateWinner(scissor,scissor);
//assert
TEST_ASSERT_EQUAL_INT(expectedResult, actualResult);
}
//2. Beide wählen Stein
void test_draw_USER_Rock_COM_Rock()
{
//arrange
int expectedResult = 0;
//act
int actualResult = calculateWinner(rock,rock);
//assert
TEST_ASSERT_EQUAL_INT(expectedResult, actualResult);
}
//3. Beide wählen Papier
void test_draw_USER_Paper_COM_Paper()
{
//arrange
int expectedResult = 0;
//act
int actualResult = calculateWinner(paper,paper);
//assert
TEST_ASSERT_EQUAL_INT(expectedResult, actualResult);
}
//Testfälle für Niederlage
//1. User wählt Schere, Computer wählt Stein
void test_lose_USER_Scissor_COM_Rock()
{
//arrange
int expectedResult = -1;
//act
int actualResult = calculateWinner(scissor,rock);
//assert
TEST_ASSERT_EQUAL_INT(expectedResult, actualResult);
}
//2. User wählt Papier, Computer wählt Schere
void test_lose_USER_Paper_COM_Scissor()
{
//arrange
int expectedResult = -1;
//act
int actualResult = calculateWinner(paper,scissor);
//assert
TEST_ASSERT_EQUAL_INT(expectedResult, actualResult);
}
//3. User wählt Stein, Computer wählt Papier
void test_lose_USER_Rock_COM_Paper()
{
//arrange
int expectedResult = -1;
//act
int actualResult = calculateWinner(rock,paper);
//assert
TEST_ASSERT_EQUAL_INT(expectedResult, actualResult);
}
void testingCeedlingFunctionality()
//Testfälle für Sieg
//1. User wählt Schere, Computer wählt Papier
void test_win_USER_Scissor_COM_Paper()
{
//arrange
int expectedResult = 1;
//act
int actualResult = calculateWinner(scissor,paper);
//assert
TEST_ASSERT_EQUAL_INT(expectedResult, actualResult);
}
//2. User wählt Stein, Computer wählt Schere
void test_win_USER_Rock_COM_Scissor()
{
//arrange
int expectedResult = 1;
//act
int actualResult = calculateWinner(rock,scissor);
//assert
TEST_ASSERT_EQUAL_INT(expectedResult, actualResult);
}
//3. User wählt Papier, Computer wählt Stein
void test_win_USER_Paper_COM_Rock()
{
//arrange
int expectedResult = 1;
//act
int actualResult = calculateWinner(paper,rock);
//assert
TEST_ASSERT_EQUAL_INT(expectedResult, actualResult);
}
int actualResult = schereSteinPapier();
//Testfälle für ungültige Parameterübergabe
//1. Durch den User wurde ein ungültiges Parameter übergeben
// Der Computer wählt eine Zahl zwischen 1 und 3
void test_error_USER_unknownParameter_Rock_randomChoice()
{
//arrange
int expectedResult = 3;
//act
int actualResult = calculateWinner(5,rand() % 3 + 1);
//assert
TEST_ASSERT_EQUAL_INT(expectedResult, actualResult);
}
//2. Der User wählt eine Zahl zwischen 1 und 3
// Durch den Computer wurde ein ungültiges Parameter übergeben
void test_error_USER_randomChoice_Rock_unknownParameter()
{
//arrange
int expectedResult = 3;
//act
int actualResult = calculateWinner(rand() % 3 + 1, 5);
//assert
TEST_ASSERT_EQUAL_INT(expectedResult, actualResult);
}
//3. Der User wählt eine Zahl zwischen 1 und 3
// Durch den Computer wurde das ungültige Parameter 0 übergeben
void test_error_USER_randomChoice_Rock_zero()
{
//arrange
int expectedResult = 3;
//act
int actualResult = calculateWinner(rand() % 3 + 1, 0);
//assert
TEST_ASSERT_EQUAL_INT(expectedResult, actualResult);
}
//4. Durch den User wurde das ungültige Parameter 0 übergeben
// Der Computer wählt eine Zahl zwischen 1 und 3
void test_error_USER_zero_Rock_randomChoice()
{
//arrange
int expectedResult = 3;
//act
int actualResult = calculateWinner(0, rand() % 3 + 1);
//assert
TEST_ASSERT_EQUAL_INT(expectedResult, actualResult);
}

24
src/test/c/Tim/test_hangman.c

@ -0,0 +1,24 @@
#include "hangman.h"
#include "unity.h"
void setUp(void)
{
}
void tearDown(void)
{
}
void test_ceedling_functionality()
{
//arrange
int expectedResult = 0;
//act
int actualResult = 0;
//assert
TEST_ASSERT_EQUAL_INT(expectedResult, actualResult);
}
Loading…
Cancel
Save