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
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
264 additions
and
134 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
while
(
player_hp
>
0
&&
enemy_hp
>
0
)
{
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
(
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. 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
int
choice
;
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
);
scanf
(
"%d"
,
&
choice
);
while
(
playerHp
>
0
&&
bossHp
>
0
&&
!
escaped
)
{
switch
(
choice
)
{
printf
(
"
\n
Valikud:
\n
"
);
case
1
:
printf
(
"1. Ründa
\n
"
);
printf
(
"Liigud vasakule järgmisesse sügavusse.
\n
"
);
printf
(
"2. Põgene
\n
"
);
break
;
printf
(
"3. Kasuta võlujooki
\n
"
);
case
2
:
printf
(
"4. Lõpeta enda käik
\n
"
);
printf
(
"Liigud paremale järgmisesse sügavusse.
\n
"
);
printf
(
"Vali tegevus: "
);
break
;
default:
int
choice
;
printf
(
"Vale valik. Liigud otse järgmisesse sügavusse.
\n
"
);
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
:
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
;
default:
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
}
}
}
return
escaped
?
0
:
1
;
// If player escaped, return 0, otherwise return 1
}
}
// Funktsioon, mis suurendab mängija elusid ja rünnaku tugevust peale võitlust
void
usePotion
(
Player
*
p
,
int
initialHealth
,
int
currentHealth
)
void
level_up
(
struct
Player
*
player
)
{
{
player
->
hp
+=
20
;
// Lisame mängijale 20 HP-d
if
(
p
->
potionCount
>
0
)
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
"
);
int
restoredHealth
=
currentHealth
-
initialHealth
;
// Calculate restored health
p
->
health
+=
25
;
// Increase current health by 25
// Ensure current health doesn't exceed initial health
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 mängija võlujoogi kasutamiseks
void
levelUp
(
Player
*
p
)
void
use_potion
(
struct
Player
*
player
)
{
{
if
(
player
->
potion_count
>
0
)
{
p
->
health
+=
20
;
// Lisame mängijale 20 HP-d
player
->
hp
+=
25
;
// Lisame mängijale 25 HP-d
p
->
attack
+=
5
;
// Lisame mängijale 5 rünnakuvõimet
player
->
potion_count
--
;
// Vähendame mängija võlujookide arvu
printf
(
"Mängija taseme tõus! Sa said 20 lisa HP-d ja 5 lisa rünnakuvõimet"
printf
(
"Kasutasid võlujooki. Sa said 25 elu tagasi.
\n
"
);
"!
\n
"
);
}
else
{
printf
(
"Mängija andmed: HP - %d, rünnakuvõime - %d
\n\n
"
,
p
->
health
,
printf
(
"Sul pole ühtegi jooki!
\n
"
);
p
->
attack
);
}
}
}
// Funktsioon, mis genereerib vastase vastavalt alistatud vastaste arvule
Enemy
CreateEnemy
(
int
defeated_enemies
)
struct
Enemy
generate_enemy
(
int
defeated_enemies
)
{
{
struct
Enemy
enemy
;
Enemy
enemy
;
// Genereeri vaenlase elude arv, kasutades alistatud vastaste arvu
// suurendab vaenlase elude arvu, kasutades alistatud vastaste arvu
enemy
.
health
=
50
+
defeated_enemies
*
10
;
// Näiteks 50 + (10 * alistatud vastaste arv)
enemy
.
hp
=
50
+
defeated_enemies
*
10
;
// Näiteks 50 + (10 * alistatud vastaste arv)
// Määra vaenlase rünnaku tugevus vastavalt tüübile
//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
);
void
PrintWelcomeMessage
(
void
)
int
result
=
fight
(
&
player
,
&
enemy
);
{
if
(
result
==
1
)
{
printf
(
" __ __ _
\n
"
);
defeated_enemies
++
;
printf
(
"
\\
\\
/ /__| | ___ ___ _ __ ___ ___
\n
"
);
level_up
(
&
player
);
printf
(
"
\\
\\
/
\\
/ / _
\\
|/ __/ _
\\
| '_ ` _
\\
/ _
\\
\n
"
);
move_next_room
();
printf
(
"
\\
V V / __/ | (_| (_) | | | | | | __/
\n
"
);
}
else
{
printf
(
"
\\
_/
\\
_/
\\
___|_|
\\
___
\\
___/|_| |_| |_|
\\
___|
\n
"
);
break
;
}
}
}
void
DisplayGameRules
(
void
)
{
printf
(
"Mäng läbi! alistasid %d vaenlast.
\n
"
,
defeated_enemies
);
printf
(
"
\n
Tere mängija! Olete sisenenud koopasse, milles peitub"
" suur varandus. Varandust kaitsevad aga mitmed koletised, kes"
return
0
;
" takistavad teid selle saamisest!
\n
"
}
"Alista kõik koletised ning omasta võidukalt varandus!
\n\n
"
\ No newline at end of file
"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