Skip to content

Commit e7e3372

Browse files
added a logger class with singlethon and made some other changes
1 parent 846459c commit e7e3372

File tree

6 files changed

+216
-136
lines changed

6 files changed

+216
-136
lines changed

.phpunit.result.cache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
C:30:"PHPUnit\Runner\TestResultCache":570:{a:2:{s:7:"defects";a:6:{s:7:"Warning";i:6;s:17:"HeroTest::testOne";i:3;s:18:"HeroTest::testHero";i:4;s:31:"GameTest::testFirstTurnFunction";i:5;s:28:"GameTest::testSkillsFunction";i:3;s:26:"GameTest::testLogsMessages";i:3;}s:5:"times";a:9:{s:7:"Warning";d:0.008;s:17:"HeroTest::testOne";d:0.008;s:18:"HeroTest::testHero";d:0.001;s:24:"HeroTest::testHeroUpdate";d:0;s:31:"GameTest::testFirstTurnFunction";d:0.03;s:28:"GameTest::testSkillsFunction";d:0.01;s:26:"GameTest::testLogsMessages";d:0.028;s:21:"MonsterTest::testHero";d:0;s:27:"MonsterTest::testHeroUpdate";d:0;}}}
1+
C:30:"PHPUnit\Runner\TestResultCache":567:{a:2:{s:7:"defects";a:6:{s:7:"Warning";i:6;s:17:"HeroTest::testOne";i:3;s:18:"HeroTest::testHero";i:4;s:31:"GameTest::testFirstTurnFunction";i:5;s:28:"GameTest::testSkillsFunction";i:3;s:26:"GameTest::testLogsMessages";i:3;}s:5:"times";a:9:{s:7:"Warning";d:0.008;s:17:"HeroTest::testOne";d:0.008;s:18:"HeroTest::testHero";d:0;s:24:"HeroTest::testHeroUpdate";d:0;s:31:"GameTest::testFirstTurnFunction";d:0.015;s:28:"GameTest::testSkillsFunction";d:0.02;s:26:"GameTest::testLogsMessages";d:0.009;s:21:"MonsterTest::testHero";d:0;s:27:"MonsterTest::testHeroUpdate";d:0;}}}

gameEngineClass.php

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ function monster(){
2222
return $buildMonster->buildMonster($monsterEncounter[0]['id']);
2323
}
2424

25-
function figth($hero, $monster, $turn, $log = '', $turnCounter = 1){
25+
function figth($hero, $monster, $turn, $turnCounter = 1, $log_pass = ''){
2626
$attacker = null;
2727
$defender = null;
2828
$stop_battle = false;
@@ -34,10 +34,10 @@ function figth($hero, $monster, $turn, $log = '', $turnCounter = 1){
3434
$turn = $this->determinFirstTurnToAttack($hero, $monster, $turn);
3535
} elseif ($turn['turn'] === 'hero') {
3636
$turn['turn'] = 'monster';
37-
$turn['id'] = $monster->id;
37+
$turn['id'] = $monster->getId();
3838
} else {
3939
$turn['turn'] = 'hero';
40-
$turn['id'] = $hero->id;
40+
$turn['id'] = $hero->getId();
4141
}
4242

4343
if($turn['turn'] === 'hero'){
@@ -49,62 +49,62 @@ function figth($hero, $monster, $turn, $log = '', $turnCounter = 1){
4949
}
5050

5151
// set damage
52-
$damage = $attacker->strength - $defender->defence; // Damage = Attacker strength – Defender defence
52+
$damage = $attacker->getStrength() - $defender->getDefence(); // Damage = Attacker strength – Defender defence
5353

5454

5555
// skils encounter
5656
$skill = $this->skills();
57-
if($skill !== null && $skill['skill_type'] === 'attack' && $attacker->name === "Orderus"){
57+
if($skill !== null && $skill['skill_type'] === 'attack' && $attacker->getName() === "Orderus"){
5858
$oldDamage = $damage;
5959
$damage = $skill['number_strikes'] * $damage; // 2 strikes results double the damage
6060
$skill_name = "Orderus activated attack skill '" . $skill['name'] . "' damage increace from ".$oldDamage." To " . $damage ." -> ";
6161
}
6262

63-
if($skill !== null && $skill['skill_type'] === 'defence' && $defender->name === "Orderus"){
63+
if($skill !== null && $skill['skill_type'] === 'defence' && $defender->getName() === "Orderus"){
6464
$oldDamage = $damage;
6565
$damage = ($skill['number_strikes'] / 100) * $damage; // 50 percent of damage/ half of the damage, defence skill
6666
$skill_name = "Orderus activated defence skill '" . $skill['name'] . "' damage reduce from ".$oldDamage." To " . $damage ." -> ";
6767
}
6868

69-
if(rand(0, 100) < $defender->luck ){ // the defender gets lucky that turn.
69+
if(rand(0, 100) < $defender->getLuck() ){ // the defender gets lucky that turn.
7070
$damage = 0;
7171
$lucky_damage_pass = ' Luck change to get 0 damage occured. ';
7272
}
7373

74-
$defender->setHealth($defender->health - $damage); // The damage is subtracted from the defender’s health.
74+
$defender->setHealth($defender->getHealth() - $damage); // The damage is subtracted from the defender’s health.
7575

76-
if($defender->health <= 0) { // stop battle if defender health reaches 0
77-
$defender->health = 0;
76+
if($defender->getHealth() <= 0) { // stop battle if defender health reaches 0
77+
$defender->setHealth(0);
7878
$stop_battle = true;
79-
$log .= 'Attack from ' . $attacker->name . ". " .$skill_name . $lucky_damage_pass . " Damage inflicted ".$damage." to ".$defender->name . " health remaning is ".$defender->health." </br>";
80-
$log .= 'Battle finished, winner is ' . $attacker->name . ' !!!</br>';
79+
$log_pass->Log('Attack from ' . $attacker->getName() . ". " .$skill_name . $lucky_damage_pass . " Damage inflicted ".$damage." to ".$defender->getName() . " health remaning is ".$defender->getHealth()." </br>");
80+
$log_pass->Log('Battle finished, winner is ' . $attacker->getName() . ' !!!</br>');
8181
} else {
82-
$log .= 'Attack from ' . $attacker->name . ". " .$skill_name . $lucky_damage_pass . " Damage inflicted ".$damage." to ".$defender->name . " health remaning is ".$defender->health." </br>"; // log battle damage and the defender helth
82+
$log_pass->Log('Attack from ' . $attacker->getName() . ". " .$skill_name . $lucky_damage_pass . " Damage inflicted ".$damage." to ".$defender->getName() . " health remaning is ".$defender->getHealth()." </br>"); // log battle damage and the defender helth
8383
}
8484

8585
if($turnCounter === 20) { // turns reached 20 game over
8686
$stop_battle = true;
87-
$winner = ($hero->health > $monster->health) ? $hero->name : $monster->name;
88-
$log .= "Max number of turns 20 has been reached , winner is " . $winner . "</br>";
87+
$winner = ($hero->getHealth() > $monster->getHealth()) ? $hero->getName() : $monster->getName();
88+
$log_pass->Log("Max number of turns 20 has been reached , winner is " . $winner . "</br>");
8989
}
9090

9191
$turnCounter++;
9292

93-
return [$hero, $monster, $turn, $stop_battle, $log, $turnCounter];
93+
return [$hero, $monster, $turn, $stop_battle, $turnCounter, $log_pass];
9494
}
9595

9696
function determinFirstTurnToAttack($hero, $monster, $turn){ // The first attack
97-
if ($monster->speed > $hero->speed) {
98-
$turn = ['turn' => 'monster', 'id' => $monster->id];
99-
} elseif ($monster->speed < $hero->speed) {
100-
$turn = ['turn' => 'hero', 'id' => $hero->id];
101-
} elseif ($monster->speed === $hero->speed) {
102-
if ($monster->luck > $hero->luck) {
103-
$turn = ['turn' => 'monster', 'id' => $monster->id];
104-
} elseif ($monster->luck < $hero->luck) {
105-
$turn = ['turn' => 'hero', 'id' =>$hero->id];
106-
} elseif ($monster->luck === $hero->luck) {
107-
$turn = ['turn' => 'hero', 'id' => $hero->id];
97+
if ($monster->getSpeed() > $hero->getSpeed()) {
98+
$turn = ['turn' => 'monster', 'id' => $monster->getId()];
99+
} elseif ($monster->getSpeed() < $hero->getSpeed()) {
100+
$turn = ['turn' => 'hero', 'id' => $hero->getId()];
101+
} elseif ($monster->getSpeed() === $hero->getSpeed()) {
102+
if ($monster->getLuck() > $hero->getLuck()) {
103+
$turn = ['turn' => 'monster', 'id' => $monster->getId()];
104+
} elseif ($monster->getLuck() < $hero->getLuck()) {
105+
$turn = ['turn' => 'hero', 'id' =>$hero->getId()];
106+
} elseif ($monster->getLuck() === $hero->getLuck()) {
107+
$turn = ['turn' => 'hero', 'id' => $hero->getId()];
108108
}
109109
}
110110
return $turn;

hero.php

Lines changed: 87 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,74 @@
11
<?php
22
class Hero
33
{
4-
public $id;
5-
public $level;
6-
public $experience;
7-
public $name;
8-
public $health;
9-
public $strength;
10-
public $defence;
11-
public $speed;
12-
public $luck;
13-
public $stats;
14-
15-
function __construct($id, $level, $experience, $name, $health, $strength, $defence, $speed, $luck) {
4+
private $id;
5+
private $level;
6+
private $experience;
7+
private $name;
8+
private $health;
9+
private $strength;
10+
private $defence;
11+
private $speed;
12+
private $luck;
13+
private $stats;
14+
15+
// function __construct($id, $level, $experience, $name, $health, $strength, $defence, $speed, $luck) {
16+
// $this->id = $id;
17+
// $this->level = $level;
18+
// $this->experience = $experience;
19+
// $this->name = $name;
20+
// $this->health = $health;
21+
// $this->strength = $strength;
22+
// $this->defence = $defence;
23+
// $this->speed = $speed;
24+
// $this->luck = $luck;
25+
// }
26+
27+
function getId(){
28+
return $this->id;
29+
}
30+
31+
function getLevel(){
32+
return $this->level;
33+
}
34+
35+
36+
function getExperience(){
37+
return $this->experience;
38+
}
39+
40+
41+
function getName(){
42+
return $this->name;
43+
}
44+
45+
46+
function getHealth(){
47+
return $this->health;
48+
}
49+
50+
function getStrength(){
51+
return $this->strength;
52+
}
53+
54+
function getDefence(){
55+
return $this->defence;
56+
}
57+
58+
function getSpeed(){
59+
return $this->speed;
60+
}
61+
62+
public function getLuck(){
63+
return $this->luck;
64+
}
65+
66+
public function getStats(){
67+
return $this->stats;
68+
}
69+
70+
function setId($id){
1671
$this->id = $id;
17-
$this->level = $level;
18-
$this->experience = $experience;
19-
$this->name = $name;
20-
$this->health = $health;
21-
$this->strength = $strength;
22-
$this->defence = $defence;
23-
$this->speed = $speed;
24-
$this->luck = $luck;
2572
}
2673

2774
function setLevel($level){
@@ -52,64 +99,39 @@ function setSpeed($speed){
5299
$this->speed = $speed;
53100
}
54101

55-
function setLuck($luck){
102+
public function setLuck($luck){
56103
$this->luck = $luck;
57104
}
58105

59-
function getLevel(){
60-
$this->level;
61-
}
62-
63-
64-
function getExperience(){
65-
$this->experience;
66-
}
67-
68-
69-
function getName(){
70-
$this->name;
71-
}
72-
106+
public function setStats($stats){
107+
$this->stats = $stats;
108+
}
73109

74-
function getHealth(){
75-
$this->health;
76-
}
77-
78-
function getStrength(){
79-
$this->strength;
80-
}
81-
82-
function getDefence(){
83-
$this->defence;
84-
}
85-
86-
function getSpeed(){
87-
$this->speed;
88-
}
89-
90-
function getLuck(){
91-
$this->luck;
92-
}
93110

94-
function setStats($stats){
95-
$this->stats = $stats;
96-
}
97111

98112
}
99113

100-
class buildHeroClass {
114+
class buildHeroClass extends Hero {
101115

102116
public function buildHero(){
103117
$db = new DataBase;
104118
$heroDB = $db->runQuery('SELECT * FROM hero where id=1');
105119
$statsHero = $db->runQuery('SELECT * FROM `attributes_max_min` WHERE subject_type="hero" and subject_id='.$heroDB[0]['id']);
106-
$stats = $this->getStats($statsHero);
107-
$hero = new Hero($heroDB[0]['id'], $heroDB[0]['level'], $heroDB[0]['experience'], $heroDB[0]['name'], $stats['health'], $stats['strength'], $stats['defence'], $stats['speed'], $stats['luck']);
108-
$hero->setStats($statsHero);
109-
return $hero;
110-
}
111-
112-
public function getStats($statsHero){
120+
$stats = $this->getDBStats($statsHero);
121+
$this->setId($heroDB[0]['id']);
122+
$this->setLevel($heroDB[0]['level']);
123+
$this->setExperience($heroDB[0]['experience']);
124+
$this->setName($heroDB[0]['name']);
125+
$this->setHealth($stats['health']);
126+
$this->setStrength($stats['strength']);
127+
$this->setDefence($stats['defence']);
128+
$this->setSpeed($stats['speed']);
129+
$this->setLuck($stats['luck']);
130+
$this->setStats($statsHero);
131+
return $this;
132+
}
133+
134+
public function getDBStats($statsHero){
113135
$stats = [
114136
'health' => 0,
115137
'strength' => 0,

index.php

Lines changed: 25 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
<LINK REL=StyleSheet HREF="custom.css" TITLE="Contemporary">
22
<?php
3-
4-
53
include 'database.php';
64
include 'hero.php';
75
include 'monster.php';
86
include 'gameEngineClass.php';
7+
include 'logger.php';
98
session_start();
9+
// session_destroy();
1010
?>
1111
<form method="POST" style="float: left">
1212
<input type="submit" name="next_attack" value="Next turn (apasa aici/click here).">
@@ -33,16 +33,19 @@
3333
}
3434

3535
if(!isset($_SESSION['battle_logs'])){
36-
$_SESSION['battle_logs'] = "";
36+
$_SESSION['battle_logs'] = Logger::getInstance();
3737
}
3838

39-
$results = $game->figth($_SESSION['hero'], $_SESSION['monster'], $_SESSION['turn'], $_SESSION['battle_logs'], $_SESSION['turnCounter']);
4039

40+
$results = $game->figth($_SESSION['hero'], $_SESSION['monster'], $_SESSION['turn'], $_SESSION['turnCounter'], $_SESSION['battle_logs']);
41+
42+
43+
// [$hero, $monster, $turn, $stop_battle, $turnCounter, $log_pass];
4144
$_SESSION['hero'] = $results[0];
4245
$_SESSION['monster'] = $results[1];
4346
$_SESSION['turn'] = $results[2];
44-
$_SESSION['battle_logs'] = $results[4];
45-
$_SESSION['turnCounter'] = $results[5];
47+
$_SESSION['turnCounter'] = $results[4];
48+
$_SESSION['battle_logs'] = $results[5];
4649
?>
4750
<div style="clear:both"></div>
4851
<?php echo "Turns made: ". $_SESSION['turnCounter'] . " max is 20. </br>"; ?>
@@ -51,24 +54,24 @@
5154
<?php
5255

5356
// echo 'Hero: '.$_SESSION['hero']->id.' </br>';
54-
echo 'Hero: '.$_SESSION['hero']->name.'</br>';
55-
echo 'Health: '.$_SESSION['hero']->stats[0]['max'].' - '.$_SESSION['hero']->stats[0]['min'].' "from interval value set" '.$_SESSION['hero']->health. '</br>';
56-
echo 'Strength: '.$_SESSION['hero']->stats[1]['max'].' - '.$_SESSION['hero']->stats[1]['min'].' "from interval value set" '.$_SESSION['hero']->strength. '</br>';
57-
echo 'Defence: '.$_SESSION['hero']->stats[2]['max'].' - '.$_SESSION['hero']->stats[2]['min'].' "from interval value set" '.$_SESSION['hero']->defence. '</br>';
58-
echo 'Speed: '.$_SESSION['hero']->stats[3]['max'].' - '.$_SESSION['hero']->stats[3]['min'].' "from interval value set" '.$_SESSION['hero']->speed. '</br>';
59-
echo 'Luck: '.$_SESSION['hero']->stats[4]['max'].' - '.$_SESSION['hero']->stats[4]['min'].' "from interval value set" '.$_SESSION['hero']->luck. '</br>';
60-
// var_dump($_SESSION['hero']);
57+
echo 'Hero: '.$_SESSION['hero']->getName().'</br>';
58+
echo 'Health: '.$_SESSION['hero']->getStats()[0]['max'].' - '.$_SESSION['hero']->getStats()[0]['min'].' "from interval value set" '.$_SESSION['hero']->getHealth(). '</br>';
59+
echo 'Strength: '.$_SESSION['hero']->getStats()[1]['max'].' - '.$_SESSION['hero']->getStats()[1]['min'].' "from interval value set" '.$_SESSION['hero']->getStrength(). '</br>';
60+
echo 'Defence: '.$_SESSION['hero']->getStats()[2]['max'].' - '.$_SESSION['hero']->getStats()[2]['min'].' "from interval value set" '.$_SESSION['hero']->getDefence(). '</br>';
61+
echo 'Speed: '.$_SESSION['hero']->getStats()[3]['max'].' - '.$_SESSION['hero']->getStats()[3]['min'].' "from interval value set" '.$_SESSION['hero']->getSpeed(). '</br>';
62+
echo 'Luck: '.$_SESSION['hero']->getStats()[4]['max'].' - '.$_SESSION['hero']->getStats()[4]['min'].' "from interval value set" '.$_SESSION['hero']->getLuck(). '</br>';
63+
// var_dump($_SESSION['hero']->getStats());
6164
?>
6265
</div>
6366
<div id='second'>
6467
<?php
6568
// echo 'Hero: '.$_SESSION['hero']->id.' </br>';
66-
echo 'Monster: '.$_SESSION['monster']->name.'</br>';
67-
echo 'Health: '.$_SESSION['monster']->stats[0]['max'].' - '.$_SESSION['monster']->stats[0]['min'].' "from interval value set" '.$_SESSION['monster']->health. '</br>';
68-
echo 'Strength: '.$_SESSION['monster']->stats[1]['max'].' - '.$_SESSION['monster']->stats[1]['min'].' "from interval value set" '.$_SESSION['monster']->strength. '</br>';
69-
echo 'Defence: '.$_SESSION['monster']->stats[2]['max'].' - '.$_SESSION['monster']->stats[2]['min'].' "from interval value set" '.$_SESSION['monster']->defence. '</br>';
70-
echo 'Speed: '.$_SESSION['monster']->stats[3]['max'].' - '.$_SESSION['monster']->stats[3]['min'].' "from interval value set" '.$_SESSION['monster']->speed. '</br>';
71-
echo 'Luck: '.$_SESSION['monster']->stats[4]['max'].' - '.$_SESSION['monster']->stats[4]['min'].' "from interval value set" '.$_SESSION['monster']->luck. '</br>';
69+
echo 'Monster: '.$_SESSION['monster']->getName().'</br>';
70+
echo 'Health: '.$_SESSION['monster']->getStats()[0]['max'].' - '.$_SESSION['monster']->getStats()[0]['min'].' "from interval value set" '.$_SESSION['monster']->getHealth(). '</br>';
71+
echo 'Strength: '.$_SESSION['monster']->getStats()[1]['max'].' - '.$_SESSION['monster']->getStats()[1]['min'].' "from interval value set" '.$_SESSION['monster']->getStrength(). '</br>';
72+
echo 'Defence: '.$_SESSION['monster']->getStats()[2]['max'].' - '.$_SESSION['monster']->getStats()[2]['min'].' "from interval value set" '.$_SESSION['monster']->getDefence(). '</br>';
73+
echo 'Speed: '.$_SESSION['monster']->getStats()[3]['max'].' - '.$_SESSION['monster']->getStats()[3]['min'].' "from interval value set" '.$_SESSION['monster']->getSpeed(). '</br>';
74+
echo 'Luck: '.$_SESSION['monster']->getStats()[4]['max'].' - '.$_SESSION['monster']->getStats()[4]['min'].' "from interval value set" '.$_SESSION['monster']->getLuck(). '</br>';
7275
// var_dump('Monster ', $_SESSION['monster']);
7376
?>
7477
</div>
@@ -77,10 +80,12 @@
7780
Click this button "Next Turn" !!!!.
7881
<h2>Battle logs:</h2>
7982
<?php
80-
echo $_SESSION['battle_logs'];
83+
// echo $_SESSION['battle_logs'];
84+
echo $_SESSION['battle_logs']->getLog();
8185

8286
if(isset($results) && $results[3] === true){
8387
session_destroy();
8488
}
89+
8590
?>
8691

0 commit comments

Comments
 (0)