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
4079f980
authored
Mar 20, 2024
by
gerann
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update gameBase.c
parent
5de75c7c
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
216 additions
and
107 deletions
Source/gameBase.c
Source/gameBase.c
View file @
4079f980
#include "Header.h"
#include "Header.h"
const
char
*
playerHitScenarios
[]
=
{
const
char
*
playerHitScenarios
[]
=
{
"Sa tegid kiire rünnaku vastasele. Ta võttis %d kahju (Alles %dHP).
\n
"
,
"
\n
Sa tegid kiire rünnaku vastasele. Ta võttis %d kahju (Alles %dHP).
\n
"
,
"Vastane kaotas tasakaalust, kui ründasid teda. Ta kaotas %d elu (Alles %dHP).
\n
"
,
"
\n
Vastane kaotas tasakaalust, kui ründasid teda. Ta kaotas %d elu"
"Sa tegid ründes viimase otsustava löögi vastasele. Ta võttis %d kahju (Alles %dHP).
\n
"
"(Alles %dHP).
\n
"
,
"
\n
Sa tegid ründes viimase otsustava löögi vastasele. Ta võttis %d kahju"
"(Alles %dHP).
\n
"
};
};
const
char
*
enemyHitScenarios
[]
=
{
const
char
*
enemyHitScenarios
[]
=
{
"Vastane eiras sinu rünnakut ja vastas oma rünnakuga. Sa kaotasid %d elu. (Alles %dHP)
\n
"
,
"
\n
Vastane eiras sinu rünnakut ja vastas oma rünnakuga. Sa kaotasid %d elu."
"Vastane ründas sind ja võttis %d kahju. (Alles %dHP)
\n
"
,
"(Alles %dHP)
\n
"
,
"Vastane tabas sind ootamatult, võttes %d elu. (Alles %dHP)
\n
"
"
\n
Vastane ründas sind ja võttis %d kahju. (Alles %dHP)
\n
"
,
"
\n
Vastane tabas sind ootamatult, võttes %d elu. (Alles %dHP)
\n
"
};
};
const
char
*
evenScenarios
[]
=
{
const
char
*
evenScenarios
[]
=
{
"Mängija ja vastane võitlevad väsimatult. Kumbki ei taha alla anda!
\n
"
,
"
\n
Mängija ja vastane võitlevad väsimatult. Kumbki ei taha alla anda!
\n
"
,
"Tõeline võitlus jätkub! Kumbki vastane ei anna alla!
\n
"
,
"
\n
Tõeline võitlus jätkub! Kumbki vastane ei anna alla!
\n
"
,
"Võitlus kuumeneb, kuid tulemused ei muutu! Mõlemad vastased on visad!
\n
"
"
\n
Võitlus kuumeneb, kuid tulemused ei muutu! Mõlemad vastased on visad!
\n
"
};
};
Player
CreatePlayer
()
Player
CreatePlayer
()
{
{
Player
player
;
Player
player
;
player
.
health
=
100
;
player
.
health
=
PLAYER_BASE_HEALTH
;
player
.
attack
=
10
;
player
.
attack
=
PLAYER_BASE_DAMAGE
;
player
.
potionCount
=
3
;
player
.
potionCount
=
POT_COUNT
;
return
player
;
return
player
;
}
}
int
Move
(
int
defeated_enemies
)
int
Move
(
int
defeated_enemies
)
{
{
printf
(
"Sa seisad koopas, kust avanevad kaks pimedat käiku. Igaüks neist tundub olevat süngem kui teine.
\n
"
printf
(
"
\n
Sa seisad koopas, kust avanevad kaks pimedat käiku. Üks"
"Süda puperdades mõtled sa, millisesse neist suunduda.
\n
"
);
" süngem kui teine.
\n
"
"Süda puperdades mõtled sa, millisesse neist suunduda.
\n\n
"
);
// Genereerime juhusliku arvu, et määrata, milline käik on õige
// Genereerime juhusliku arvu, et määrata, milline käik on õige
int
correctChoice
=
rand
()
%
2
+
1
;
int
correctChoice
=
rand
()
%
2
+
1
;
...
@@ -40,15 +45,16 @@ int Move(int defeated_enemies)
...
@@ -40,15 +45,16 @@ int Move(int defeated_enemies)
{
{
printf
(
"1. Vasakule
\n
"
printf
(
"1. Vasakule
\n
"
"2. Paremale
\n
"
"2. Paremale
\n
"
"0. Välju
mängu
st
\n
"
);
"0. Välju
koopa
st
\n
"
);
}
}
else
else
{
{
// Kui see pole esimene vaenlane, siis määrame vasaku ja parema käigu vastavalt juhuslikult
// 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
(
"1. %s
\n
"
,
(
correctChoice
==
1
)
?
"Mine vasakule"
:
printf
(
"2. %s
\n
"
,
(
correctChoice
==
2
)
?
"Mine vasakule"
:
"Mine paremale"
);
"Mine paremale"
);
printf
(
"3. Mine tagasi puhkealale
\n
"
printf
(
"2. %s
\n
"
,
(
correctChoice
==
2
)
?
"Mine vasakule"
"0. Välju mängust
\n
"
);
:
"Mine paremale"
);
printf
(
"0. Välju mängust
\n
"
);
}
}
int
choice
;
int
choice
;
...
@@ -61,29 +67,46 @@ int Move(int defeated_enemies)
...
@@ -61,29 +67,46 @@ int Move(int defeated_enemies)
if
(
choice
==
0
)
if
(
choice
==
0
)
{
{
printf
(
"Sul tekib äkki tunne, et see ei ole veel aeg seikluseks ning otsustad mängust väljuda.
\n
"
);
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
\n
0 - Ei
\n
"
);
int
select
;
scanf
(
"%d"
,
&
select
);
while
(
select
!=
1
&&
select
!=
0
)
{
printf
(
"Palun sisestage õige valik..."
);
scanf
(
"%d"
,
&
select
);
}
printf
(
"
\n
Väljun...."
);
if
(
select
==
1
)
{
printf
(
"
\n
Salvesin mängu. Väljun....
\n
"
);
return
SAVE_GAME
;
}
else
return
0
;
return
0
;
}
}
if
((
choice
==
1
&&
correctChoice
==
1
)
||
(
choice
==
2
&&
correctChoice
==
2
))
if
((
choice
==
1
&&
correctChoice
==
1
)
||
(
choice
==
2
&&
correctChoice
==
2
))
{
{
printf
(
"Sinu süda peksleb põnevusest, kui astud ettevaatlikult käiku.
\n
"
printf
(
"
\n
Sinu süda peksleb kiiresti, kui astud ettevaatlikult edasi."
"Seina ääres näeb välja nagu oleks midagi... liikunud?
\n
"
"
\n
"
"Sa süvendad oma hingamist ja jätkad edasist teekonda.
\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
;
return
1
;
}
}
else
if
((
choice
==
1
&&
correctChoice
==
2
)
||
(
choice
==
2
&&
correctChoice
==
1
))
else
if
((
choice
==
1
&&
correctChoice
==
2
)
||
(
choice
==
2
&&
correctChoice
==
1
))
{
{
printf
(
"
Tunned, et midag
i pole päris õige.
\n
"
printf
(
"
\n
Tunned, et miski
i pole päris õige.
\n
"
"Järsku kuuled kaugel mingit veidrat müra...
\n
"
"Järsku kuuled kaugel mingit veidrat müra...
\n
"
"See osutub ohtlikuks lõksuks! Sa kaotad elusid!
\n
"
);
"See osutub ohtlikuks lõksuks! Sa kaotad elusid!
\n\n
"
);
return
-
1
;
return
LOSE_HP
;
}
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
else
{
{
...
@@ -92,76 +115,78 @@ int Move(int defeated_enemies)
...
@@ -92,76 +115,78 @@ int Move(int defeated_enemies)
}
}
}
}
void
handleTrap
(
Player
*
player
)
{
int
fight
(
Player
*
p
,
Enemy
*
e
)
player
->
health
-=
10
;
// 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
);
}
}
int
fight
(
Player
*
p
,
Enemy
*
e
)
{
int
playerHp
=
p
->
health
;
int
playerHp
=
p
->
health
;
int
enemyHp
=
e
->
health
;
int
enemyHp
=
e
->
health
;
int
playerAttack
,
enemyAttack
;
int
playerAttack
,
enemyAttack
;
int
escaped
=
0
;
// Flag variable to track if player escaped
int
escaped
=
0
;
// Flag variable to track if player escaped
int
initialHealth
=
p
->
health
;
// Store initial health
int
initialHealth
=
p
->
health
;
// Store initial health
while
(
playerHp
>
0
&&
enemyHp
>
0
&&
!
escaped
)
{
while
(
playerHp
>
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. Kasuta võlujooki
\n
"
);
printf
(
"3. Kasuta võlujooki
\n
"
);
printf
(
"3. Põgene
\n
"
);
printf
(
"4. Lõpeta enda käik
\n
"
);
printf
(
"Vali tegevus: "
);
printf
(
"Vali tegevus: "
);
int
choice
;
int
choice
;
scanf
(
"%d"
,
&
choice
);
scanf
(
"%d"
,
&
choice
);
switch
(
choice
)
{
switch
(
choice
)
{
case
1
:
case
1
:
playerAttack
=
rand
()
%
p
->
attack
+
1
;
// Random player attack
playerAttack
=
rand
()
%
p
->
attack
+
1
;
// Random player attack
enemyAttack
=
rand
()
%
e
->
attack
+
1
;
// Random enemy attack
enemyAttack
=
rand
()
%
e
->
attack
+
1
;
// Random enemy attack
if
(
playerAttack
>
enemyAttack
)
{
if
(
playerAttack
>
enemyAttack
)
{
int
damageDealt
=
playerAttack
;
int
damageDealt
=
playerAttack
;
enemyHp
-=
damageDealt
;
enemyHp
-=
damageDealt
;
printf
(
playerHitScenarios
[
rand
()
%
(
sizeof
(
playerHitScenarios
)
/
sizeof
(
playerHitScenarios
[
0
]))],
damageDealt
,
enemyHp
);
printf
(
playerHitScenarios
[
rand
()
%
}
else
if
(
enemyAttack
>
playerAttack
)
{
(
sizeof
(
playerHitScenarios
)
/
sizeof
(
playerHitScenarios
[
0
]))],
damageDealt
,
enemyHp
);
}
else
if
(
enemyAttack
>
playerAttack
)
{
int
damageTaken
=
enemyAttack
;
int
damageTaken
=
enemyAttack
;
playerHp
-=
damageTaken
;
playerHp
-=
damageTaken
;
printf
(
enemyHitScenarios
[
rand
()
%
(
sizeof
(
enemyHitScenarios
)
/
sizeof
(
enemyHitScenarios
[
0
]))],
damageTaken
,
playerHp
);
printf
(
enemyHitScenarios
[
rand
()
%
(
sizeof
(
enemyHitScenarios
)
}
else
{
/
sizeof
(
enemyHitScenarios
[
0
]))],
damageTaken
,
playerHp
);
printf
(
evenScenarios
[
rand
()
%
(
sizeof
(
evenScenarios
)
/
sizeof
(
evenScenarios
[
0
]))]);
}
else
{
printf
(
evenScenarios
[
rand
()
%
(
sizeof
(
evenScenarios
)
/
sizeof
(
evenScenarios
[
0
]))]);
}
}
break
;
break
;
case
2
:
case
2
:
printf
(
"
\n
Sa põgenesid koopast.
\n
Väljun...
\n
"
);
playerHp
=
usePotion
(
p
,
initialHealth
,
playerHp
);
escaped
=
1
;
break
;
break
;
case
3
:
case
3
:
usePotion
(
p
,
initialHealth
,
playerHp
);
printf
(
"
\n
Sa põgenesid koopast.
\n
"
);
break
;
escaped
=
1
;
case
4
:
printf
(
"Sa lõpetasid enda käigu.
\n
"
);
break
;
break
;
default:
default:
printf
(
"Vale valik. Palun vali uuesti.
\n
"
);
printf
(
"Vale valik. Palun vali uuesti.
\n
"
);
}
}
if
(
playerHp
<=
0
)
{
if
(
playerHp
<=
0
)
{
printf
(
"Kahjuks, sa kaotasid.
\n
"
);
printf
(
"Kahjuks, sa kaotasid.
\n
"
);
return
0
;
// Mängija kaotas
return
0
;
// Mängija kaotas
}
else
if
(
enemyHp
<=
0
)
{
}
else
if
(
enemyHp
<=
0
)
{
printf
(
"Sinu võit!
\n\n
"
);
printf
(
"Sinu võit!
\n\n
"
);
}
}
}
}
return
escaped
?
0
:
1
;
// If player escaped, return
0, otherwise return 1
return
escaped
?
0
:
1
;
// If player escaped, return
1, otherwise return 0
}
}
int
bossFight
(
Player
*
p
,
Enemy
*
boss
)
{
int
bossFight
(
Player
*
p
,
FinalBoss
*
boss
)
{
int
playerHp
=
p
->
health
;
int
playerHp
=
p
->
health
;
int
bossHp
=
boss
->
health
;
int
bossHp
=
boss
->
health
;
int
playerAttack
,
bossAttack
;
int
playerAttack
,
bossAttack
;
...
@@ -171,48 +196,51 @@ int bossFight(Player *p, Enemy *boss) {
...
@@ -171,48 +196,51 @@ int bossFight(Player *p, Enemy *boss) {
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
);
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
)
{
while
(
playerHp
>
0
&&
bossHp
>
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. Kasuta võlujooki
\n
"
);
printf
(
"3. Kasuta võlujooki
\n
"
);
printf
(
"3. põgene
\n
"
);
printf
(
"4. Lõpeta enda käik
\n
"
);
printf
(
"Vali tegevus: "
);
printf
(
"Vali tegevus: "
);
int
choice
;
int
choice
;
scanf
(
"%d"
,
&
choice
);
scanf
(
"%d"
,
&
choice
);
switch
(
choice
)
{
switch
(
choice
)
{
case
1
:
case
1
:
playerAttack
=
rand
()
%
p
->
attack
+
1
;
// Random player attack
playerAttack
=
rand
()
%
p
->
attack
+
1
;
// Random player attack
bossAttack
=
rand
()
%
boss
->
attack
+
1
;
// Random boss attack
bossAttack
=
rand
()
%
boss
->
attack
+
1
;
// Random boss attack
if
(
playerAttack
>
bossAttack
)
{
if
(
playerAttack
>
bossAttack
)
{
int
damageDealt
=
playerAttack
;
int
damageDealt
=
playerAttack
;
bossHp
-=
damageDealt
;
bossHp
-=
damageDealt
;
printf
(
playerHitScenarios
[
rand
()
%
(
sizeof
(
playerHitScenarios
)
/
sizeof
(
playerHitScenarios
[
0
]))],
damageDealt
,
bossHp
);
printf
(
playerHitScenarios
[
rand
()
%
(
sizeof
(
playerHitScenarios
)
/
sizeof
(
playerHitScenarios
[
0
]))],
damageDealt
,
bossHp
);
}
else
if
(
bossAttack
>
playerAttack
)
{
}
else
if
(
bossAttack
>
playerAttack
)
{
int
damageTaken
=
bossAttack
;
int
damageTaken
=
bossAttack
;
playerHp
-=
damageTaken
;
playerHp
-=
damageTaken
;
printf
(
enemyHitScenarios
[
rand
()
%
(
sizeof
(
enemyHitScenarios
)
/
sizeof
(
enemyHitScenarios
[
0
]))],
damageTaken
,
playerHp
);
printf
(
enemyHitScenarios
[
rand
()
%
(
sizeof
(
enemyHitScenarios
)
/
sizeof
(
enemyHitScenarios
[
0
]))],
damageTaken
,
playerHp
);
}
else
{
}
else
{
printf
(
evenScenarios
[
rand
()
%
(
sizeof
(
evenScenarios
)
/
sizeof
(
evenScenarios
[
0
]))]);
printf
(
evenScenarios
[
rand
()
%
(
sizeof
(
evenScenarios
)
/
sizeof
(
evenScenarios
[
0
]))]);
}
}
break
;
break
;
case
2
:
case
2
:
printf
(
"
\n
Te põgenesite lahingust.
\n
"
);
playerHp
=
usePotion
(
p
,
initialHealth
,
playerHp
);
escaped
=
1
;
break
;
break
;
case
3
:
case
3
:
usePotion
(
p
,
initialHealth
,
playerHp
);
printf
(
"
\n
Sa põgenesid koopast.
\n
"
);
break
;
escaped
=
1
;
case
4
:
printf
(
"
\n
Te lõpetasite oma käigu.
\n
"
);
break
;
break
;
default:
default:
printf
(
"
\n
Vale valik. Palun valige
uuesti.
\n
"
);
printf
(
"
Vale valik. Palun vali
uuesti.
\n
"
);
}
}
if
(
bossHp
<
bosshp
/
2
&&
specialAttack
==
0
)
if
(
bossHp
<
=
BOSS_HEALTH
&&
specialAttack
==
0
)
{
{
printf
(
"
\n
Koopa pealik vihastab. Ta kogub ennast tummise rünnaku jaoks."
printf
(
"
\n
Koopa pealik vihastab. Ta kogub ennast tummise rünnaku jaoks."
"
\n
Sa märkasid rünnakut viimasel sekundil ning sul on kaks valikut.
\n
"
);
"
\n
Sa märkasid rünnakut viimasel sekundil ning sul on kaks valikut.
\n
"
);
...
@@ -233,57 +261,95 @@ int bossFight(Player *p, Enemy *boss) {
...
@@ -233,57 +261,95 @@ int bossFight(Player *p, Enemy *boss) {
{
{
printf
(
"Pealik napilt riivab oma mõõgaga su kätt ning sa ei saanud viga.
\n
"
printf
(
"Pealik napilt riivab oma mõõgaga su kätt ning sa ei saanud viga.
\n
"
"Su valik säästis sulle su elu.
\n
"
"Su valik säästis sulle su elu.
\n
"
"Sa kogud sekundiks hinge ning kaklus jätkub
\
\
n"
);
"Sa kogud sekundiks hinge ning kaklus jätkub
\n
"
);
}
}
else
if
((
choice
==
1
&&
correctChoice
==
2
)
||
(
choice
==
2
&&
correctChoice
==
1
))
else
if
((
choice
==
1
&&
correctChoice
==
2
)
||
(
choice
==
2
&&
correctChoice
==
1
))
{
{
printf
(
"Pealik lööb kogu oma jõu ja uhkusega sulle rangluu pihta.
\n
"
printf
(
"Pealik lööb kogu oma jõu ja uhkusega sulle rangluu pihta.
\n
"
"Sa karjud suurest valust.
\n
"
);
"Sa karjud suurest valust.
\n
"
);
playerHp
-=
SPECIAL_DAMAGE
;
playerHp
-=
SPECIAL_DAMAGE
;
printf
(
"Löök võttis sult %d elu (alles %d HP)"
,
SPECIAL_DAMAGE
,
playerHp
);
if
(
playerHp
<=
0
)
if
(
playerHp
<=
0
)
{
{
printf
(
"
\n
Su keha ei pidanud löögile vastu ning jooksid nii energiast kui ka verest tühjaks."
printf
(
"
\n
Su keha ei pidanud löögile vastu ning jooksid nii energiast kui ka verest tühjaks."
"
\n
Kahjuks, sa kaotasid.
\n
"
);
"
\n
Kahjuks, sa kaotasid.
\n
"
);
return
0
;
// Mängija kaotas
return
0
;
// Mängija kaotas
}
}
specialAttack
=
1
;
}
specialAttack
++
;
}
}
if
(
playerHp
<=
0
)
{
if
(
playerHp
<=
0
)
{
printf
(
"
\n
Kahjuks, sa kaotasid.
\n
"
);
printf
(
"
\n
Kahjuks, sa kaotasid.
\n
"
);
return
0
;
// Mängija kaotas
return
0
;
// Mängija kaotas
}
else
if
(
bossHp
<=
0
)
{
}
printf
(
"
\n
Te võitsite!
\n
"
);
else
if
(
bossHp
<=
0
)
return
1
;
// Mängija võitis
{
}
printf
(
"
\n\n
TEIE VÕIT!
\n
Kõ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:
\n
1. Varandus
\n
2. 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
"
"
\n
MÄ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
"
"
\n
MÄNG LÄBI
\n
"
);
return
0
;
}
}
}
}
return
escaped
?
0
:
1
;
// If player escaped, return 0, otherwise return 1
return
escaped
?
0
:
1
;
// If player escaped, return 0, otherwise return 1
}
}
void
usePotion
(
Player
*
p
,
int
initialHealth
,
int
currentHealth
)
int
usePotion
(
Player
*
p
,
int
initialHealth
,
int
currentHealth
)
{
{
if
(
p
->
potionCount
>
0
)
if
(
p
->
potionCount
>
0
)
{
{
int
restoredHealth
=
currentHealth
-
initialHealth
;
// Calculate restored health
int
healing
=
POTION
;
p
->
health
+=
25
;
// Increase current health by 25
currentHealth
+=
healing
;
// Increase current health by 25
// Ensure current health doesn't exceed initial health
// Ensure current health doesn't exceed initial health
if
(
p
->
health
>
initialHealth
)
if
(
currentHealth
>
initialHealth
)
p
->
health
=
initialHealth
;
{
healing
=
(
currentHealth
-
initialHealth
)
*
-
1
+
POTION
;
currentHealth
=
initialHealth
;
}
p
->
potionCount
--
;
// Decrease potion count
p
->
potionCount
--
;
// Decrease potion count
printf
(
"
\n
Kasutasid võlujooki. Sa said %d elu tagasi (%d-HP). Alles %d"
printf
(
"
\n
Kasutasid võlujooki. Sa said %d elu tagasi (%d-HP). Alles %d"
" võlujooki.
\n
"
,
restoredHealth
,
p
->
h
ealth
,
p
->
potionCount
);
" võlujooki.
\n
"
,
healing
,
currentH
ealth
,
p
->
potionCount
);
}
}
else
else
{
{
printf
(
"
\n
Sul ei ole võlujooki enam saadaval!
\n
"
);
printf
(
"
\n
Sul ei ole võlujooki enam saadaval!
\n
"
);
}
}
return
currentHealth
;
}
}
void
levelUp
(
Player
*
p
)
void
levelUp
(
Player
*
p
)
{
{
p
->
health
+=
20
;
// Lisame mängijale 20 HP-d
p
->
health
+=
LEVEL_UP_HP
;
// Lisame mängijale 20 HP-d
p
->
attack
+=
5
;
// Lisame mängijale 5 rünnakuvõimet
p
->
attack
+=
LEVEL_UP_ATTACK
;
// 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"
printf
(
"Mängija taseme tõus! Sa said 20 lisa HP-d ja 5 lisa rünnakuvõimet"
"!
\n
"
);
"!
\n
"
);
printf
(
"Mängija andmed: HP - %d, rünnakuvõime - %d
\n\n
"
,
p
->
health
,
printf
(
"Mängija andmed: HP - %d, rünnakuvõime - %d
\n\n
"
,
p
->
health
,
...
@@ -301,23 +367,23 @@ Enemy CreateEnemy(int defeated_enemies)
...
@@ -301,23 +367,23 @@ Enemy CreateEnemy(int defeated_enemies)
{
{
case
0
:
case
0
:
strcpy
(
enemy
.
type
,
"Päkapikk"
);
// Päkapikk
strcpy
(
enemy
.
type
,
"Päkapikk"
);
// Päkapikk
enemy
.
attack
=
10
;
enemy
.
attack
=
ELF_BASE_DAMAGE
;
break
;
break
;
case
1
:
case
1
:
strcpy
(
enemy
.
type
,
"Ork"
);
// Ork
strcpy
(
enemy
.
type
,
"Ork"
);
// Ork
enemy
.
attack
=
15
;
enemy
.
attack
=
ORK_BASE_DAMAGE
;
break
;
break
;
case
2
:
case
2
:
strcpy
(
enemy
.
type
,
"Smurf"
);
// Smurf
strcpy
(
enemy
.
type
,
"Smurf"
);
// Smurf
enemy
.
attack
=
20
;
enemy
.
attack
=
SMURF_BASE_DAMAGE
;
break
;
break
;
case
3
:
case
3
:
strcpy
(
enemy
.
type
,
"Deemon"
);
// Deemon
strcpy
(
enemy
.
type
,
"Deemon"
);
// Deemon
enemy
.
attack
=
25
;
enemy
.
attack
=
DEEMON_BASE_DAMAGE
;
break
;
break
;
default:
default:
strcpy
(
enemy
.
type
,
"Bandiit"
);
// Bandiit
strcpy
(
enemy
.
type
,
"Bandiit"
);
// Bandiit
enemy
.
attack
=
30
;
enemy
.
attack
=
BANDIIT_BASE_DAMAGE
;
}
}
return
enemy
;
return
enemy
;
...
@@ -328,8 +394,8 @@ FinalBoss CreateFinalBoss(int defeated_enemies)
...
@@ -328,8 +394,8 @@ FinalBoss CreateFinalBoss(int defeated_enemies)
FinalBoss
boss
;
FinalBoss
boss
;
// Adjust boss stats based on the number of defeated enemies
// Adjust boss stats based on the number of defeated enemies
// You can customize the boss's stats and type based on the game's design
// You can customize the boss's stats and type based on the game's design
boss
.
health
=
100
+
defeated_enemies
*
20
;
boss
.
health
=
BOSS_HEALTH
+
defeated_enemies
*
20
;
boss
.
attack
=
20
+
defeated_enemies
*
5
;
boss
.
attack
=
BOSS_DAMAGE
+
defeated_enemies
*
5
;
strcpy
(
boss
.
type
,
"Final Boss"
);
strcpy
(
boss
.
type
,
"Final Boss"
);
return
boss
;
return
boss
;
}
}
...
@@ -357,3 +423,46 @@ void DisplayGameRules(void)
...
@@ -357,3 +423,46 @@ void DisplayGameRules(void)
"3. Kasuta võlujooki - sellega saad endale võitluse ajal"
"3. Kasuta võlujooki - sellega saad endale võitluse ajal"
" taastada 25 elu.
\n
"
);
" 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
(
"
\n
Palun 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
);
}
}
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