Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Page 1 of 2 12 LastLast
Results 1 to 15 of 21
  1. #1
    New Coder
    Join Date
    May 2009
    Location
    Yucca Valley, CA
    Posts
    12
    Thanks
    3
    Thanked 0 Times in 0 Posts

    Unhappy I Am Having An Issue With The Random Number Operator

    On my code the javascript isn't working right I want it to choose a random number then when I click on a picture (image button) it will give an alert box saying my score (if it is wrong, if it is right then it will choose a new one) but when I click on the pictures nothing happens. I also want it on a timer so they have to click on the picture in two seconds or less or they lose... also is there any way to have a sound clip play when the random number is chosen based on which number it is? I have thoroughly googled it but could not find an answer. Thanks in advance!

    Code:
    <html>
    <head><title>Wipe Out Extreme!</title></head>
    
    <body style="background-color: black;">
    
    <p align="center">
    
    <font color="yellow">
    
    <h1 align="center">Wipe Out Extreme!</h1>
    
    </font>
    
    </p>
    
    <embed src="wipeout.mp3" autostart="false" loop="infinite" type="audio/mpeg" align="center" height="10" width="50">
    
    <table style="width: 400px; height: 400px; text-align: left; margin-left: auto; margin-right: auto;" border="0" cellpadding="2" cellspacing="2">
    
    <tbody>
    
    <tr>
    
    <td style="width: 124px; height: 130px;">
    
    
    <input type="image" width="100" height="42" onClick="pull = 1" name="pull" id="pull" src="twistit.jpg">
    </td>
    
    <td style="width: 124px; height: 130px;">
    
    </td>
    
    <td style="width: 124px; height: 130px;">
    
    
    <input type="image" width="114" height="42" onClick="flick = 1" name="flick" id="flick" src="flickit.jpg">
    
    </td>
    
    </tr>
    
    <tr>
    
    <td style="width: 124px; height: 130px;">
    
    </td>
    
    <td style="width: 124px; height: 130px;">
    
    
    <input type="image" width="106" height="100" onClick="wipe = 1" name="wipe" id="wipe" src="wipeout.jpg">
    
    </td>
    
    <td style="width: 124px; height: 130px;">
    
    </td>
    
    </tr>
    
    <tr>
    
    <td style="width: 124px; height: 130px;">
    
    <input type="image" width="119" height="50" onClick="pull = 1" name="pull" id="pull" src="pullit.jpg">
    
    </td>
    
    <td style="width: 124px; height: 130px;">
    
    </td>
    
    <td style="width: 124px; height: 130px;">
    
    <input type="image" width="114" height="50" onClick="spin = 1" name="spin" id="spin" src="spinit.jpg">
    
    </td>
    
    </tr>
    
    </tbody>
    
    </table>
    
    <script type="text/javascript">
    var score;
    var x = 0;
    while (x=x)
      {
      var randomnum = (Math.round(Math.random()*4));
      if (randomnum == 0)
      {
      var flick;
      var pull;
      var spin;
      var wipe;
      var twist;
      if (twist == 1)
        {
         score++;
        }
      if (pull == 1 || spin == 1 || wipe == 1 || flick == 1)
        {
         break;
        }
      }
    else if (randomnum == 1)
      {
      var flick;
      var spin;
      var wipe;
      var twist;
      var pull;
      if (pull == 1)
        {
         score++;
        }
      if (flick == 1 || spin == 1 || wipe == 1 || twist == 1) 
        {
         break;
        }
      }
    else if (randomnum == 2)
      {
      var flick;
      var pull;
      var spin;
      var wipe;
      var twist;
      if (wipe == 1)
        {
         score++;
         alert("you scored!");
        }
      if (pull == 1 || spin == 1 || flick == 1 || twist == 1) 
        {
         break;
        }
      }
    else if (randomnum == 3)
      {
      var flick;
      var pull;
      var spin;
      var wipe;
      var twist;
      if (spin == 1)
        {
         score++;
        }
      if (pull == 1 || flick == 1 || wipe == 1 || twist == 1)
        {
         break;
        }
      }
    else 
      {
      var flick;
      var pull;
      var spin;
      var wipe;
      var twist;  
      if (flick == 1)
        {
         score++;
        }
      if (pull == 1 || spin == 1 || wipe == 1 || twist == 1)
        {
         break;
        }
      }
     alert("Your score is " + score + "!");
    }
    </script>
    
    <noscript>
    you do not have javascript!
    </noscript>
    
    </body>
    
    </html>

  • #2
    Regular Coder
    Join Date
    Mar 2008
    Posts
    301
    Thanks
    2
    Thanked 30 Times in 30 Posts
    Well, here's a pseudo-random number function:

    Code:
    	  /* x is upper limit +1, so 100 returns anything 0-99, or 1057 anything 0-1056, eC. */
    	pub.PRNGx = function TMath110(x){
    		var nd = new Date();
    		return Math.ceil(  ( (nd.getTime()*9301+49297+(Math.random()*x)) % 233280) / (233280*1.0) *x);
    	};
    So you'd have an array of 'ids', if you want all your photos or vids or whatever hardcoded into the HTML as you've shown. Then call the function as the index - array[PRNGx(5)].style.display = "block" - after you've turned off the display for all blocks.

    I'm sure once you get it running, you can find ways to simplify and clean the code.

  • Users who have thanked fside for this post:

    justinformed (07-19-2009)

  • #3
    GŁtkodierer
    Join Date
    Apr 2009
    Posts
    2,127
    Thanks
    1
    Thanked 426 Times in 424 Posts
    Enough with that pseudo-random number function of yours (or of that professor of yours) already. All those people you're feeding it to have much more pressing problems than the quality of their random numbers, and adding another hard to comprehend snippet to their mumbo jumbo code won't help all that much.

    Now to the real problem:

    This part here
    Code:
    var x = 0;
    while (x = x) {
    is kind of silly. The condition will always evaluate to 0, so the loop will never even run.

    Try
    Code:
    while (true) {
    to at least get your code to run and have a chance of finding out where and how it fails.

  • Users who have thanked venegal for this post:

    justinformed (07-19-2009)

  • #4
    New Coder
    Join Date
    May 2009
    Location
    Yucca Valley, CA
    Posts
    12
    Thanks
    3
    Thanked 0 Times in 0 Posts
    Quote Originally Posted by venegal View Post
    Try
    Code:
    while (true) {
    to at least get your code to run and have a chance of finding out where and how it fails.
    I did that and it worked I also on the line directly below the alert of your score had it break from the loop otherwise it would go forever... lol.
    Ok so I got it to where it will tell me the random number and tell me if I scored (for testing purposes) but the issue is that my onClick operator isn't working.

    My HTML remains the same but my javascript now reads as follows:

    Code:
    <script type="text/javascript">
    var score = 0;
    while (true)
      {
      var randomnum = (Math.round(Math.random()*4));
      alert(randomnum);
      if (randomnum == 0)
      {
      var flick = 0;
      var pull = 0;
      var spin = 0;
      var wipe = 0;
      var twist = 0;
      if (twist == 1)
        {
         score++;
         alert("you scored");
        }
      else
        {
         break;
        }
      }
    else if (randomnum == 1)
      {
      var flick = 0;
      var spin = 0;
      var wipe = 0;
      var twist = 0;
      var pull = 0;
      if (pull == 1)
        {
         score++;
         alert("you scored");
        }
      else 
        {
         break;
        }
      }
    else if (randomnum == 2)
      {
      var flick = 0;
      var pull = 0;
      var spin = 0;
      var wipe = 0;
      var twist = 0;
      if (wipe == 1)
        {
         score++;
         alert("you scored!");
        }
      else 
        {
         break;
        }
      }
    else if (randomnum == 3)
      {
      var flick = 0;
      var pull = 0;
      var spin = 0;
      var wipe = 0;
      var twist = 0;
      if (spin == 1)
        {
         score++;
         alert("you scored"); 
        }
      else
        {
         break;
        }
      }
    else 
      {
      var flick = 0;
      var pull = 0;
      var spin = 0;
      var wipe = 0;
      var twist = 0;  
      if (flick == 1)
        {
         score++;
         alert("you scored");
        }
      else
        {
         break;
        }
      }
     alert("Your score is " + score + "!");
     break;
    }
    </script>
    Last edited by justinformed; 07-19-2009 at 04:01 AM.

  • #5
    Supreme Master coder! Philip M's Avatar
    Join Date
    Jun 2002
    Location
    London, England
    Posts
    18,150
    Thanks
    203
    Thanked 2,547 Times in 2,525 Posts
    var twist = 0;
    if (twist == 1) {

    How can twist ever be 1?

    var pull = 0;
    if (pull == 1)
    {

    How can pull ever be 1?



    "Think about how stupid the average person is, and then realize that half of them are more stupid than that!" - George Carlin

  • #6
    New Coder
    Join Date
    May 2009
    Location
    Yucca Valley, CA
    Posts
    12
    Thanks
    3
    Thanked 0 Times in 0 Posts
    Quote Originally Posted by Philip M View Post
    var twist = 0;
    if (twist == 1) {

    How can twist ever be 1?

    var pull = 0;
    if (pull == 1)
    {

    How can pull ever be 1?
    Look at the html...
    Code:
    <input type="image" width="100" height="42" onClick="twist = 1" name="twist" id="twist" src="twistit.jpg">
    check out the "onClick" operator... I suspect that is where the issue is.
    Last edited by justinformed; 07-19-2009 at 06:57 AM.

  • #7
    Regular Coder
    Join Date
    Mar 2008
    Posts
    301
    Thanks
    2
    Thanked 30 Times in 30 Posts
    Quote Originally Posted by venegal View Post
    Enough with that pseudo-random number function of yours
    Are you serious?

  • #8
    GŁtkodierer
    Join Date
    Apr 2009
    Posts
    2,127
    Thanks
    1
    Thanked 426 Times in 424 Posts
    I'm afraid I am indeed quite serious. It's obvious you want to help, so that's a good thing. The last guy though just didn't know about Math.random, and had it not been for Trinithis he'd still think that rolling your own pseudo random number generator full of magic numbers is the only way to do it.

    This is bad because one of the main reasons why so much terrible code is written is that many people don't want to learn the possibilities of the language (or don't know how) and start writing horrible implementations of functionality that's already there in the core as soon as they know the absolute basics.

    And I think encouraging people to do so instead of pointing them to the built-in stuff is a bad thing.


    Now this guy here already got his (built-in) pseudo random numbers generator working, and it's about the only thing that actually is working in his code, so should we really change that?

    You could argue that although it's not the help he really needs there's no harm in swapping that function with a better working one (though it does worsen general understandability).

    But -- did you ever even have a good look at that snippet? Did you try it, did you test it? Or did you just take "the professor" at his word?

    I planned on generating a whole lot of pseudo random numbers with your code and using ENT on them in order to debunk your claim, but I didn't even get to the second step. Here's part of the result of the first one:
    Code:
    9999999999999999999999999999999999999999999999999999991111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222233333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444445555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666667777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888899999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999991111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555566666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666667777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777778888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999991111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
    Do you see a pattern?

    And just so you see that I didn't make that up, here's some quick code:
    Code:
    <html>
    <head><title>pseudorandom numbers</title></head>
    
    <body>
    
    fside:<br />
    <div id="output_fside"></div>
    <br /><br /><br />
    
    Math.random:<br />
    <div id="output_rand"></div>
    
    
    <script type="text/javascript">
    	
    var resultFside = "", resultRand = "";
    
    function fside(x){
    	var nd = new Date();
    	return Math.ceil(  ( (nd.getTime()*9301+49297+(Math.random()*x)) % 233280) / (233280*1.0) *x);
    }
    function rand(x){
    	return Math.ceil(Math.random() * x);
    }
    
    
    for (var i = 0; i < 10000; i++){
    	resultRand += rand(9) + " ";
    	resultFside += fside(9) + " ";
    }
    document.getElementById('output_rand').innerHTML = resultRand;
    document.getElementById('output_fside').innerHTML = resultFside;
    
    </script>
    
    </body>
    
    </html>
    I hope I was able to discourage you from spreading that snippet without being too rude, and I apologize to justinformed that I spent my time on this instead of his problem, but for me those best practices things take precedence over implementation detail stuff. I'll try to get to you soon though.

  • Users who have thanked venegal for this post:

    fside (07-19-2009)

  • #9
    Regular Coder
    Join Date
    Mar 2008
    Posts
    301
    Thanks
    2
    Thanked 30 Times in 30 Posts
    Quote Originally Posted by venegal View Post
    I'm afraid I am indeed quite serious.
    Quite solemn. That's not necessarily being serious.


    Quote Originally Posted by venegal View Post
    It's obvious you want to help, so that's a good thing.
    I'm cutting and pasting EXACTLY what I wrote - here, in this thread:

    ----------

    So you'd have an array of 'ids', if you want all your photos or vids or whatever hardcoded into the HTML as you've shown. Then call the function as the index - array[PRNGx(5)].style.display = "block" - after you've turned off the display for all blocks.

    -----------------

    Quote Originally Posted by venegal View Post
    people don't want to learn the possibilities of the language
    You're leaving me only to guess what that means to your way of understanding Javascript.


    Quote Originally Posted by venegal View Post
    did you ever even have a good look at that snippet?
    You're flummoxed and angry with what amounts to a typo. But a typo it is. So . . . it's okay that you're angry. I get that.

    Try this:

    Math.ceil( ( (nd.getTime()*(9301+49297+(Math.random()*x)) % 233280)) / (233280*1.0) *x);

    But remember, now, just because a number shows up twice, that DOESN'T necessarily mean it's less random. It's a better pseudo-random generator. Now, again, random is something else. And if you need to understand the difference, I'll give it my best - because as you say, it's good I wanna hep.

  • #10
    GŁtkodierer
    Join Date
    Apr 2009
    Posts
    2,127
    Thanks
    1
    Thanked 426 Times in 424 Posts
    fside: I'll PM you, I don't want to discuss this further on the expense of the OP.

    justinformed:
    Ok, in order to speed things along, let's play a little game here: I tell you what your code does, then you tell me what it should do.

    My turn:
    First a random number is generated. Then a bunch of variables is set to zero. Then, depending on which random number was generated one of them is tested if it equals 1, which of course it does not, since it was just set to 0. Then the code breaks out of the loop, which ends the magic. After that millisecond it takes the code to run the user gets to set different variables to 1 by clicking on images, which except setting those variables does not have any further effect.

  • #11
    Regular Coder
    Join Date
    Mar 2008
    Posts
    301
    Thanks
    2
    Thanked 30 Times in 30 Posts
    Quote Originally Posted by venegal View Post
    First a random number is generated.
    You're verging off into Neverland, here. I wasn't being personal. And I thanked you, in fact, for pointing out the typo. That was my mistake, and I missed it.

    But whatever you onto now, maybe - just take a breath. Step away. Clear your head. Etc.

    Okay?

  • #12
    GŁtkodierer
    Join Date
    Apr 2009
    Posts
    2,127
    Thanks
    1
    Thanked 426 Times in 424 Posts
    Come on now, this isn't even directed at you; there are no hard feelings at all, and I said I would write you a PM.

    It's directed at the original poster, justinformed, whom I'm trying to help by showing him that what his code currently does isn't at all what he wants it to do.

  • #13
    Regular Coder
    Join Date
    Mar 2008
    Posts
    301
    Thanks
    2
    Thanked 30 Times in 30 Posts
    Quote Originally Posted by venegal View Post
    It's directed at the original poster, justinformed, whom I'm trying to help by showing him that what his code currently does isn't at all what he wants it to do.
    I suggested an approach he ought to use, which seemed quite simple.

    At any rate, both wanna help. Who wouldn't like that?

  • #14
    New Coder
    Join Date
    May 2009
    Location
    Yucca Valley, CA
    Posts
    12
    Thanks
    3
    Thanked 0 Times in 0 Posts
    So how do I make a variable be set to one when a certain picture is pressed?

  • #15
    GŁtkodierer
    Join Date
    Apr 2009
    Posts
    2,127
    Thanks
    1
    Thanked 426 Times in 424 Posts
    So you don't want to play my game? That's alright; hearing what you actually want your code to do would have helped though.

    Please read my last post directed at you -- setting those variables when the pictures are pressed is not your problem, that part of your script is working perfectly. Your problem is that setting those variables to 1 doesn't do anything else.

    What you want to do is put some more functionality in the onclick handler, e.g. adding to the score or alerting stuff. Without further explanation I don't fully understand what you are trying to accomplish, so you're on your own on what exactly to put in.


  •  
    Page 1 of 2 12 LastLast

    Tags for this Thread

    Posting Permissions

    • You may not post new threads
    • You may not post replies
    • You may not post attachments
    • You may not edit your posts
    •