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
88f44526
authored
May 01, 2024
by
grlabu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Delete gameBase.c
parent
4127c9ea
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
0 additions
and
467 deletions
Source/gameBase.c
Source/gameBase.c
deleted
100644 → 0
View file @
4127c9ea
#include "Header.h"
const
char
*
playerHitScenarios
[]
=
{
"
\n
Sa tegid kiire rünnaku vastasele. Ta võttis %d kahju (Alles %dHP).
\n
"
,
"
\n
Vastane kaotas tasakaalust, kui ründasid teda. Ta kaotas %d elu"
"(Alles %dHP).
\n
"
,
"
\n
Sa tegid ründes viimase otsustava löögi vastasele. Ta võttis %d kahju"
"(Alles %dHP).
\n
"
};
const
char
*
enemyHitScenarios
[]
=
{
"
\n
Vastane eiras sinu rünnakut ja vastas oma rünnakuga. Sa kaotasid %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
[]
=
{
"
\n
Mängija ja vastane võitlevad väsimatult. Kumbki ei taha alla anda!
\n
"
,
"
\n
Tõeline võitlus jätkub! Kumbki vastane ei anna alla!
\n
"
,
"
\n
Võ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
(
"
\n
Sa 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
\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
;
}
if
((
choice
==
1
&&
correctChoice
==
1
)
||
(
choice
==
2
&&
correctChoice
==
2
))
{
printf
(
"
\n
Sinu 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
(
"
\n
Tunned, 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
(
"
\n
Valikud:
\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
(
"
\n
Sa 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
(
"
\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. 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
(
"
\n
Sa põgenesid koopast.
\n
"
);
escaped
=
1
;
break
;
default:
printf
(
"Vale valik. Palun vali uuesti.
\n
"
);
}
if
(
bossHp
<=
BOSS_HEALTH
&&
specialAttack
==
0
)
{
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
"
);
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
(
"
\n
Su keha ei pidanud löögile vastu ning jooksid nii energiast kui ka verest tühjaks."
"
\n
Kahjuks, sa kaotasid.
\n
"
);
return
0
;
// Player lost
}
}
specialAttack
++
;
}
if
(
playerHp
<=
0
)
{
printf
(
"
\n
Kahjuks, sa kaotasid.
\n
"
);
return
0
;
// Player lost
}
else
if
(
bossHp
<=
0
)
{
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
}
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
(
"
\n
Kasutasid võlujooki. Sa said %d elu tagasi (%d-HP). Alles %d"
" võlujooki.
\n
"
,
healing
,
currentHealth
,
p
->
potionCount
);
}
else
{
printf
(
"
\n
Sul 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
(
"
\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
"
);
}
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