Poppetje beweegt niet meer over kaart, nu actie in functie staat

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Marijn Struijlaart

Marijn Struijlaart

17/06/2011 14:35:49
Quote Anchor link
Hoi

Ik ben bezig met ene soort van spel, waarbij een onderdeel is dat je een dobbelsteen moet rollen en dan kan bewegen, afhankelijk van welk soort terrein en het aantal ogen.
ik heb de bewegingsactie nu in een functie gezet, maar dat werkt nog niet helemaal vlekkeloos. ik kan namelijk niet meer bewegen (kon eerst wel toen ik alles los had).
ik denk zelf dat het iets van een fout is met de return values. jullie een idee?

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
<?php
function moveplayer($player, $directionvalue, $stappen, $grass, $dorp, $berg, $water)
{

    if(in_array($player + $directionvalue, $grass) or in_array($player + $directionvalue, $dorp)) //als je naar gras wilt bewegen
        {       
            if($stappen > 0) //als er nog stappen beschikbaar zijn
        {
                $stappen = $stappen -1; //aantal stappen kost 1
                        $player = $player + $directionvalue; //coordinaat 10 omhoog
            }
                elseif(!$stappen) //als ie het aantal stappen niet kan bereken
                {
                         echo "unable to calculate how many steps are left, please try again\n";
                }

            else //als er te weinig stappen zijn
        {
                echo "not enough steps left to make this move!, please choose another action or roll the dice!\n";
        }
        }

        elseif(in_array($player + $directionvalue, $water)) //idem voor vorige
        {
            if($stappen > 1)
        {

                $stappen = $stappen - 2;
                        $player = $player + $directionvalue;
            }

                elseif(!$stappen)
                {

                        echo "unable to calculate how many steps are left, please try again\n";
                }

            else
        {
                echo "not enough steps left to make this move!\n";
        }
        }

        elseif(in_array($player + $directionvalue, $berg))
        {

            if($stappen > 2)
        {

                $stappen = $stappen - 3;
                        $player = $player + $directionvalue;
            }

                elseif(!$stappen)
                {

                        echo "unable to calculate how many steps are left, please try again\n";
                }

            else
        {
                echo "not enough steps left to make this move!\n";
        }
        }

        else
        {
                echo "you cannot move outside the map!\n";
        }

return $player;
return $stappen;
}


if(isset($_POST['up'])) // omhoog bewegen
{
moveplayer($player, -10, $stappen, $grass, $dorp, $berg, $water);
}

elseif(isset($_POST['left'])) // naar links bewegen
{        
moveplayer($player, -1, $stappen, $grass, $dorp, $berg, $water);            
}

elseif(isset($_POST['down'])) //omlaag bewegen
{
moveplayer($player, 10, $stappen, $grass, $dorp, $berg, $water);  
}

elseif(isset($_POST['right'])) //naar rechts bewegen
{
moveplayer($player, 1, $stappen, $grass, $dorp, $berg, $water);             
}


setcookie("playerposition", $player); //bewerkte positie van de speler opslaan
?>


ik gebruik cookies ipv sessions, zodat je evt makkelijk later terug kan komen. het si voor een PO informatica over PHP, daarom heb ik ook geen mysql gebruikt
 
PHP hulp

PHP hulp

06/11/2024 03:46:11
 
- SanThe -

- SanThe -

17/06/2011 14:38:57
Quote Anchor link
Ik heb nog niet gelezen wat het probleem is, doe ik later nog. Maar wat ik direct zag is dit:
return $player;
return $stappen;

En dat werkt sowieso niet. Bij de eerste return wordt de functie verlaten, dus de tweede wordt nooit bereikt.
 
Marijn Struijlaart

Marijn Struijlaart

17/06/2011 15:10:19
Quote Anchor link
OK, is het dan misschien mogelijk een array te returnen met die 2 variabelen en dan die array splitten zegmaar in $player en $stappen?
 
- SanThe -

- SanThe -

17/06/2011 15:28:23
Quote Anchor link
Ja.
Je doet nu trouwens helemaal niks met de returnwaarde.

function moveplayer(...)
{
return array($player, $stappen);
}

$array = moveplayer(...);
$player = $array[0];
$stappen = $array[1];
 
Marijn Struijlaart

Marijn Struijlaart

17/06/2011 15:42:25
Quote Anchor link
nee dat zit in een later stuk van het script. heb nu maar een stuk van de 400 regels gepakt. maar OK bedankt, dit moet denk ik wel werken, moet nu eerst even wat anders doen en daarna vul ik t ff in ;)
 
The Force

The Force

17/06/2011 16:11:29
Quote Anchor link
400 regels code gevuld met ifjes en elsjes, dat klinkt als 1) een zeer slechte structuur in je code en je bestandsstructuur en 2) lastig te debuggen en aan te passen. Dat is niet iets waar je trots op moet zijn ;).
 
Marijn Struijlaart

Marijn Struijlaart

17/06/2011 16:45:04
Quote Anchor link
nou valt allemaal nog wel mee, alles staat in 1 bestand, ook de html code en het is redelijk uitgebreid. daarnaast heb ik vrij veel witregels en voor 1 stuk was het gewoon wat makkelijker om het deels uit te schrijven ipv de functie te gebruiken voor 4 verschillende variabelen, maar dat laat ik nu even achterwege. zit ook aardig wat foutafhandeling in enzo dussss
 



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.