Krolyxon
Commit 66e624a

Branches

Refs →

trossrcmain.c

159 lines · 3.5 KB · C

1#include "sort.h"
2#include "utils.h"
3#include <stdio.h>
4#include <stdlib.h>
5#include <time.h>
6// https://texteditor.com/multiline-text-art/
7
8static const int EASY_SCORE_DECREMENT = 10;
9static const int MEDIUM_SCORE_DECREMENT = 20;
10static const int LOWER = 1;
11static const int UPPER = 4;
12
13typedef enum Difficulty {
14 Easy,
15 Medium,
16 Hard,
17} Difficulty;
18
19int list[35];
20
21static int score = 0;
22static int level = 1;
23static int size = 5;
24
25// Declaring Functions
26void decrement_score(Difficulty diff);
27void level_up();
28void level_down();
29int getrand();
30void getarr(int size);
31Difficulty get_difficulty();
32
33int main(int argc, char *argv[]) {
34 // Get a random number to run a random algorithm
35 srand(time(0));
36 int guess;
37
38 clearscreen();
39 printf(COLOR_CYAN);
40 print_ascii("./assets/banner.txt");
41 Difficulty diff = get_difficulty();
42
43 while (level > 0 && level <= 10) {
44 int random_number = getrand();
45 printf(COLOR_GREEN BAR COLOR_OFF);
46 switch (random_number) {
47 case 1:
48 getarr(size);
49 bubblesort(list, size);
50 break;
51 case 2:
52 getarr(size);
53 insertionsort(list, size);
54 break;
55 case 3:
56 getarr(size);
57 selectionsort(list, size);
58 break;
59 case 4:
60 radixsort(list, size);
61 break;
62 default:
63 break;
64 }
65
66 printf(COLOR_GREEN BAR COLOR_OFF);
67 printf(COLOR_BOLD "[1] " COLOR_OFF "Bubble Sort\n");
68 printf(COLOR_BOLD "[2] " COLOR_OFF "Insertion Sort\n");
69 printf(COLOR_BOLD "[3] " COLOR_OFF "Selection Sort\n");
70 printf(COLOR_BOLD "[4] " COLOR_OFF "Radix Sort\n");
71 printf("Enter your guess: ");
72 scanf("%d", &guess);
73 if (guess == random_number) {
74 score += 10;
75 level_up();
76 } else {
77 decrement_score(diff);
78 level_down();
79 }
80
81 printf("Score: %d\n", score);
82 }
83 return 0;
84}
85
86int getrand() { return (rand() % (UPPER - LOWER + 1)) + LOWER; }
87
88void decrement_score(Difficulty diff) {
89 if (diff == Easy) {
90 printf(COLOR_BOLD COLOR_RED "Wrong Answer!!" COLOR_OFF
91 "The score will be decremented by 10\n");
92 score -= EASY_SCORE_DECREMENT;
93 } else if (diff == Medium) {
94 printf("Wrong Answer!! The score will be decremented by 20\n");
95 score -= MEDIUM_SCORE_DECREMENT;
96 } else {
97 printf("Wrong Answer!! The score will be reseted to 0\n");
98 score = 0;
99 }
100}
101
102Difficulty get_difficulty() {
103 int choice;
104 Difficulty difficulty;
105 printf(COLOR_BOLD COLOR_RED " CHOOSE DIFFICULTY\n");
106 printf(COLOR_GREEN BAR COLOR_OFF);
107 printf(COLOR_BOLD "[1]" COLOR_OFF " Easy\n");
108 printf(COLOR_BOLD "[2]" COLOR_OFF " Medium\n");
109 printf(COLOR_BOLD "[3]" COLOR_OFF " Hard\n" COLOR_OFF);
110 printf(COLOR_GREEN BAR COLOR_OFF);
111 printf("Enter difficulty: ");
112 scanf("%d", &choice);
113 switch (choice) {
114 case 1:
115 difficulty = Easy;
116 break;
117 case 2:
118 difficulty = Medium;
119 break;
120 case 3:
121 difficulty = Hard;
122 break;
123 default:
124 printf(COLOR_RED "Invalid Choice. Defaulting to Medium\n" COLOR_OFF);
125 break;
126 }
127 return difficulty;
128}
129
130void level_up() {
131 if (level == 10) {
132 printf(COLOR_YELLOW);
133 print_ascii("./assets/winner.txt");
134 printf(COLOR_OFF);
135 printf("Congratulations!! You WON the game");
136 exit(1);
137 }
138 level++;
139 size += 3;
140 printf(COLOR_BOLD COLOR_GREEN BAR
141 "You have been leveled up to Level %d\n" COLOR_OFF,
142 level);
143}
144
145void level_down() {
146 if (level >= 2) {
147 level--;
148 size -= 3;
149 } else {
150 printf("Too many wrong answers!!, You Lose!");
151 exit(1);
152 }
153}
154
155void getarr(int size) {
156 for (int i = 0; i < size; i++) {
157 list[i] = rand() % 100;
158 }
159}