Jason Peters
11 months ago
6 changed files with 412 additions and 3 deletions
-
0src/main/c/Stefan/place_your_code_here.txt
-
164src/main/c/Stefan/slot_machine.c
-
19src/main/c/Stefan/slot_machine.h
-
8src/main/c/main.c
-
0src/test/c/Stefan/place_your_tests_here.txt
-
224src/test/c/Stefan/test_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"); |
|||
} |
@ -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 |
@ -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); |
|||
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue