Commit 88f44526 by grlabu

Delete gameBase.c

parent 4127c9ea
Showing with 0 additions and 467 deletions
#include "Header.h"
const char *playerHitScenarios[] = {
"\nSa tegid kiire rünnaku vastasele. Ta võttis %d kahju (Alles %dHP).\n",
"\nVastane kaotas tasakaalust, kui ründasid teda. Ta kaotas %d elu"
"(Alles %dHP).\n",
"\nSa tegid ründes viimase otsustava löögi vastasele. Ta võttis %d kahju"
"(Alles %dHP).\n"
};
const char *enemyHitScenarios[] = {
"\nVastane eiras sinu rünnakut ja vastas oma rünnakuga. Sa kaotasid %d elu."
"(Alles %dHP)\n",
"\nVastane ründas sind ja võttis %d kahju. (Alles %dHP)\n",
"\nVastane tabas sind ootamatult, võttes %d elu. (Alles %dHP)\n"
};
const char *evenScenarios[] = {
"\nMängija ja vastane võitlevad väsimatult. Kumbki ei taha alla anda!\n",
"\nTõeline võitlus jätkub! Kumbki vastane ei anna alla!\n",
"\nVõitlus kuumeneb, kuid tulemused ei muutu! Mõlemad vastased on visad!\n"
};
Player CreatePlayer()
{
Player player;
player.health = PLAYER_BASE_HEALTH;
player.attack = PLAYER_BASE_DAMAGE;
player.potionCount = POT_COUNT;
return player;
}
int Move(int defeated_enemies)
{
printf("\nSa seisad koopas, kust avanevad kaks pimedat käiku. Üks"
" süngem kui teine.\n"
"Süda puperdades mõtled sa, millisesse neist suunduda.\n\n");
// 50/50 coinflip
int correctChoice = rand() % 2 + 1;
// Not on the first turn
if (defeated_enemies == 0)
{
printf("1. Vasakule\n"
"2. Paremale\n"
"0. Välju koopast\n");
}
else
{
// Used on the second turn
printf("1. %s\n", (correctChoice == 1) ? "Mine vasakule" :
"Mine paremale");
printf("2. %s\n", (correctChoice == 2) ? "Mine vasakule"
: "Mine paremale");
printf("0. Välju mängust\n");
}
int choice;
scanf("%d", &choice);
while (choice != 1 && choice != 2 && choice != 0)
{
printf("Palun sisestage õige valik...");
scanf("%d", &choice);
}
if (choice == 0)
{
printf("Sul tekib äkki tunne, et see ei ole veel aeg seikluseks ning"
" otsustad koopast väljuda.\n");
printf("Kas te soovite mänguseisu salvestada?\n");
printf("1 - Jah\n0 - Ei\n");
int select;
scanf("%d", &select);
while (select != 1 && select != 0)
{
printf("Palun sisestage õige valik...");
scanf("%d", &select);
}
printf("\nVäljun....");
if (select == 1)
{
printf("\nSalvesin mängu. Väljun....\n");
return SAVE_GAME;
}
else
return 0;
}
if ((choice == 1 && correctChoice == 1) || (choice == 2 &&
correctChoice == 2))
{
printf("\nSinu süda peksleb kiiresti, kui astud ettevaatlikult edasi."
"\n"
"Seina ääres näeb välja nagu oleks miski... liikunud?\n"
"Sa süvendad oma hingamist ja jätkad kangelaslikul sammul.\n");
return 1;
}
else if ((choice == 1 && correctChoice == 2) || (choice == 2 &&
correctChoice == 1))
{
printf("\nTunned, et miskii pole päris õige.\n"
"Järsku kuuled kaugel mingit veidrat müra...\n"
"See osutub ohtlikuks lõksuks! Sa kaotad elusid!\n\n");
return LOSE_HP;
}
else
{
printf("Vale valik. Palun vali uuesti.\n");
return Move(defeated_enemies); // Reinitiate cycle
}
}
int fight(Player *p, Enemy *e)
{
int playerHp = p->health;
int enemyHp = e->health;
int playerAttack, enemyAttack;
int escaped = 0; // To track if player escaped
int initialHealth = p->health; // Store initial health
while (playerHp > 0 && enemyHp > 0 && !escaped)
{
printf("\nValikud:\n");
printf("1. Ründa\n");
printf("2. Kasuta võlujooki\n");
printf("3. Põgene\n");
printf("Vali tegevus: ");
int choice;
scanf("%d", &choice);
switch (choice)
{
case 1:
playerAttack = rand() % p->attack + 1; // Random player attack
enemyAttack = rand() % e->attack + 1; // Random enemy attack
if (playerAttack > enemyAttack)
{
int damageDealt = playerAttack;
enemyHp -= damageDealt;
printf(playerHitScenarios[rand() %
(sizeof(playerHitScenarios) /
sizeof(playerHitScenarios[0]))], damageDealt, enemyHp);
}
else if (enemyAttack > playerAttack)
{
int damageTaken = enemyAttack;
playerHp -= damageTaken;
printf(enemyHitScenarios[rand() % (sizeof(enemyHitScenarios)
/ sizeof(enemyHitScenarios[0]))], damageTaken, playerHp);
}
else
{
printf(evenScenarios[rand() % (sizeof(evenScenarios) /
sizeof(evenScenarios[0]))]);
}
break;
case 2:
playerHp = usePotion(p, initialHealth, playerHp);
break;
case 3:
printf("\nSa põgenesid koopast.\n");
escaped = 1;
break;
default:
printf("Vale valik. Palun vali uuesti.\n");
}
if (playerHp <= 0)
{
printf("Kahjuks, sa kaotasid.\n");
return 0; // Player lost
}
else if (enemyHp <= 0)
{
printf("Sinu võit!\n\n");
}
}
return escaped ? 0 : 1; // If player escaped, return 1, otherwise return 0
}
int bossFight(Player *p, FinalBoss *boss)
{
int playerHp = p->health;
int bossHp = boss->health;
int playerAttack, bossAttack;
int escaped = 0; // track if player escaped
int initialHealth = p->health; // Store initial health
int specialAttack = 0;
printf("\nTe seisate võimsa vaenlase, %s, ees. Tal on %dHP ja tema rünnaku tugevus on %d.\n", boss->type, boss->health, boss->attack);
while (playerHp > 0 && bossHp > 0 && !escaped)
{
printf("\nValikud:\n");
printf("1. Ründa\n");
printf("2. Kasuta võlujooki\n");
printf("3. põgene\n");
printf("Vali tegevus: ");
int choice;
scanf("%d", &choice);
switch (choice)
{
case 1:
playerAttack = rand() % p->attack + 1; // Random player attack
bossAttack = rand() % boss->attack + 1; // Random boss attack
if (playerAttack > bossAttack)
{
int damageDealt = playerAttack;
bossHp -= damageDealt;
printf(playerHitScenarios[rand() % (sizeof(playerHitScenarios) / sizeof(playerHitScenarios[0]))], damageDealt, bossHp);
}
else if (bossAttack > playerAttack)
{
int damageTaken = bossAttack;
playerHp -= damageTaken;
printf(enemyHitScenarios[rand() % (sizeof(enemyHitScenarios) / sizeof(enemyHitScenarios[0]))], damageTaken, playerHp);
}
else
{
printf(evenScenarios[rand() % (sizeof(evenScenarios) / sizeof(evenScenarios[0]))]);
}
break;
case 2:
playerHp = usePotion(p, initialHealth, playerHp);
break;
case 3:
printf("\nSa põgenesid koopast.\n");
escaped = 1;
break;
default:
printf("Vale valik. Palun vali uuesti.\n");
}
if(bossHp <= BOSS_HEALTH && specialAttack == 0)
{
printf("\nKoopa pealik vihastab. Ta kogub ennast tummise rünnaku jaoks."
"\nSa märkasid rünnakut viimasel sekundil ning sul on kaks valikut.\n");
int correctChoice = rand() % 2 + 1;
printf("1. %s\n", (correctChoice == 1) ? "Põikle vasakule" : "Põikle paremale");
printf("2. %s\n", (correctChoice == 2) ? "Põikle vasakule" : "Põikle paremale");
int choice;
scanf("%d", &choice);
while (choice != 1 && choice != 2)
{
printf("Kummale poole Põikled");
scanf("%d", &choice);
}
if ((choice == 1 && correctChoice == 1) || (choice == 2 && correctChoice == 2))
{
printf("Pealik napilt riivab oma mõõgaga su kätt ning sa ei saanud viga.\n"
"Su valik säästis sulle su elu.\n"
"Sa kogud sekundiks hinge ning kaklus jätkub\n");
}
else if ((choice == 1 && correctChoice == 2) || (choice == 2 && correctChoice == 1))
{
printf("Pealik lööb kogu oma jõu ja uhkusega sulle rangluu pihta.\n"
"Sa karjud suurest valust.\n");
playerHp -= SPECIAL_DAMAGE;
printf("Löök võttis sult %d elu (alles %d HP)", SPECIAL_DAMAGE,
playerHp);
if (playerHp <= 0)
{
printf("\nSu keha ei pidanud löögile vastu ning jooksid nii energiast kui ka verest tühjaks."
"\nKahjuks, sa kaotasid.\n");
return 0; // Player lost
}
}
specialAttack++;
}
if (playerHp <= 0)
{
printf("\nKahjuks, sa kaotasid.\n");
return 0; // Player lost
}
else if (bossHp <= 0)
{
printf("\n\nTEIE VÕIT!\nKõnnite võidukalt üle Final Bossi"
" korjuse ja näete suurt hunnikut sädelevat kulda\n"
"Ja ENNÄE!! Varanduse kõrval lebab uinund printsess\n"
"Aga teie võitlusest väsinud käed suudavad kanda"
" ainult üht, kas printsessi, või varandust...\n");
printf("Kumma te valite:\n1. Varandus\n2. Printsess\n>");
int finalChoice;
scanf("%d", &finalChoice);
while(finalChoice != 1 && finalChoice != 2)
{
printf("Palun valige sobilik valik...\n>");
scanf("%d\n", &finalChoice);
}
if (finalChoice == 1)
{
printf("Te haarate varanduse ning kõnnite koopa"
" väljapääsu poole, vaadates veel korra üle õla"
" printsessi poole, kuid ta ei peata teid.\n"
"\nMÄNG LÄBI\n");
return 0;
}
else
{
printf("Te võtate imekauni printsessi oma sülle"
" ning alustate retke tagasi koopa väljapääsu poole\n"
"Vaadates veel korra säreleva varanduse poole"
", kuid see ei peata teid.\n"
"\nMÄNG LÄBI\n");
return 0;
}
}
}
return escaped ? 0 : 1; // If player escaped, return 0, otherwise return 1
}
int usePotion(Player *p, int initialHealth, int currentHealth)
{
if (p->potionCount > 0)
{
int healing = POTION;
currentHealth += healing; // Increase current health by 25
// Ensure current health doesn't exceed initial health
if (currentHealth > initialHealth)
{
healing = (currentHealth - initialHealth) * -1 + POTION;
currentHealth = initialHealth;
}
p->potionCount--; // Decrease potion count
printf("\nKasutasid võlujooki. Sa said %d elu tagasi (%d-HP). Alles %d"
" võlujooki.\n", healing, currentHealth, p->potionCount);
}
else
{
printf("\nSul ei ole võlujooki enam saadaval!\n");
}
return currentHealth;
}
void levelUp(Player *p)
{
p->health += LEVEL_UP_HP; // add 20 HP to base
p->attack += LEVEL_UP_ATTACK; // add 5 attack to base
printf("Mängija taseme tõus! Sa said 20 lisa HP-d ja 5 lisa rünnakuvõimet"
"!\n");
printf("Mängija andmed: HP - %d, rünnakuvõime - %d\n\n", p->health,
p->attack);
}
Enemy CreateEnemy(int defeated_enemies)
{
Enemy enemy;
// Generate enemy hp based on defeated enemies
enemy.health = 50 + defeated_enemies * 10;
// generate enemy type and attack damage
switch (defeated_enemies)
{
case 0:
strcpy(enemy.type, "Päkapikk"); // Päkapikk
enemy.attack = ELF_BASE_DAMAGE;
break;
case 1:
strcpy(enemy.type, "Ork"); // Ork
enemy.attack = ORK_BASE_DAMAGE;
break;
case 2:
strcpy(enemy.type, "Smurf"); // Smurf
enemy.attack = SMURF_BASE_DAMAGE;
break;
case 3:
strcpy(enemy.type, "Deemon"); // Deemon
enemy.attack = DEEMON_BASE_DAMAGE;
break;
default:
strcpy(enemy.type, "Bandiit"); // Bandiit
enemy.attack = BANDIIT_BASE_DAMAGE;
}
return enemy;
}
FinalBoss CreateFinalBoss(int defeated_enemies)
{
FinalBoss boss;
//Boss stats based on the number of defeated enemies
boss.health = BOSS_HEALTH + defeated_enemies * 20;
boss.attack = BOSS_DAMAGE + defeated_enemies * 5;
strcpy(boss.type, "Final Boss");
return boss;
}
void PrintWelcomeMessage(void)
{
printf(" __ __ _ \n");
printf(" \\ \\ / /__| | ___ ___ _ __ ___ ___ \n");
printf(" \\ \\ /\\ / / _ \\ |/ __/ _ \\| '_ ` _ \\ / _ \\ \n");
printf(" \\ V V / __/ | (_| (_) | | | | | | __/ \n");
printf(" \\_/\\_/ \\___|_|\\___\\___/|_| |_| |_|\\___| \n");
}
void DisplayGameRules(void)
{
printf("\nTere mängija! Olete sisenenud koopasse, milles peitub"
" suur varandus. Varandust kaitsevad aga mitmed koletised, kes"
" takistavad teid selle saamisest!\n"
"Alista kõik koletised ning omasta võidukalt varandus!\n\n"
"Mängides on sul mitmeid valikuid:\n"
"1. Võitle - Asud võitlusesse koletisega, kus teie võitlus käib"
" läbi täringu visete.\n"
"2. Põgene - Saad ükskõik mis hetkel põgeneda koopast ning"
" lõpetada mängu.\n"
"3. Kasuta võlujooki - sellega saad endale võitluse ajal"
" taastada 25 elu.\n");
}
int Menu(void)
{
int choice;
putchar('\n');
puts("Valige enda soov!");
puts("1 - Alusta uut mängu");
puts("2 - Kuva reeglid");
puts("3 - Jätka mängu");
puts("0 - Välju");
choice = GetIntInRange(INPUT_MIN, INPUT_MAX);
return choice;
}
int GetIntInRange(int min, int max)
{
int num;
do
{
printf("> ");
scanf("%d", &num);
if (num < min || num > max)
{
printf("\nPalun valige õige sisend!\n");
}
}
while (num < min || num > max);
return num;
}
void handleTrap(Player *player)
{
player->health -= LOSE_HP; // Subtract 10 from player's max health
if (player->health <= 0)
{
printf("Kahjuks, sa kaotasid.\n");
exit(0); // Player lost the game
}
else
{
printf("Sul on alles %d elu.\n", player->health);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment