Commit ab0b2d1e by krkane

Update Baaskood.c

parent 287a8af7
Showing with 233 additions and 102 deletions
#include <stdio.h> #include "Header.h"
#include <stdlib.h>
#include <time.h> const char *playerHitScenarios[] = {
"Sa tegid kiire rünnaku vastasele. Ta võttis %d kahju (Alles %dHP).\n",
// Struktuur mängija andmete hoidmiseks "Vastane kaotas tasakaalust, kui ründasid teda. Ta kaotas %d elu (Alles %dHP).\n",
struct Player { "Sa tegid ründes viimase otsustava löögi vastasele. Ta võttis %d kahju (Alles %dHP).\n"
int hp; // Elud };
int attack; // Rünnaku tugevus
int potion_count; // Võlujookide arv const char *enemyHitScenarios[] = {
"Vastane eiras sinu rünnakut ja vastas oma rünnakuga. Sa kaotasid %d elu. (Alles %dHP)\n",
"Vastane ründas sind ja võttis %d kahju. (Alles %dHP)\n",
"Vastane tabas sind ootamatult, võttes %d elu. (Alles %dHP)\n"
}; };
// Struktuur vastase andmete hoidmiseks const char *evenScenarios[] = {
struct Enemy { "Mängija ja vastane võitlevad väsimatult. Kumbki ei taha alla anda!\n",
int hp; // Elud "Tõeline võitlus jätkub! Kumbki vastane ei anna alla!\n",
char type[20]; // Tüüp "Võitlus kuumeneb, kuid tulemused ei muutu! Mõlemad vastased on visad!\n"
int attack; // Rünnaku tugevus
}; };
// Funktsioon, mis loob mängija Player CreatePlayer()
struct Player create_player() { {
struct Player player; Player player;
player.hp = 100; // 100 elu player.health = 100;
player.attack = 10; // 10 rünnaku tugevus player.attack = 10;
player.potion_count = 3; //3 võlujooki player.potionCount = 3;
return player; return player;
} }
// Funktsioon võitluse jaoks int Move(int defeated_enemies)
int fight(struct Player *player, struct Enemy *enemy) { {
int player_hp = player->hp; printf("Sa seisad koopas, kust avanevad kaks pimedat käiku. Igaüks neist tundub olevat süngem kui teine.\n"
int enemy_hp = enemy->hp; "Süda puperdades mõtled sa, millisesse neist suunduda.\n");
int player_attack, enemy_attack;
// Genereerime juhusliku arvu, et määrata, milline käik on õige
int correctChoice = rand() % 2 + 1;
// Kui see on esimene vaenlane, siis pole mõtet lisada õiget ja vale valikut
if (defeated_enemies == 0)
{
printf("1. Vasakule\n"
"2. Paremale\n"
"0. Välju mängust\n");
}
else
{
// Kui see pole esimene vaenlane, siis määrame vasaku ja parema käigu vastavalt juhuslikult
printf("1. %s\n", (correctChoice == 1) ? "Mine vasakule" : "Mine paremale");
printf("2. %s\n", (correctChoice == 2) ? "Mine vasakule" : "Mine paremale");
printf("3. Mine tagasi puhkealale\n"
"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 mängust väljuda.\n");
return 0;
}
if ((choice == 1 && correctChoice == 1) || (choice == 2 && correctChoice == 2))
{
printf("Sinu süda peksleb põnevusest, kui astud ettevaatlikult käiku.\n"
"Seina ääres näeb välja nagu oleks midagi... liikunud?\n"
"Sa süvendad oma hingamist ja jätkad edasist teekonda.\n");
return 1;
}
else if ((choice == 1 && correctChoice == 2) || (choice == 2 && correctChoice == 1))
{
printf("Tunned, et midagi pole päris õige.\n"
"Järsku kuuled kaugel mingit veidrat müra...\n"
"See osutub ohtlikuks lõksuks! Sa kaotad elusid!\n");
return -1;
}
else if (choice == 3)
{
printf("Sa otsustad naasta puhkealale ja valmistuda järgmiseks seikluseks.\n"
"Taas kord tunned end turvaliselt tulede valgel ja lõkke praksumisel.\n");
return 3;
}
else
{
printf("Vale valik. Palun vali uuesti.\n");
return Move(defeated_enemies); // Rekursiivselt kutsu Move funktsiooni uuesti, et saaksid uue valiku teha
}
}
int fight(Player *p, Enemy *e) {
int playerHp = p->health;
int enemyHp = e->health;
int playerAttack, enemyAttack;
int escaped = 0; // Flag variable to track if player escaped
int initialHealth = p->health; // Store initial health
while (player_hp > 0 && enemy_hp > 0) { while (playerHp > 0 && enemyHp > 0 && !escaped) {
printf("\nValikud:\n"); printf("\nValikud:\n");
printf("1. Ründa\n"); printf("1. Ründa\n");
printf("2. Põgene\n"); printf("2. Põgene\n");
...@@ -44,137 +112,200 @@ int fight(struct Player *player, struct Enemy *enemy) { ...@@ -44,137 +112,200 @@ int fight(struct Player *player, struct Enemy *enemy) {
switch (choice) { switch (choice) {
case 1: case 1:
player_attack = rand() % player->attack + 1; // mängija rünnak playerAttack = rand() % p->attack + 1; // Random player attack
enemy_attack = rand() % enemy->attack + 1; // vastase rünnak enemyAttack = rand() % e->attack + 1; // Random enemy attack
if (player_attack > enemy_attack) { if (playerAttack > enemyAttack) {
enemy_hp -= player_attack; int damageDealt = playerAttack;
printf("Vastane kaotas %d elu.\n", player_attack); enemyHp -= damageDealt;
} else if (enemy_attack > player_attack) { printf(playerHitScenarios[rand() % (sizeof(playerHitScenarios) / sizeof(playerHitScenarios[0]))], damageDealt, enemyHp);
player_hp -= enemy_attack; } else if (enemyAttack > playerAttack) {
printf("Sa kaotasid %d elu.\n", enemy_attack); int damageTaken = enemyAttack;
playerHp -= damageTaken;
printf(enemyHitScenarios[rand() % (sizeof(enemyHitScenarios) / sizeof(enemyHitScenarios[0]))], damageTaken, playerHp);
} else { } else {
printf("Kumbki ei saanud viga.\n"); printf(evenScenarios[rand() % (sizeof(evenScenarios) / sizeof(evenScenarios[0]))]);
} }
break; break;
case 2: case 2:
printf("Sa põgenesid vaenlase eest.\n"); printf("\nSa põgenesid koopast.\nVäljun...\n");
return 0; // Mäng läbi, mängija põgenes escaped = 1;
break;
case 3: case 3:
use_potion(&player); // Saada mängija struktuuri viide funktsioonile usePotion(p, initialHealth, playerHp);
break; break;
case 4: case 4:
printf("Sa lõpetasid enda käigu.\n"); printf("Sa lõpetasid enda käigu.\n");
break; break;
default: default:
printf("Vale valik. Vali uuesti.\n"); printf("Vale valik. Palun vali uuesti.\n");
} }
if (player_hp <= 0) { if (playerHp <= 0) {
printf("Sa kaotasid.\n"); printf("Kahjuks, sa kaotasid.\n");
return 0; // Mängija kaotas return 0; // Mängija kaotas
} else if (enemy_hp <= 0) { } else if (enemyHp <= 0) {
printf("Sa võitsid!\n"); printf("Sinu võit!\n\n");
return 1; // Mängija võitis
} }
} }
return escaped ? 0 : 1; // If player escaped, return 0, otherwise return 1
} }
// Funktsioon, mis liigub järgmisesse koopasse int bossFight(Player *p, Enemy *boss) {
void move_next_room() { int playerHp = p->health;
printf("Järgmine koobas. Vali suund:\n"); int bossHp = boss->health;
printf("1. Vasakule\n"); int playerAttack, bossAttack;
printf("2. Paremale\n"); int escaped = 0; // Flag variable to track if player escaped
printf("Vali suund: "); int initialHealth = p->health; // Store initial health
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. Põgene\n");
printf("3. Kasuta võlujooki\n");
printf("4. Lõpeta enda käik\n");
printf("Vali tegevus: ");
int choice; int choice;
scanf("%d", &choice); scanf("%d", &choice);
switch (choice) { switch (choice) {
case 1: case 1:
printf("Liigud vasakule järgmisesse sügavusse.\n"); 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; break;
case 2: case 2:
printf("Liigud paremale järgmisesse sügavusse.\n"); printf("\nTe põgenesite lahingust.\n");
escaped = 1;
break;
case 3:
usePotion(p, initialHealth, playerHp);
break;
case 4:
printf("\nTe lõpetasite oma käigu.\n");
break; break;
default: default:
printf("Vale valik. Liigud otse järgmisesse sügavusse.\n"); printf("\nVale valik. Palun valige uuesti.\n");
}
if (playerHp <= 0) {
printf("\nKahjuks, sa kaotasid.\n");
return 0; // Mängija kaotas
} else if (bossHp <= 0) {
printf("\nTe võitsite!\n");
return 1; // Mängija võitis
}
} }
}
// Funktsioon, mis suurendab mängija elusid ja rünnaku tugevust peale võitlust return escaped ? 0 : 1; // If player escaped, return 0, otherwise return 1
void level_up(struct Player *player) {
player->hp += 20; // Lisame mängijale 20 HP-d
player->attack += 5; // Lisame mängijale 5 rünnaku tugevust
printf("Mängija omistas võitluses au! Sa said 20 lisa HP-d ja 5 lisa rünnaku tugevust!\n");
} }
// Funktsioon mängija võlujoogi kasutamiseks void usePotion(Player *p, int initialHealth, int currentHealth)
void use_potion(struct Player *player) { {
if (player->potion_count > 0) { if (p->potionCount > 0)
player->hp += 25; // Lisame mängijale 25 HP-d {
player->potion_count--; // Vähendame mängija võlujookide arvu int restoredHealth = currentHealth - initialHealth; // Calculate restored health
printf("Kasutasid võlujooki. Sa said 25 elu tagasi.\n"); p->health += 25; // Increase current health by 25
} else { // Ensure current health doesn't exceed initial health
printf("Sul pole ühtegi jooki!\n"); if (p->health > initialHealth)
p->health = initialHealth;
p->potionCount--; // Decrease potion count
printf("\nKasutasid võlujooki. Sa said %d elu tagasi (%d-HP). Alles %d"
" võlujooki.\n", restoredHealth, p->health, p->potionCount);
}
else
{
printf("\nSul ei ole võlujooki enam saadaval!\n");
} }
} }
// Funktsioon, mis genereerib vastase vastavalt alistatud vastaste arvule void levelUp(Player *p)
struct Enemy generate_enemy(int defeated_enemies) { {
struct Enemy enemy; p->health += 20; // Lisame mängijale 20 HP-d
p->attack += 5; // Lisame mängijale 5 rünnakuvõimet
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);
}
// suurendab vaenlase elude arvu, kasutades alistatud vastaste arvu Enemy CreateEnemy(int defeated_enemies)
enemy.hp = 50 + defeated_enemies * 10; // Näiteks 50 + (10 * alistatud vastaste arv) {
Enemy enemy;
// Genereeri vaenlase elude arv, kasutades alistatud vastaste arvu
enemy.health = 50 + defeated_enemies * 10; // Näiteks 50 + (10 * alistatud vastaste arv)
//vaenlase rünnaku tugevus vastavalt tüübile // Määra vaenlase rünnaku tugevus vastavalt tüübile
switch (defeated_enemies) { switch (defeated_enemies)
{
case 0: case 0:
strcpy(enemy.type, "Päkapikk"); // Päkapikk strcpy(enemy.type, "Päkapikk"); // Päkapikk
enemy.attack = 5; // Näiteks 5 enemy.attack = 10;
break; break;
case 1: case 1:
strcpy(enemy.type, "Ork"); // Ork strcpy(enemy.type, "Ork"); // Ork
enemy.attack = 8; // Näiteks 8 enemy.attack = 15;
break; break;
case 2: case 2:
strcpy(enemy.type, "Smurf"); // Smurf strcpy(enemy.type, "Smurf"); // Smurf
enemy.attack = 10; // Näiteks 10 enemy.attack = 20;
break; break;
case 3: case 3:
strcpy(enemy.type, "Deemon"); // Deemon strcpy(enemy.type, "Deemon"); // Deemon
enemy.attack = 15; // Näiteks 15 enemy.attack = 25;
break; break;
default: default:
strcpy(enemy.type, "Bandiit"); // Bandiit strcpy(enemy.type, "Bandiit"); // Bandiit
enemy.attack = 20; // Näiteks 20 enemy.attack = 30;
} }
return enemy; return enemy;
} }
int main() { FinalBoss CreateFinalBoss(int defeated_enemies)
srand(time(0)); // juhuslike numbrite generaator {
FinalBoss boss;
struct Player player = create_player(); // Adjust boss stats based on the number of defeated enemies
int defeated_enemies = 0; // You can customize the boss's stats and type based on the game's design
boss.health = 100 + defeated_enemies * 20;
printf("Tere tulemast mängu! Sinu ülesanne on alistada koopas kõik pätid ja röövlid.\n"); boss.attack = 20 + defeated_enemies * 5;
strcpy(boss.type, "Final Boss");
while (1) { return boss;
struct Enemy enemy = generate_enemy(defeated_enemies); }
printf("Vastane %s, eludega %d ja rünnaku tugevusega %d tahab sinuga kakelda.\n", enemy.type, enemy.hp, enemy.attack);
int result = fight(&player, &enemy);
if (result == 1) {
defeated_enemies++;
level_up(&player);
move_next_room();
} else {
break;
}
}
printf("Mäng läbi! alistasid %d vaenlast.\n", defeated_enemies); void PrintWelcomeMessage(void)
{
printf(" __ __ _ \n");
printf(" \\ \\ / /__| | ___ ___ _ __ ___ ___ \n");
printf(" \\ \\ /\\ / / _ \\ |/ __/ _ \\| '_ ` _ \\ / _ \\ \n");
printf(" \\ V V / __/ | (_| (_) | | | | | | __/ \n");
printf(" \\_/\\_/ \\___|_|\\___\\___/|_| |_| |_|\\___| \n");
}
return 0; 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");
} }
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