Vraag betreft een script en de toekomst

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Peter  Flos

Peter Flos

20/11/2014 16:27:29
Quote Anchor link
Even een korte uitleg:
- Spelers krijgen meldingen van de Lifeguards, KNRM of Ambulance
- Spelers kunnen voertuigen naar de meldingen sturen
- Per melding zijn er varianten. Bij de ene is het bijvoorbeeld enkel nodig om te helpen, de ander moet ook vervoert worden
- Niet elk voertuig kan vervoeren, niet elk voertuig kan helpen

Goed, ik heb dus een tabel "voertuigen". Hierin staan de voertuigen van de spelers. Laten we een makkelijk voorbeeld geven:

- Voertuig AMBUMOTO (Ambulance Motor)
- Voertuig AMBUBUS (Ambulance Bus)
- Voertuig AMBUAMBU (Ambulance)

En een voorbeeld melding:
- Een persoon moet worden geholpen
- Een persoon moet worden vervoerd

Goed, nu we alle informatie hebben kunnen we als het ware beginnen. Een Ambulance kan Helpen en Vervoeren, dus die sturen we erheen. Deze klaart de klus en rijd terug.

We krijgen nog een keer dezelfde melding, maar de Ambulance is nog niet terug. Oei, wat moeten we nu, een Motor en Bus versturen.
De Motor helpt, de Bus vervoerd.

Klus geklaard.

Nu willen we een voertuig toevoegen, het Mobiel Medisch Team

Oei Oei, nu kan ik meer dan 20x een bijna gelijke regel gaan toevoegen om te controleren of dat voertuig wel kan helpen.

Hoe kan ik dit slim aanpakken? Dus dat ik een voertuig toevoeg, kan zeggen wat deze kan (tabel, op basis van 1 en 0), en zo niet telkens overal die regels te moeten toevoegen?

Nu gaat het zo:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
if($Voertuig == 'AMBUAMBU' && $Melding == 'Helpen'){
// Code bij alleen helpen
}
if($Voertuig == 'AMBUAMBU' && $Melding == 'Vervoeren'){
// Code bij alleen vervoeren
}
if($Voertuig == 'AMBUAMBU' && $Melding == 'Beide'){
// Code bij helpen en vervoeren
}
?>


Zo zijn er ongeveer 30 varianten op, dus dat zou betekenen dat ik 30x wat kan gaan toevoegen in een script van 5000 regels...

Iemand enig idee hoe ik dit slim kan aanpakken?
 
PHP hulp

PHP hulp

26/04/2024 14:51:08
 
- SanThe -

- SanThe -

21/11/2014 00:59:33
Quote Anchor link
Misschien heb ik het niet goed begrepen.
Maar kijk er eens naar en probeer het uit.
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
<?php
define('getHULP',        1);
define('getVERVOER',    2);

define('AMBUMOTO',        1);
define('AMBUBUS',        2);
define('AMBUAMBU',        3);

$diensten = array('geen hulp', AMBUMOTO => 'een Ambulance Moto', AMBUBUS => 'een Ambulance Bus', AMBUAMBU => 'een Ambulance');
$voertuig = array(AMBUMOTO => 'Ambulance Moto', AMBUBUS => 'Ambulance Bus', AMBUAMBU => 'Ambulance');

$_SESSION['beschikbaar'] = (isset($_SESSION['beschikbaar'])) ? $_SESSION['beschikbaar'] : array(AMBUMOTO => 5, AMBUBUS => 5, AMBUAMBU => 5);

if($_SERVER['REQUEST_METHOD'] == "POST")
{

    $zoekHulp = 0;
    if(isset($_POST['zoekHulp']))
    {

        foreach($_POST['zoekHulp'] as $value)
        {

            $zoekHulp = ($zoekHulp | $value);
        }
    }

    if($zoekHulp == 0)
    {

        echo 'Er is '.$diensten[$zoekHulp].' onderweg.<br/><br/>';
    }

    else
    {    if($_SESSION['beschikbaar'][$zoekHulp] > 0)
        {

            echo 'Er is '.$diensten[$zoekHulp].' onderweg.<br/><br/>';
            $_SESSION['beschikbaar'][$zoekHulp] -= 1;
        }

        else
        {
            $hlp = array();
            foreach($diensten as $key => $value)
            {

                if(($key & $zoekHulp) and ($_SESSION['beschikbaar'][$key] > 0))
                {

                    $hlp[] = $value;
                    $_SESSION['beschikbaar'][$key] -= 1;
                }
            }

            if(count($hlp) == 0)
            {

                echo 'Er is niemand meer beschikbaar.<br/><br/>';
            }

            else
            {
                echo 'Er is '.implode(' en ', $hlp).' onderweg.<br/><br/>';
            }
        }
    }
}

else
{
    echo '<br/><br/>';
}


echo 'Nog beschikbaar: <br/>';
foreach($_SESSION['beschikbaar'] as $key => $aantal)
{

    echo $voertuig[$key].': '.$aantal.'<br/>';
}


echo '<br/><form action="" method="post">';
    echo 'Hulp    <input type="checkbox" name="zoekHulp[]" value="'.getHULP.'"/><br/>';
    echo 'Vervoer    <input type="checkbox" name="zoekHulp[]" value="'.getVERVOER.'"/><br/>';
    echo '<input type="submit" value="Zend"/><br/>';
echo '</form>';
?>
 
Peter  Flos

Peter Flos

21/11/2014 14:39:12
Quote Anchor link
Ziet er goed uit, Santhe, maar dat is helaas niet wat ik bedoel. Ik wil je zeker bedanken voor de tijd die je erin hebt gestoken en heb het script doorgenomen en leer ook weer wat bij op deze manier.

Om mijn vraag te verduidelijken:

Een speler krijgt een melding:
http://i.imgur.com/TPjITZ0.png

Daar kan de speler op klikken. Dan kan hij voertuigen versturen:
http://i.imgur.com/mapTXHz.png

Na het versturen hebben de voertuigen een rijtijd en komen aan:
http://i.imgur.com/7BigPlJ.png

Na de secondes te wachten zijn er verschillende opties.
Mortulance kan enkel doden vervoeren (dus niet behandelen, zoals in deze melding moet). Er komt te staan: "Geen opties"
http://i.imgur.com/RuXKqVx.png

En Ambulance kan helpen, en vervoeren. Beide moeten hier gebeuren. Bij een ambulance staan dan ook beide opties:
http://i.imgur.com/Jh7vkHv.png

Een Motor kan enkel helpen, en ziet dus enkel "Behandelen" staan en niet ook "Vervoeren".

Het is een simulator met de KNRM, Lifeguards (ook wel Reddingsbrigade, maar aangezien wij geen toestemming hebben gehad om die naam te mogen gebruiken (heeft de KNRM trouwens wel gegeven), noemen wij ze Lifeguards) en Ambulance.

Er zijn dus verschillende soorten:

- Ambulance:
--- Helpen
--- Vervoeren
--- Behandelen
--- Behandelen & Vervoeren
--- Helpen & Vervoeren

- KNRM:
--- Helpen
--- Redden
--- Slepen
--- Vervoeren
--- Slepen & Vervoeren
--- Helpen & Redden
--- Slepen, Helpen, Redden & Vervoeren
etc.

- Lifeguards:
--- Helpen
--- Redden
--- Vervoeren Ambulancemedewerkers
--- Vervoeren slachtoffers
--- Zoeken
Ook elke combinatie weer mogelijk

Wat een melding is staat opgeslagen in een Tabel waarin alle meldingen staan.

Maar een Ambulance kan dus niet de Functies van de KNRM en lifeguards, evenals de KNRM niks kan van de Ambulance en Lifeguards en de Lifeguards niet de functies kunnen doen van de KNRM en Ambulance.

Wat wel kan, is dat de partijen samenwerken.
Dat ziet er dan zo uit:

(Voertuigen)
Ambulance
Seatrack (Trailer voor boten KNRM)
Nikolaas (Boot KNRM)
Strandvoertuig (Voor vervoeren ambulancemedewerkers)

Standvoertuig haalt Ambulancemedewerkers op, Seatrack laad de boot de zee in en neemt de personen mee. Ambulance behandeld op het strand en de Lifeguards halen de slachtoffers op en de ambulancemedewerkers waarna de ambulance vervoert.

Wat het doel van het spel is is om de mensen dus te helpen, zoeken en het tot een goed einde te brengen. (Mensen die behandeld moeten worden hebben een aantal Levenspunten en zullen na verloop van tijd overlijden)

Maar niet elk voertuig heeft de Functies. (Nogmaals) de functies van de ambulance als voorbeeld:

- Ambulance:
--- Helpen
--- Vervoeren
--- Behandelen
--- Behandelen & Vervoeren
--- Helpen & Vervoeren

Een Motor kan helpen en behandelen, niet vervoeren. Een Bus kan wel vervoeren maar niet behandelen of helpen, een mortulance kan enkel doden vervoeren, een ambulance kan ze allemaal.

Mijn vraag is, hoe kan ik makkelijk opslaan en instellen wat welk voertuig kan. Dus stel, er staat een melding waarbij enkel vervoert moet worden, kan ik een nieuw voertuig toevoegen (Laten we Helikopter nemen). Ik stel in dat die alles kan (Vervoeren, Behandelen en Helpen), samen met de overige informatie die het voertuig nodig heeft, ik geef het voertuig een code (AMBUHELI in dit geval) en de spelers kunnen dit voertuig met verdient geld in het spel kopen. Dan wil ik dus dat bij al die variaties het direct wordt toegepast en ik niks meer hoef aan te passen in de meldingen code waar alle mensen behandeld worden, want dan moet ik dat bij elke vorm doen, en zoals je hierboven kunt zien zijn dat er nogal wat omdat alle combinaties mogelijk zijn.

Iemand een idee?
 
Peter K

Peter K

21/11/2014 15:47:38
Quote Anchor link
Op deze manier kun je oneindig veel combinaties toevoegen op elk moment:

Je geeft elk team een ID mee
TEAM:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
ID    NAAM
1    Ambulance
2    KNRM
3    Lifeguards


Bepaal hier welke competenties het voertuig beheerst.
VOERTUIGEN:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
ID     TEAM    NAAM                        COMPETENTIES
1    1        Ambulance_voertuig_1        1,2,3
2    1        Ambulance_voertuig_2        1,2
3    2        KNRM_voertuig_1            4,5
4    2        KNRM_voertuig_2            1,3
5    3        Lifeguards_voertuig_1        1,4
6    3        Lifeguards_voertuig_2        2,3


Hier beschrijf je welke mogelijkheden er zijn. Als je dus nog iets nieuws bedenkt kun je die functie hier toevoegen.
COMPETENTIES:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
ID    NAAM
1    Helpen
2    Vervoeren
3    Behandelen
4    Slepen
5     etc.....


Of eventueel met een extra tabel:
VOERTUIG_HAS_COMPETENTIE:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
ID        VOERTUIG_ID        COMPETENTIES
1        1                1
2        1                2
3        1                3
4        2                1
5        2                2
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.