implemented answer checking, modulo scores

This commit is contained in:
Stephen McQuay 2013-05-09 00:16:54 -07:00
parent 4fa2e2bbd3
commit 6aaa72475a
2 changed files with 50 additions and 7 deletions

View File

@ -6,19 +6,26 @@ import (
"log" "log"
"math/rand" "math/rand"
"net/http" "net/http"
"strconv"
) )
type prob struct { type prob struct {
Operation string Operation string
First int First int
Second int Second int
Score int
}
type solution struct {
Status bool
Score int
} }
type JsonHandler func(http.ResponseWriter, *http.Request) type JsonHandler func(http.ResponseWriter, *http.Request)
func (h JsonHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) { func (h JsonHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) {
w.Header().Set("Content-Type", "application/json") w.Header().Set("Content-Type", "application/json")
h(w, req) h(w, req)
} }
func problem(w http.ResponseWriter, req *http.Request) { func problem(w http.ResponseWriter, req *http.Request) {
@ -39,17 +46,53 @@ func problem(w http.ResponseWriter, req *http.Request) {
second = rand.Intn(MAX) second = rand.Intn(MAX)
} }
r := prob{operation, first, second} r := prob{operation, first, second, 66}
b, err := json.Marshal(r) b, err := json.Marshal(r)
if err != nil { if err != nil {
log.Fatal("issue with json marshalling") log.Fatal("issue with json marshalling", err)
} }
j := string(b) j := string(b)
fmt.Println(j) fmt.Println("problem", j)
fmt.Fprintf(w, j) fmt.Fprintf(w, j)
} }
func attempt(w http.ResponseWriter, req *http.Request) { func attempt(w http.ResponseWriter, req *http.Request) {
fmt.Fprintf(w, "hello world") first, err := strconv.Atoi(req.FormValue("first"))
if err != nil {
log.Fatal("cannot parse first", err)
}
operation := req.FormValue("operation")
second, err := strconv.Atoi(req.FormValue("second"))
if err != nil {
log.Fatal("cannot parse second", err)
}
var guess int
answer := req.FormValue("answer")
if answer == "" {
guess = 0
} else {
guess, err = strconv.Atoi(answer)
if err != nil {
log.Fatal("cannot parser answer", err)
}
}
if err != nil {
log.Fatal("cannot parse answer", err)
}
var result bool
if operation == "+" {
result = first+second == guess
} else if operation == "-" {
result = first-second == guess
}
b, err := json.Marshal(solution{result, 66})
if err != nil {
log.Fatal("cannot marshal solution", err)
}
j := string(b)
fmt.Println("attempt", j)
fmt.Fprintf(w, j)
} }

View File

@ -20,7 +20,7 @@ function deal_with_answer(e) {
"answer": $("#answer").val(), "answer": $("#answer").val(),
}; };
$.post("/api/v0/attempt/", data, function(d) { $.post("/api/v0/attempt/", data, function(d) {
if(d["status"]) { if(d["Status"]) {
$("body").removeClass("wrong"); $("body").removeClass("wrong");
new_problem(); new_problem();
} }