Kleiner maken van mijn if/elseif constructie?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Advanced Mendix Developer Order Management Systeme

Advanced Mendix Developer Order Management Systemen (NL) Den Haag HBO/WO IT Professional "Als Advanced Mendix Developer impact maken op de groeiende e-commerce markt? Je doet dit bij PostNL door met je DevOps team onze Mendix applicaties verder te ontwikkelen, waarbij je complexe logistieke business processen vertaalt naar applicaties die ons primaire proces ondersteunen". Wat ga je doen? PostNL wordt een postal tech company We nemen de ontwikkeling van onze IT applicaties in eigen hand door onze eigen software-ontwikkel-capability op te zetten. Als Advanced Mendix Developer ben je onderdeel van een multidisciplinair, agile werkend Business-IT-team. Samen met dit team bouw je onze logistieke IT-applicaties verder

Bekijk vacature »

Advanced Mendix Developer Order Management Systeme

Advanced Mendix Developer Order Management Systemen (NL) Den Haag HBO/WO IT Professional "Als Advanced Mendix Developer impact maken op de groeiende e-commerce markt? Je doet dit bij PostNL door met je DevOps team onze Mendix applicaties verder te ontwikkelen, waarbij je complexe logistieke business processen vertaalt naar applicaties die ons primaire proces ondersteunen". Wat ga je doen? PostNL wordt een postal tech company We nemen de ontwikkeling van onze IT applicaties in eigen hand door onze eigen software-ontwikkel-capability op te zetten. Als Advanced Mendix Developer ben je onderdeel van een multidisciplinair, agile werkend Business-IT-team. Samen met dit team bouw je onze logistieke IT-applicaties verder

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

21/09/2021 11:16:06
 
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.