Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
krkane
/
Rüütli Vaev
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
1
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
ab0b2d1e
authored
Mar 20, 2024
by
krkane
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update Baaskood.c
parent
287a8af7
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
233 additions
and
102 deletions
Source/Baaskood.c
Source/Baaskood.c
View file @
ab0b2d1e
#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
.
h
p
=
100
;
// 100 elu
player
.
h
ealth
=
100
;
player
.
attack
=
10
;
// 10 rünnaku tugevus
player
.
attack
=
10
;
player
.
potion
_count
=
3
;
//3 võlujooki
player
.
potion
Count
=
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
(
player
Hp
>
0
&&
enemyHp
>
0
&&
!
escaped
)
{
printf
(
"
\n
Valikud:
\n
"
);
printf
(
"
\n
Valikud:
\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
(
"
\n
Sa põgenesid koopast.
\n
Vä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
use
Potion
(
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.
V
ali uuesti.
\n
"
);
printf
(
"Vale valik.
Palun v
ali uuesti.
\n
"
);
}
}
if
(
player
_h
p
<=
0
)
{
if
(
player
H
p
<=
0
)
{
printf
(
"
S
a kaotasid.
\n
"
);
printf
(
"
Kahjuks, s
a 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
(
"
\n
Te 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
(
"
\n
Valikud:
\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
(
"
\n
Te põgenesite lahingust.
\n
"
);
escaped
=
1
;
break
;
case
3
:
usePotion
(
p
,
initialHealth
,
playerHp
);
break
;
case
4
:
printf
(
"
\n
Te lõpetasite oma käigu.
\n
"
);
break
;
break
;
default:
default:
printf
(
"Vale valik. Liigud otse järgmisesse sügavusse.
\n
"
);
printf
(
"
\n
Vale valik. Palun valige uuesti.
\n
"
);
}
if
(
playerHp
<=
0
)
{
printf
(
"
\n
Kahjuks, sa kaotasid.
\n
"
);
return
0
;
// Mängija kaotas
}
else
if
(
bossHp
<=
0
)
{
printf
(
"
\n
Te 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
(
"
\n
Kasutasid võlujooki. Sa said %d elu tagasi (%d-HP). Alles %d"
" võlujooki.
\n
"
,
restoredHealth
,
p
->
health
,
p
->
potionCount
);
}
else
{
printf
(
"
\n
Sul 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
(
"
\n
Tere 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
"
);
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment