Kleiner maken van mijn if/elseif constructie?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Senior C# Developer gezocht als rechterhand van Le

Bedrijfsomschrijving Deze organisatie is gespecialiseerd in het maken en implementeren van automatiseringssoftware binnen grote fabrieken. Ze zijn actief in diverse sectoren: staal, energie, retail, farmacie en de voedingsindustrie. Met inmiddels klanten in zowel binnen- en buitenland en verdere groeiambities zijn ze een serieuze speler op hun specifieke terrein. Ze optimaliseren processen, geven technisch advies en automatiseren diverse operaties. Er werken hier PLC Engineers welke Siemens producten installeren en programmeren. Naast deze techneuten werken er diverse Software .NET Developers aan allerlei maatwerksoftware aangezien de markt daar om vraagt. Specifiek voor deze tak wordt nu hard gezocht naar extra Software Developers! Een

Bekijk vacature »

Richard Hansma

Richard Hansma

11/03/2014 15:24:06
Quote Anchor link
Hallo PHP-ers,

Inmiddels bezig met een PHP dart script en nu heb ik keuze menu waar je het aantal sets en legs kunt kiezen, nu is het zo dat wanneer je bijvoorbeeld een best of 1 leg kiest. Nu is dat niet zo moeilijk te maken. Nu is het probleem meer, moet ik nu een elseif aanmaken voor elke 'best of leg(s)'?

Op dit moment heb ik dit (voor speler 1):

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
<?php
if(isset($_SESSION['player1'], $_SESSION['scoreleft1']) && $_SESSION['scoreleft1'] == 0) {
    $_SESSION['throws1'] = 0;
    $_SESSION['throws2'] = 0;
    unset($_SESSION['lastthrows1']);
    unset($_SESSION['lastthrows2']);
    if($_SESSION['bestofsets'] == 1) {
        if($_SESSION['legs1'] == 0 && $_SESSION['bestoflegs'] == 1) {
            $win =  $_SESSION['player1'].' heeft gewonnen!';
            $_SESSION['legs1'] = 0;
            $_SESSION['legs2'] = 0;
            $_SESSION['sets1']++;
        }

        elseif($_SESSION['legs1'] < 1 && $_SESSION['bestoflegs'] == 3) {
            $_SESSION['legs1']++;
            $_SESSION['scoreleft1'] = $_SESSION['game'];
            $_SESSION['scoreleft2'] = $_SESSION['game'];
        }

        elseif($_SESSION['legs1'] == 1 && $_SESSION['bestoflegs'] == 3) {
            $win =  $_SESSION['player1'].' heeft gewonnen!';
            $_SESSION['legs1'] = 0;
            $_SESSION['legs2'] = 0;
            $_SESSION['sets1']++;  
        }

        elseif($_SESSION['legs1'] < 2 && $_SESSION['bestoflegs'] == 5) {
            $_SESSION['legs1']++;
            $_SESSION['scoreleft1'] = $_SESSION['game'];
            $_SESSION['scoreleft2'] = $_SESSION['game'];
        }

        elseif($_SESSION['legs1'] == 2 && $_SESSION['bestoflegs'] == 5) {
            $win =  $_SESSION['player1'].' heeft gewonnen!';
            $_SESSION['legs1'] = 0;
            $_SESSION['legs2'] = 0;
            $_SESSION['sets1']++;
        }

        elseif($_SESSION['legs1'] < 3 && $_SESSION['bestoflegs'] == 7) {
            $_SESSION['legs1']++;
            $_SESSION['scoreleft1'] = $_SESSION['game'];
            $_SESSION['scoreleft2'] = $_SESSION['game'];
        }

        elseif($_SESSION['legs1'] == 3 && $_SESSION['bestoflegs'] == 7) {
            $win =  $_SESSION['player1'].' heeft gewonnen!';
            $_SESSION['legs1'] = 0;
            $_SESSION['legs2'] = 0;
            $_SESSION['sets1']++;
        }

        elseif($_SESSION['legs1'] < 4 && $_SESSION['bestoflegs'] == 9) {
            $_SESSION['legs1']++;
            $_SESSION['scoreleft1'] = $_SESSION['game'];
            $_SESSION['scoreleft2'] = $_SESSION['game'];
        }

        elseif($_SESSION['legs1'] == 4 && $_SESSION['bestoflegs'] == 9) {
            $win =  $_SESSION['player1'].' heeft gewonnen!';
            $_SESSION['legs1'] = 0;
            $_SESSION['legs2'] = 0;
            $_SESSION['sets1']++;
        }
    }
}

?>


Mijn vraag is dus, kan dit korter en zo ja, hoe?
 
PHP hulp

PHP hulp

07/10/2022 11:26:00
 
Ivo P

Ivo P

11/03/2014 15:44:10
Quote Anchor link
misschien scheelt het als je de spelregels uitlegt?

zoals het nu lijkt, zou het verschil meer dan 2 "punten" moeten zijn, tenzij best gelijk is aan 9?

naast < en == bestaat er trouwens ook <= wat je in elk geval al de helft van je regels zou schelen.
 
Erwin H

Erwin H

11/03/2014 15:45:35
Quote Anchor link
Even iets anders groeperen en je ziet meteen een patroon:
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
<?php
        if($_SESSION['legs1'] == 0 && $_SESSION['bestoflegs'] == 1) {
            $win =  $_SESSION['player1'].' heeft gewonnen!';
            $_SESSION['legs1'] = 0;
            $_SESSION['legs2'] = 0;
            $_SESSION['sets1']++;
        }

        elseif($_SESSION['legs1'] == 1 && $_SESSION['bestoflegs'] == 3) {
            $win =  $_SESSION['player1'].' heeft gewonnen!';
            $_SESSION['legs1'] = 0;
            $_SESSION['legs2'] = 0;
            $_SESSION['sets1']++;  
        }

        elseif($_SESSION['legs1'] == 2 && $_SESSION['bestoflegs'] == 5) {
            $win =  $_SESSION['player1'].' heeft gewonnen!';
            $_SESSION['legs1'] = 0;
            $_SESSION['legs2'] = 0;
            $_SESSION['sets1']++;
        }

        elseif($_SESSION['legs1'] == 3 && $_SESSION['bestoflegs'] == 7) {
            $win =  $_SESSION['player1'].' heeft gewonnen!';
            $_SESSION['legs1'] = 0;
            $_SESSION['legs2'] = 0;
            $_SESSION['sets1']++;
        }

        elseif($_SESSION['legs1'] == 4 && $_SESSION['bestoflegs'] == 9) {
            $win =  $_SESSION['player1'].' heeft gewonnen!';
            $_SESSION['legs1'] = 0;
            $_SESSION['legs2'] = 0;
            $_SESSION['sets1']++;
        }


        elseif($_SESSION['legs1'] < 1 && $_SESSION['bestoflegs'] == 3) {
            $_SESSION['legs1']++;
            $_SESSION['scoreleft1'] = $_SESSION['game'];
            $_SESSION['scoreleft2'] = $_SESSION['game'];
        }

        elseif($_SESSION['legs1'] < 2 && $_SESSION['bestoflegs'] == 5) {
            $_SESSION['legs1']++;
            $_SESSION['scoreleft1'] = $_SESSION['game'];
            $_SESSION['scoreleft2'] = $_SESSION['game'];
        }

        elseif($_SESSION['legs1'] < 3 && $_SESSION['bestoflegs'] == 7) {
            $_SESSION['legs1']++;
            $_SESSION['scoreleft1'] = $_SESSION['game'];
            $_SESSION['scoreleft2'] = $_SESSION['game'];
        }

        elseif($_SESSION['legs1'] < 4 && $_SESSION['bestoflegs'] == 9) {
            $_SESSION['legs1']++;
            $_SESSION['scoreleft1'] = $_SESSION['game'];
            $_SESSION['scoreleft2'] = $_SESSION['game'];
        }


?>

En dan lijkt het mij een koud kunstje om het in twee opties te schrijven (maar test het nog wel, want dat heb ik niet gedaan):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
if ( $_SESSION['legs1'] == floor( $_SESSION['bestoflegs'] / 2 ) ){
  $win =  $_SESSION['player1'].' heeft gewonnen!';
  $_SESSION['legs1'] = 0;
  $_SESSION['legs2'] = 0;
  $_SESSION['sets1']++;
}
else {
  $_SESSION['legs1']++;
  $_SESSION['scoreleft1'] = $_SESSION['game'];
  $_SESSION['scoreleft2'] = $_SESSION['game'];
}

?>
Gewijzigd op 11/03/2014 15:46:22 door Erwin H
 
Michael -

Michael -

11/03/2014 16:03:21
Quote Anchor link
Hier was laatst ook al een vraag over een dart spel. Toen leek hij mij wel leuk om te kijken of het nog lastig zou gaan met die legs, sets, matches etc. En wanneer de één moet beginnen, etc. Uiteindelijk heb ik dit ervan gemaakt (source) misschien kan je er iets mee.
 
Richard Hansma

Richard Hansma

11/03/2014 17:21:32
Quote Anchor link
Bedankt, door jullie input kan ik weer verder.

Leuk gedaan trouwens Michael!
 



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.