Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

Random timer met php

Pagina: 1
Acties:

Onderwerpen


  • MotleyCrue
  • Registratie: Februari 2013
  • Laatst online: 03-05 14:15
Hallo allen,

Voor een opdracht van school moet ik een simpel spel in PHP maken.
Nu wil ik dat er op random momenten afbeeldingen getoond worden.
Wat lastig bleek te zijn in PHP.
Een innerhtml met javascript bleek geen succes, maar ik had dit als oplossing bedacht.
Twee random getallen van elkaar aftrekken met vertraging zodat je enige willekeurigheid krijgt wanneer iets getoond word. En dan als $ans <= 0 de afbeelding tonen dmv if else statements.

$var1 = (rand(2,6));
$var2 = (rand(1,3));

sleep(5); // delay in seconds (here 5)
$ans=$var1-$var2;

Maar met sleep wordt de gehele code vertraagd. Is hier ene oplossing voor of is het simpelweg onmogelijk?

(edit: typo)

  • Speedener
  • Registratie: September 2000
  • Laatst online: 30-11 17:39
Ik zou eens kijken naar setInterval of setTimeout in javascript ;)

  • incaz
  • Registratie: Augustus 2012
  • Laatst online: 15-11-2022
Dit lijkt me toch veel beter in de client te passen met javascript. Je kunt het ook nog splitsen: een timer met random interval die vervolgens een call naar de server doet, waar het een willekeurige afbeelding krijgt.

In stukjes hakken maak je dan dus:
- javascript die de afbeelding ophaalt
- php die een willekeurige afbeelding serveert
- javascript dat na willekeurige tijd een afbeelding ophaalt.

In het huidige voorbeeld heb je overigens niet 2 keer een randomwaarde nodig, het van elkaar aftrekken van 2 randomwaardes heeft geen zin. Gewoon $var1 = rand(0, 6); if( $var1 < 1){ ...} werkt ook, en maakt het makkelijker om de kans te bepalen op een bepaalde gebeurtenis.

Never explain with stupidity where malice is a better explanation


  • MotleyCrue
  • Registratie: Februari 2013
  • Laatst online: 03-05 14:15
Het spel werkt zo:
Er komt een plaatje in beeld (een willekeurig plaatje, ene keer links andere keer rechts) (dit gedeelte is er en werkt)

Je moet dan zo snel mogelijk op het plaatje klikken, als je dat binnen de tijd doet ga je verder en anders game over (score naar database dmv SQL) (werkt half)

Om het een beetje spannend te houden wilde ik het interval waarmee die plaatjes getoond worden willekeurig doen, de ene keer na een halve seconde en dan weer 1,5 seconde zegmaar.

Is er een manier waarmee ik een willekeurige interval kan maken die met php een afbeelding serveert?

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Als je een PHP-script schrijft dat die afbeelding serveert terwijl je in javascript bijhoudt wanneer je dat script moet aanroepen, ja. Maar waarom zou je daar überhaupt PHP voor nodig hebben?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • MotleyCrue
  • Registratie: Februari 2013
  • Laatst online: 03-05 14:15
Ik ben 1e jaars en dit is mn eerste opdracht van het vak webprogramming. Ik moet een spel maken met PHP.
Verder heb ik nog geen ervaring met PHP of javascript, dus vandaar dat ik hier om mogelijkheden vraag.

De afbeelding serveer ik door een random getal op deze manier:

$plaatje = (rand(0,3));
if ($plaatje == 1) { echo <img>}

en dit wil ik dus op een willekeurig tijdstip doen.

[ Voor 7% gewijzigd door MotleyCrue op 15-01-2015 14:35 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Nogmaals: PHP is klaar op het moment dat je browser de pagina ziet. Je kan niet op basis van een timer ineens content gaan toevoegen tenzij je javascript gebruikt. En als je javascript gebruikt moet je, als je steeds een ander plaatje wil zien, je browsercache een beetje voor de gek houden met iets als <img src="image.php?<?php echo date('u'); ?>">.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • emnich
  • Registratie: November 2012
  • Niet online

emnich

kom je hier vaker?

Zoals iedereen al zegt is PHP hier niet echt geschikt voor. Mocht je het toch echt echt echt in PHP willen doen (met een heel klein beetje js) dan kan je zoiets doen:
code:
1
$sec = rand(0,5);


dan tussen <head> en </head>
code:
1
2
3
4
5
6
7
<meta http-equiv="refresh" content="<?php echo $sec; ?>;url=http://volgendplaatje">
<script>
setTimeout(function()
    {
        window.location = "http://volgendplaatje";
    }, <php echo ($sec*1000); ?>);
</script>

  • MotleyCrue
  • Registratie: Februari 2013
  • Laatst online: 03-05 14:15
Als ik emnich goed begrijp doet dat na een vast tijdstip $s tonen en kan ik met $sec het random plaatje kiezen?

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Die code van emnich zou ik niet gebruiken. Waarom zou je die rand-call naar PHP trekken? Die kan óók gewoon in javascript.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • emnich
  • Registratie: November 2012
  • Niet online

emnich

kom je hier vaker?

MotleyCrue schreef op donderdag 15 januari 2015 @ 14:55:
Als ik emnich goed begrijp doet dat na een vast tijdstip $s tonen en kan ik met $sec het random plaatje kiezen?
Nee die $s moet $sec zijn.

Het enige wat dit doet is de pagina laten verversen na 0-5 sec.
NMe schreef op donderdag 15 januari 2015 @ 15:01:
Die code van emnich zou ik niet gebruiken. Waarom zou je die rand-call naar PHP trekken? Die kan óók gewoon in javascript.
Mee eens maar de opdracht is om een spel te maken in PHP dus doe je dan zo veel mogelijk in PHP O-)

Volgens mij kan hij beter een ander type spel bedenken....

  • MotleyCrue
  • Registratie: Februari 2013
  • Laatst online: 03-05 14:15
Ik heb een "oplossing" en een stuk code.
Op deze manier hoef ik geen variabele timer maar laad ik na ieder goed "antwoord" een nieuwe pagina.

Deze code voor de afbeelding tonen.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// Store the status of the image. Initially it is 'visible'.
var isVisible = "visible";


function blink() {
    // Toggle the position.
    if(isVisible == "visible") isVisible = "hidden";
    else                       isVisible = "visible";

    // Update it.
    document.getElementById("image").style.visibility = isVisible;

    // Repeat the process every 2 seconds.
    setTimeout(blink, 2000);
}


Alleen blijft hij dit herhalen, dus ik moet er nog even een stop op krijgen

  • Biersteker
  • Registratie: Juni 2009
  • Laatst online: 29-11 12:57
Je zou dit in php kunnen doen, met multipart/x-mixed-replace geklooi, en een hoop serverside events.
Misschien is het makkelijker/meer in lijn met de opdracht, om een php scriptje te maken, dat een array output en die dan via javascript gebruikt word als soort van level generator.

edit:
Je kan ook Jquery gebruiken he ;)
JavaScript:
1
2
3
$("#imgcontainer").show();
$("#imgcontainer").hide();
$("#theimage").attr( "src", "img1.jpg" );

[ Voor 22% gewijzigd door Biersteker op 15-01-2015 17:01 ]

Originally, a hacker was someone who makes furniture with an axe.


  • MotleyCrue
  • Registratie: Februari 2013
  • Laatst online: 03-05 14:15
Omdat het voor mij toch teveel gekut en geklooi wordt in een te korte tijd heb ik besloten om m'n spel redelijk grondig om te gooien en er een soort zoek spel van te maken ipv de plaatjes random in beeld te laten komen.

Alsnog van harte dank voor jullie tijd en meedenken!
Pagina: 1