Versio

Rekenen

Overzicht Reageren

Thomas

thomas

26/01/2010 06:23:00
Quote Anchor link
Goedendag ik heb een vraag?
Ik ben bezig met een attack script en nee niet voor criminals.

Er moet rekening worden gehouden met de volgende variabelen.
$p = player $m= monster

$p_health = 1200
$m_health = 300

$p_attack = 225
$m_attack = 85

$p_defence = 200
$m_defence = 80

$p_critical = 2%
$m_critical = 1%

$p_blockrate = 8%
$m_blockrate = 3%

Nu wil ik dit in een while loopje verwerken.
Bijvoorbeel dat als monster health=0 dan player won
anders om is you lose

Ik weet alleen niet waar te beginnen wie kan mij een setje in de goede
richting geven. jullie hoeven niet alles voor te kauwen wil natuurlijk wel
leren.
Alvast bedankt
 
PHP hulp

PHP hulp

25/05/2012 14:31:36
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
Ivo K

Ivo K

26/01/2010 07:40:00
Quote Anchor link
Het lijkt mij een stuk handiger als je objecten maakt. Bijvoorbeeld het object player met de functies attack, defend, run etc...
 
Johan Dam

Johan Dam

26/01/2010 08:51:00
Quote Anchor link
zoals ivo zegt, leer OOP, ik heb 2x een online vecht-systeem gemaakt, 1x 'gewoon' zonder objecten, en de 2e OOP,

echt het scheelt je een wereld van troubleshooten,
 
TJVB tvb

TJVB tvb

26/01/2010 13:42:00
Quote Anchor link
Zijn ze verder geheel hetzelfde?

Dan bijvoorbeeld (niet getest en heel basis)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<?php
class Fighter{
  private $health;
  private $attack;
  private $defence;
  private $critical;
  private $blockrate;

  private $name;

  public __construct($health,$attack,$defence,$critical,$blockrate,$name)
    $this->health = $health;
    $this->attack = $attack;
    $this->defence = $defence;
    $this->critical = $critical;
    $this->blockrate = $blockrate;
    $this->name = $name;
  }


  public function attack()
  {

    $damage = $this->attack;
    if(rand(0,100)<= $$this->critical)
    {

      //doe wat met je critical, heb maar een voorbeeldje genomen
      $damage+=$damage; //verdubbelen
    }
    return $damage;
  }


  public function defence($damage)
  {

    if(rand(0,100) > $this->blockrate)
      $this->health -= $damage;
      if($this->health <0 )
      {

        $this->health = 0;
      }
    }
  }

  
  public function getHealth()
  {

    return $this->health;
  }

  
  public function getName()
  {

    return $this->name;
  }
}


class Arena
{
  private $player;
  private $monster;
  
  public __construct($player,$monster)
  {

    $this->player = $player;
    $this->monster = $monster;
  }


  public function round()
  {

    $this->monster->defence($this->player($attack));
    if($this->monster->getHealth() > 0)
    {

      $this->monster->defence($this->player($attack));
    }
  }


  public function fight()
  {

    $winner;
    while($this->player->getHealth() > 0 && $this->monster->getHealth() > 0)
    {

      $this->round();
    }

    if($this->player->getHealth() > 0)
    {

      $winner = $this->player;
    }

    else
    {
      $winner = $this->monster;
    }

    return $winner;
  }
}


//voorbeeld gevecht
$player = new Fighter(1200,225,200,2,8);
$monster= new Fighter(300,85,80,1,3);

$arena = new Arena($player,$monster);
$winner = $arena->fight();
echo 'The winner is '.$winner->getName();
?>
 
Johan Dam

Johan Dam

27/01/2010 09:00:00
Quote Anchor link
nee, zaten nogal wat verschillen in de 2 die k maakte, werkte wel op hetzelfde princype,

leuk voorbeeld btw, :)
 



Overzicht Reageren

Get Adobe Flash player