Weergegeven resultaten: 1 t/m 6 van 6

Discussie: zeeslag in php

  1. #1
    Up-to-date  
    Geregistreerd
    16 April 2011
    Berichten
    10
    Bedankjes
    4
    Bedankt
    10 keer in 10 posts

    zeeslag in php

    hallo,

    Ik heb de opdracht gekregen om zeeslag te maken in php.
    Ik heb hiervoor al 2 bestandjes: zeeslag.php en zeeslagverwerk.php
    mijn eerste bestand ziet er als volgt uit:

    HTML-code:
    <!DOCTYPE html>
    <html>
    <head><title>zeeslag</title></head>
    <body>
    
    <p>
    Plaats jouw schepen.
    <br>Je hebt 3 schepen ter beschikking</br>
    <br>1 van 3 blokjes en 2 van 2 blokjes</br>
    
    
    </p>
    
    <form action="zeeslagverwerk.php" method="post">
    <table border = "1">
    
    
    <tr><td><input type="checkbox" name="schepen[]" value="0" /></td><td><input type="checkbox" name="schepen[]" value="1" /></td><td><input type="checkbox" name="schepen[]" value="2" /></td><td><input type="checkbox" name="schepen[]" value="3" /></td><td><input type="checkbox" name="schepen[]" value="4" /></td></tr>
    <tr><td><input type="checkbox" name="schepen[]" value="5" /></td><td><input type="checkbox" name="schepen[]" value="6" /></td><td><input type="checkbox" name="schepen[]" value="7" /></td><td><input type="checkbox" name="schepen[]" value="8" /></td><td><input type="checkbox" name="schepen[]" value="9" /></td></tr>
    <tr><td><input type="checkbox" name="schepen[]" value="10" /></td><td><input type="checkbox" name="schepen[]" value="11" /></td><td><input type="checkbox" name="schepen[]" value="12" /></td><td><input type="checkbox" name="schepen[]" value="13" /></td><td><input type="checkbox" name="schepen[]" value="14" /></td></tr>
    <tr><td><input type="checkbox" name="schepen[]" value="15" /></td><td><input type="checkbox" name="schepen[]" value="16" /></td><td><input type="checkbox" name="schepen[]" value="17" /></td><td><input type="checkbox" name="schepen[]" value="18" /></td><td><input type="checkbox" name="schepen[]" value="19" /></td></tr>
    <tr><td><input type="checkbox" name="schepen[]" value="20" /></td><td><input type="checkbox" name="schepen[]" value="21" /></td><td><input type="checkbox" name="schepen[]" value="22" /></td><td><input type="checkbox" name="schepen[]" value="23" /></td><td><input type="checkbox" name="schepen[]" value="24" /></td></tr>
    
    
    </table>
    <input type="submit" value="Stuur door" />
    </form>
    
    </body>
    </html>

    het is dus een tabel met checkboxen om de plaats van mijn schepen te bepalen. Het moet een vierkant van 5X5 zijn en je hebt 1 schip van 3 en 2 schepen van 2 blokjes.
    mijn verwerkbestand ziet er als volgt uit:

    PHP-code:
    <!DOCTYPE html>
    <html>
    <head><title>zeeslag verwerk</title>
    <body>
    <table border = "1">
    <?php
    $schepen 
    $_POST["schepen"];

    foreach (
    $schepen as $schip)
    {
    $schepenia[(floor($schip/5))][($schip%5)] ="X";
    }
    for(
    $i=0;$i<=4;$i++) 
        {
            echo 
    "<tr>";
            for(
    $j=$j<=$j++)
            {

                echo 
    "<td>" $schepenia[$i][$j] . "</td>"
            }
            echo 
    "</tr>";
        } 

    print_r($schepenia);

    ?>
    </table>
    </body>
    </html>
    Het is de bedoeling dat de andere tegenstander de computer is, dus nu moet ik nog een tabel maken (vanzelf door de computer). De computer moet willekeurig 7 vakjes aankruisen waaarvan 2 boten met 2 vakjes naast elkaar en de derde boot met 3 vakjes (functie rand($min, $max).
    Ik moet dan mijn eerste tabel van de plaatsen van mijn boten naar het scherm sturen en daarnaast de tabel waar de computer willekeurig zijn schepen heeft geplaatst. deze laatste tabel zal dan waarschijnlijk 'radioknoppen' hebben. dan verloopt het spel zoals de normale regels. Ik moet dus (later) ook nog een strategie uitwerken voor de computer. Als deze raak heeft geschoten moet hij de volgende keer naast dat punt schieten.
    Geen eenvoudige opdracht dus!
    Ik zou het erg appreciëren als je me wilt helpen

    ps: de volgende punten hebben we reeds behandeld in de klas: php, html , forms en arrays

    Pieter

  2. De volgende gebruiker bedankt pietergoed voor deze nuttige post:

    ultddave (19 April 2011)

  3. #2
    Up-to-date  
    Geregistreerd
    16 April 2011
    Berichten
    10
    Bedankjes
    4
    Bedankt
    10 keer in 10 posts

    random 7 vakjes aankruisen in array/table met voorwaarden

    Hallo

    ik zou de computer in een tabel van 5X5 7 willekeurig vakjes moeten laten aanduiden.
    Het is voor het spel zeeslag (ik heb hierover al een eerdere post gemaakt).
    ik heb 2 boten van 2 vakjes naast elkaar nodig en 1 boot van 3 vakjes naast elkaar.
    ik weet nog niet zeker wat ik het best gebruik: een array of en tabel
    de output moet echter een tabel zijn met checkboxen en als ik op de juist plaats 'schiet'(klik) dan moet de computer mij dat op de een of andere manier laten weten.

    Pieter

  4. De volgende gebruiker bedankt pietergoed voor deze nuttige post:

    ultddave (19 April 2011)

  5. #3
    Erelid   Jelle's schermafbeelding
    Geregistreerd
    30 April 2005
    Locatie
    Antwerpen
    Berichten
    3.061
    Bedankjes
    248
    Bedankt
    4.982 keer in 1.801 posts
    Hi Pieter,

    Ik heb je twee topics samengevoegd en je code in tags gezet voor syntax highlighting.

    Gelieve zelf ook concrete ideeën uit te werken, want ik denk dat je hier niemand bereid zal vinden om jouw hele huiswerk te maken. Je moet meer concrete vragen stellen

  6. De volgende 2 gebruikers bedanken Jelle voor deze nuttige post:

    compuchrisje (17 April 2011), ultddave (19 April 2011)

  7. #4
    Up-to-date  
    Geregistreerd
    16 April 2011
    Berichten
    10
    Bedankjes
    4
    Bedankt
    10 keer in 10 posts

    Array + voorwaarden HELP!

    random 7 vakjes aankruisen in array

    Hallo

    ik zou de computer in een tabel van 5X5 7 willekeurig vakjes moeten laten aanduiden.
    Het is voor het spel zeeslag (ik heb hierover al een eerdere post gemaakt).
    ik heb 2 boten van 2 vakjes naast elkaar nodig en 1 boot van 3 vakjes naast elkaar. Ik moet dus een 2dimensionale array hebben met 2 boten van 2 en 1 boot van 3 vakjes (zo mogen elkaar niet overlappen).
    ik kan de array daarna overzetten naar een table.




    enige hulp zou welkom zijn!!!!!

    Pieter

  8. De volgende gebruiker bedankt pietergoed voor deze nuttige post:

    ultddave (19 April 2011)

  9. #5
    Expert   kurt0015's schermafbeelding
    Geregistreerd
    10 May 2005
    Locatie
    Gruitrode
    Berichten
    584
    Bedankjes
    113
    Bedankt
    186 keer in 97 posts
    Ik zou werken met een array dat je in een sessie steekt of je post steeds alle data maar dat is beetje een kwestie van voorkeur. Ik zou omdat de computer zijn gedeelte best verborgen blijft deze in een sessie stoppen en het array steeds bijwerken met nieuwe informatie.

    PHP-code:
    <?php

    $data 
    = array(

        
    /**
        * Locatie van boten
        */
        
    'boten' => array(
            array(), 
    // Boten van speler
            
    array() // Boten van pc
        
    ),

        
    /**
        * Waar werden er al schoten gedaan
        */
        
    'schoten' => array(
            array(), 
    // Schoten van speler
            
    array() // Schoten van pc
        
    )
    );

    function 
    table($locations false)
    {    
        if(
    $locations == false || (is_array($locations) && count($locations) == 0))
        {
            
    /**
            * Lege tabel maken!
            */
        
    }
        else
        {
            
    /**
            * Verwerking data
            */    
        
    }
    }

    # Wanneer je deze dan nodg hebt kan je simpel iets doen als
    table($data['boten'][0]);
    Vanuit het array zou ik dan steeds een tabel laten generen door een functie aan te roepen. Indien je je velden simpel indeelt kun je in je array dus waardes opnemen als A1. En zo de locaties bepalen. Er zijn natuurlijk meerdere mogelijkheden om dit op te bouwen maar dit is mijn eerste gedacht.
    Laatst gewijzigd door kurt0015; 19 April 2011 om 20:11

  10. De volgende 2 gebruikers bedanken kurt0015 voor deze nuttige post:

    pietergoed (21 April 2011), ultddave (19 April 2011)

  11. #6
    Administrator   ultddave's schermafbeelding
    Geregistreerd
    24 June 2006
    Locatie
    Genk
    Berichten
    1.527
    Bedankjes
    5.385
    Bedankt
    2.577 keer in 1.271 posts
    @Pieter;

    Hetgeen je eigenlijk wilt doen is een beetje zoals een "opening book" bij schaken. Daarbij ga je de beste openingszetten in een database opslaan.

    In dit geval kan je eventueel een aantal goede startposities (ik ben niet vertrouwd met zeeslag, maar ik vermoed dat er een aantal goede strategische plaatsen zijn) hardcoden (dus de rij/columnindexen letterlijk in de code zetten) en via een random variabele laten kiezen welke "opening book" hij gaat pakken.

    Code:
    function startPosities1()
    {
    // Plaats de boten op de posities overeenstemmend met tactiek 1
    }
    
    function startPosities2()
    {
    // Plaats de boten op de posities overeenstemmend met tactiek 2
    }
    
    // Eventueel nog andere tactieken
    En dan in de main function;

    Code:
    $choice = rand(1, 2); // random geheel getal genereren tussen 1 en 2 (inclusief 1 en 2 zelf)
    
    if($choice == 1)
     startPosities1();
    else
     startPosities2();
    Bij meerdere keuzes kan je de voorkeur geven aan een switch ipv if-else if structuur.

    Een functie schrijven voor random wat boten in de array te plaatsen, neemt redelijk veel tijd in beslag (het coderen bedoel ik dan - niet noodzakelijk het uitvoeren van de functie).

    Indien je het toch wilt proberen; 1 extra array bijhouden met alle boten die je wilt plaatsen.

    Dan een loop voorzien, die door deze array loopt. Dan moet je voor elke boot een lijst genereren van alle mogelijke zetten voor deze boot. (Dit gaat redelijk wat code zijn volgens mij.)

    En dan via "rand" weer 1 zet daaruit random kiezen en uitvoeren.
    Code:
    For i = 0 to botenArray.length
       mogelijkePosities = genereerMogelijkePosities(botenArray[i]);
       keuze = rand(0, mogelijkePosities.length - 1);
       plaatsBoot(mogelijkePosities[keuze]);
    Next
    Mvg,
    Dave
    Laatst gewijzigd door ultddave; 19 April 2011 om 21:55
    "Friendship. It's the hardest thing in the world to explain. It's not something you learn in school. But if you haven't learned the meaning of friendship, you really haven't learned anything." ~ Muhammad Ali

  12. De volgende gebruiker bedankt ultddave voor deze nuttige post:

    pietergoed (24 April 2011)

Discussie informatie

Users Browsing this Thread

Momenteel bekijken 1 gebruikers deze discussie. (0 leden en 1 gasten)

Favorieten/bladwijzers

Favorieten/bladwijzers

Regels voor berichten

  • Je mag geen nieuwe discussies starten
  • Je mag niet reageren op berichten
  • Je mag geen bijlagen versturen
  • Je mag niet je berichten bewerken
  •