Browse Source

Merge branch 'dev' into jason

remotes/origin/jason
Jason Peters 11 months ago
parent
commit
95824f3e91
  1. 0
      src/main/c/Stefan/place_your_code_here.txt
  2. 164
      src/main/c/Stefan/slot_machine.c
  3. 19
      src/main/c/Stefan/slot_machine.h
  4. 8
      src/main/c/main.c
  5. 0
      src/test/c/Stefan/place_your_tests_here.txt
  6. 224
      src/test/c/Stefan/test_slot_machine.c

0
src/main/c/Stefan/place_your_code_here.txt

164
src/main/c/Stefan/slot_machine.c

@ -0,0 +1,164 @@
#include "slot_machine.h"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
void slotMachine(){
welcomeMessage();
char symbols[NUM_OF_SYMBOLS];
int balance = getBalance();
while(balance > 0){
int bet = getBet(balance);
balance = subtractBetFromBalance(bet, balance);
randomizeSymbols(symbols);
balance = spin(symbols, bet, balance);
}
}
int getBalance(){
int balance;
printf("Guthaben einwerfen: ");
balance = userInput();
printf("Dein Guthaben: %d\n", balance);
return balance;
}
int userInput(){
int input;
scanf("%d", &input);
return input;
}
int getBet(int balance){
while(1){
printf("Wetteinsatz: ");
int bet = userInput();
if(bet <= balance && bet > 0){
return bet;
} else {
printf("Ungueltige Eingabe!\n");
}
}
}
int subtractBetFromBalance(int bet, int balance){
return balance - bet;
}
void randomizeSymbols(char symbols[]){
srand(time(NULL));
for (int i = 0; i < NUM_OF_SYMBOLS; i++) {
int r = rand() % 100;
// 35% chance für A
if (r < 35) {
symbols[i] = 'A';
}
// 30% chance für B
else if (r < 65) {
symbols[i] = 'B';
}
// 20% chance für C
else if (r < 85) {
symbols[i] = 'C';
}
// 15% chance für D
else {
symbols[i] = 'D';
}
}
}
int spin(char symbols[], int bet, int balance){
int winnings = getWinnings(symbols, bet);
showResult(symbols, winnings);
balance += winnings;
printf("Aktuelles Guthaben: %d\n-------------------------\n", balance);
return balance;
}
int getWinnings(char symbols[], int bet){
int winnings = 0;
// 0 | 1 | 2
// 3 | 4 | 5
// 6 | 7 | 8
// 3 gleiche Symbole in einer Reihe gewinnen, Gewinn berechnen
for (int i = 0; i < ROWS; i++){
if (symbols[i * ROWS] == symbols[i * ROWS + 1] && symbols[i * ROWS] == symbols[i * ROWS + 2]) {
switch(symbols[i * ROWS]){
case 'A': winnings += bet * 3; break;
case 'B': winnings += bet * 5; break;
case 'C': winnings += bet * 10; break;
case 'D': winnings += bet * 20; break;
}
}
}
if (winnings > 0) {
printf("\nDu hast %d gewonnen!\n", winnings - bet);
}
else {
printf("\nLeider verloren.\n");
}
return winnings;
}
void showResult(char symbols[], int winnings){
char winnerMessage[] = {""};
if(winnings > 0){
strcpy(winnerMessage, " WINNER ");
} else {
strcpy(winnerMessage, " LOSER ");
}
printf("\n"
" .-------.\n"
" {-%s-} \n"
" .=============.\n"
" | | __\n"
" | [%c] [%c] [%c] |( )\n"
" | [%c] [%c] [%c] | ||\n"
" | [%c] [%c] [%c] | ||\n"
" | |_||\n"
" | xxx ::::::: |--'\n"
" | ooo ::::::: |\n"
" | $$$ ::::::: |\n"
" | __ |\n"
" |_____/__\\____|\n\n", winnerMessage, symbols[0], symbols[1], symbols[2], symbols[3], symbols[4], symbols[5], symbols[6], symbols[7], symbols[8]);
}
void welcomeMessage(){
printf("Herzlich Willkommen zur \n\n"
" _ _ _ _ \n"
" | | | | | | (_) \n"
" ___| | ___ | |_ _ __ ___ __ _ ___| |__ _ _ __ ___ \n"
"/ __| |/ _ \\| __| | '_ ` _ \\ / _` |/ __| '_ \\| | '_ \\ / _ \\\n"
"\\__ \\ | (_) | |_ | | | | | (_| | (__| | | | | | | | __/\n"
"|___/_|\\___/ \\__| |_| |_| |_|\\__,_|\\___|_| |_|_|_| |_|\\___|\n\n");
}

19
src/main/c/Stefan/slot_machine.h

@ -0,0 +1,19 @@
#ifndef SLOT_MACHINE_H
#define SLOT_MACHINE_H
#define NUM_OF_SYMBOLS 9
#define ROWS 3
void slotMachine();
void welcomeMessage();
int getBalance();
int userInput();
int getBet(int balance);
int subtractBetFromBalance(int bet, int balance);
void randomizeSymbols(char symbols[]);
int spin(char symbols[], int bet, int balance);
int getWinnings(char symbols[], int bet);
void showResult(char symbols[], int winnings);
#endif // SLOT_MACHINE_H

8
src/main/c/main.c

@ -15,6 +15,7 @@
#include "hangman.h"
#include "tictactoe.h"
#include "ASCII_art.h"
#include "Stefan/slot_machine.h"
void openInterface();
@ -37,6 +38,7 @@ void openInterface()
"1: Schere-Stein-Papier\n"
"2: Hangman\n"
"3: TicTacToe\n"
"4: Slot Machine\n"
"5: ASCII - Art\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("%d", &selection);
@ -56,9 +58,9 @@ void openInterface()
case(3):
startTicTacToe();
break;
/*case(4):
//Spiel()
break;*/
case(4):
slotMachine();
break;
case(5):
ASCII_Art();
break;

0
src/test/c/Stefan/place_your_tests_here.txt

224
src/test/c/Stefan/test_slot_machine.c

@ -0,0 +1,224 @@
#include "slot_machine.h"
#include "unity.h"
void setUp() {}
void tearDown() {}
void test_subtract_bet_10_from_balance_10() {
//arrange
int expectedResult = 0;
//act
int actualResult = subtractBetFromBalance(10, 10);
//assert
TEST_ASSERT_EQUAL_INT(expectedResult, actualResult);
}
void test_subtract_bet_0_from_balance_10() {
//arrange
int expectedResult = 10;
//act
int actualResult = subtractBetFromBalance(0, 10);
//assert
TEST_ASSERT_EQUAL_INT(expectedResult, actualResult);
}
void test_subtract_bet_5_from_balance_10() {
//arrange
int expectedResult = 5;
//act
int actualResult = subtractBetFromBalance(5, 10);
//assert
TEST_ASSERT_EQUAL_INT(expectedResult, actualResult);
}
void test_no_rows_won_bet_equals_10() {
//arrange
char testSymbols[] = {"AABAACAAD"};
int expectedResult = 0;
//act
int actualResult = getWinnings(testSymbols, 10);
//assert
TEST_ASSERT_EQUAL_INT(expectedResult, actualResult);
}
void test_3_A_won_bet_equals_10() {
//arrange
char testSymbols[] = {"AAAAACAAD"};
int expectedResult = 30;
//act
int actualResult = getWinnings(testSymbols, 10);
//assert
TEST_ASSERT_EQUAL_INT(expectedResult, actualResult);
}
void test_3_B_won_bet_equals_10() {
//arrange
char testSymbols[] = {"BBBAACAAD"};
int expectedResult = 50;
//act
int actualResult = getWinnings(testSymbols, 10);
//assert
TEST_ASSERT_EQUAL_INT(expectedResult, actualResult);
}
void test_3_C_won_bet_equals_10() {
//arrange
char testSymbols[] = {"BABAACCCC"};
int expectedResult = 100;
//act
int actualResult = getWinnings(testSymbols, 10);
//assert
TEST_ASSERT_EQUAL_INT(expectedResult, actualResult);
}
void test_3_D_won_bet_equals_10() {
//arrange
char testSymbols[] = {"BABDDDCAC"};
int expectedResult = 200;
//act
int actualResult = getWinnings(testSymbols, 10);
//assert
TEST_ASSERT_EQUAL_INT(expectedResult, actualResult);
}
void test_6_A_won_bet_equals_10() {
//arrange
char testSymbols[] = {"AAAAAACAC"};
int expectedResult = 60;
//act
int actualResult = getWinnings(testSymbols, 10);
//assert
TEST_ASSERT_EQUAL_INT(expectedResult, actualResult);
}
void test_6_B_won_bet_equals_10() {
//arrange
char testSymbols[] = {"BBBBBBCAC"};
int expectedResult = 100;
//act
int actualResult = getWinnings(testSymbols, 10);
//assert
TEST_ASSERT_EQUAL_INT(expectedResult, actualResult);
}
void test_6_C_won_bet_equals_10() {
//arrange
char testSymbols[] = {"CCCCCCCAC"};
int expectedResult = 200;
//act
int actualResult = getWinnings(testSymbols, 10);
//assert
TEST_ASSERT_EQUAL_INT(expectedResult, actualResult);
}
void test_6_D_won_bet_equals_10() {
//arrange
char testSymbols[] = {"DDDDDDCAC"};
int expectedResult = 400;
//act
int actualResult = getWinnings(testSymbols, 10);
//assert
TEST_ASSERT_EQUAL_INT(expectedResult, actualResult);
}
void test_3_A_3_B_won_bet_equals_10() {
//arrange
char testSymbols[] = {"AAABBBCAC"};
int expectedResult = 80;
//act
int actualResult = getWinnings(testSymbols, 10);
//assert
TEST_ASSERT_EQUAL_INT(expectedResult, actualResult);
}
void test_3_C_3_D_won_bet_equals_10() {
//arrange
char testSymbols[] = {"BAACCCDDD"};
int expectedResult = 300;
//act
int actualResult = getWinnings(testSymbols, 10);
//assert
TEST_ASSERT_EQUAL_INT(expectedResult, actualResult);
}
void test_9_A_won_bet_equals_10() {
//arrange
char testSymbols[] = {"AAAAAAAAA"};
int expectedResult = 90;
//act
int actualResult = getWinnings(testSymbols, 10);
//assert
TEST_ASSERT_EQUAL_INT(expectedResult, actualResult);
}
void test_3_B_3_C_3_D_won_bet_equals_10() {
//arrange
char testSymbols[] = {"BBBCCCDDD"};
int expectedResult = 350;
//act
int actualResult = getWinnings(testSymbols, 10);
//assert
TEST_ASSERT_EQUAL_INT(expectedResult, actualResult);
}
Loading…
Cancel
Save