0

I need some help on an assignment that I need to do. Basically the question is a number guessing game. We're assigned a number in the interval [0,1023] based on our student number and we have 11 guesses to get the right number. I know I have to use a binary search to get the number, my only problem is connecting to the server and getting a result.

We're given this:

A sample request looks as follows:

http://142.132.145.50/A3Server/NumberGuess?snum=1234567&callback=processResult&guess=800

And also given that the request returns the following parameters: 1: A code to determine if your guess is equal, less than or greater than the number 2: Message string 3: Number of guesses made by my application

This is what I've tried so far, just as a test to get the server request working. All I get in return is "object HTMLHeadingElement"

window.onload = function() {
    newGuess();
}

function newGuess() {
    var url = "http://142.132.145.50/A3Server/NumberGuess?snum=3057267&callback=processResult&guess=600";

    var newScriptElement = document.createElement("script");
    newScriptElement.setAttribute("src", url);
    newScriptElement.setAttribute("id", "jsonp");

    var oldScriptElement = document.getElementById("jsonp");
    var head=document.getElementsByTagName("head")[0];
    if (oldScriptElement == null) {
        head.appendChild(newScriptElement);
    } else {
        head.replaceChild(newScriptElement, oldScriptElement);
    }
}

function processResult(code,message,guesses) {
    var code = document.getElementById("code");
    var message = document.getElementById("message");
    var guesses = document.getElementById("guesses");

    code.innerHTML = code;
    message.innerHTML = message;
    guesses.innerHTML = guesses;
}

EDIT: Current state of my code.

window.onload = function() {
    min = 0;
    max = 1023;
    mid = 0;

        setInterval(newGuess,1000);

};

function newGuess() {
    mid = Math.floor((max-min)/2);
    var url = "http://142.132.145.50/A3Server/NumberGuess?snum=3057267&callback=processResult&guess="+mid;

    var newScriptElement = document.createElement("script");
    newScriptElement.setAttribute("src", url);
    newScriptElement.setAttribute("id", "jsonp");

    var oldScriptElement = document.getElementById("jsonp");
    var head=document.getElementsByTagName("head")[0];
    if (oldScriptElement == null) {
        head.appendChild(newScriptElement);
    } else {
        head.replaceChild(newScriptElement, oldScriptElement);
    }
}

function processResult(codeJ,messageJ,guessesJ) {
    code = document.getElementById("code");
    message = document.getElementById("message");
    guesses = document.getElementById("guesses");

    code.innerHTML = codeJ;
    message.innerHTML = messageJ;
    guesses.innerHTML = guessesJ;

    if(codeJ == 0){
        return;
    }else if(codeJ == -1){
       min = mid + 1;
    }else if(codeJ == 1){
       max = mid -1;
    }
    console.log(mid);
}

1 Answer 1

1

Check your variable-names. You are overwriting the function-patameters.

Something like

code.innerHTML = code;
message.innerHTML = message;
guesses.innerHTML = guesses;

just CAN'T work, you should see the problem yourself...

Sign up to request clarification or add additional context in comments.

1 Comment

Oh jeeze, I'm not sure why I didn't notice this before. I've been trying to get this to work for so long, must have fried myself out.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.