Newer
Older
skip-web / event / oasis2017 / quiz / hutsu.rb
@houtin houtin on 27 Jul 2017 7 KB プログラムを改良
#!/usr/bin/env ruby
# -*- coding: utf-8 -*- 

require 'cgi'
c = CGI.new(:accept_charset => "UTF-8")

require 'sqlite3'
file = "db/point.sq3"

someVALUES4 = "qb1"
someVALUES5 = "qb2"
someVALUES6 = "qb3"

#cookie関係
cookie_id=c.cookies["id"][0]

form_seikai=c["seikai"]  #もし正解したら?とかじゃない?
form_name=c["playname"]  #名前入力

if cookie_id == nil
  newid = Time.now.to_i.to_s + "/" + rand(99999).to_s
  id = newid
else
  id = cookie_id
end

# idをすぐcookieで相手ブラウザに送る
# 変数の期限を24時間に設定し、expire変数に入れる
expire = (Time.now+24*3600).gmtime.strftime("%a, %d %b %Y %H:%M:%S GMT")
printf("Content-type: text/html; charset=UTF-8\n")
printf("Set-Cookie: id=%s; expires=%s\n\n", id, expire)

db = SQLite3::Database.new(file)
db.execute("PRAGMA foreign_keys=on")
db.execute("CREATE TABLE IF NOT EXISTS " +
           "users(id text primary key, name text, creation text)")
db.execute("CREATE TABLE IF NOT EXISTS " +
           "point(id, keyword text, FOREIGN KEY(id) REFERENCES users(id),UNIQUE(id,keyword))")


if form_seikai > "" && id > ''# もし正解したら
  db.execute("DELETE FROM point WHERE id=?", id)
end

# cookie関連はここまでだと思っている

################################################################## ユーザ登録
playname = form_name
if form_name > ""		# フォームでnameが送られたならそれ優先
  now = Time.now.strftime("%F %T")
  db.execute("REPLACE INTO users VALUES(?, ?, ?)", id, form_name, now);
else				# フォームでnameなければdbから
   dbn = db.execute("SELECT name from users WHERE id=?", id)[0]
  if dbn != nil &&  dbn[0]
    playname = dbn[0]           # データベースからのの名前をプレイ名とする
  end
end

if playname == ""
  print(<<-EOF)
	<form action="#{File.basename($0)}" method="POST">
	<p>プレイ名を入れてください:
	<input type="text" name="playname">
	<input type="submit" valusomeVALUS1 = qa1
e="送信">
	<input type="reset" value="リセット">
	</form>
	EOF
  exit
end
printf("<h1>%sさんのチャレンジ</h1>\n", playname)
################################################################## 初回処理




number = c["rd"]
img = c["img"]
def outinput(value, name)
  printf("<label><input type=\"radio\" name=\"rd\" value=\"%s\">%s</label>", value, name)
end


if number == ""  #初回起動時のみ
  number = "1"    #numberに"1"を代入
end

x = {"1" =>  ["<h1>第一問<br></h1>", {"2" => "玉簾の滝<br>", "3" => "玉糸の滝<br>", "4" => "不動の滝<br>"}],
  "2" => ["<h1>正解!!!!<br></h1>", "<p>動画の視聴は自分の判断で・・・</p>"],
  "3" =>  ["<h1>第一問<br></h1>", {"2" => "玉簾の滝<br>", "3" => "玉糸の滝<b\
r>", "4" => "不動の滝<br>"}],
  "4" =>  ["<h1>第一問<br></h1>", {"2" => "玉簾の滝<br>", "3" => "玉糸の滝<b\
r>", "4" => "不動の滝<br>"}],
  "5" => ["<h1>第二問<br></h1>", {"6" => "七滝<br>", "7" => "十二の滝<br>", "8" => "不動の滝<br>"}],
  "6" => ["<h1>第二問<br></h1>", {"6" => "七滝<br>", "7" => "十二の滝<br>", "8" => "不動の滝<br>"}],
  "7" => ["<h1>正解!!!!<br></h1>", "<p>動画の視聴は自分の判断で・・・</p>"],
  "8" => ["<h1>第二問<br></h1>", {"6" => "七滝<br>", "7" => "十二の滝<br>", "8"=> "不動の滝<br>"}],
  "9" => ["<h1>第三問<br></h1>", {"10" => "市役所前の獅子舞<br>", "11" => "酒田駅前の獅子舞<br>", "12" => "狛犬<br>"}],
  "10" => ["<h1>正解!!!!<br></h1>", "<p>動画の視聴は自分の判断で・・・</p>"],
  "11" => ["<h1>第三問<br></h1>", {"10" => "市役所前の獅子舞<br>", "11" => "酒田駅前の獅子舞<br>", "12" => "狛犬<br>"}],
  "12" => ["<h1>第三問<br></h1>", {"10" => "市役所前の獅子舞<br>", "11" => "酒田駅前の獅子舞<br>", "12" => "狛犬<br>"}],
  "13" => []
}

print(<<-EOF)
<!DOCTYPE html>
<html lang="ja">
<head><title> ふつう</title>
<link rel="stylesheet" type="text/css" href="" >
<meta name="viewport" content="width=device-width">
</head>
<body>

EOF




print"<form method=\"POST\" action=\"./hutsu.rb\">\n"

q = x[number]

#ifで場合分け初めてその問題に行く、正解、不正解1、不正解2,の4通り
if number == "1" || number == "5" || number == "9" #初めて挑戦
  printf("<p>%s</p>", q[0])
  if number == "1"
    printf("<p><a href=\"tama.jpg\"><img src=\"tama_mini.jpg\" alt=\"tama\" height=\"300px\" width=\"300px\"></a></p>")
  elsif number == "5"
    printf("<p><a href=\"12.jpg\"><img src=\"12_mini.jpg\" alt=\"12\" height=\"300px\" width=\"300px\"></a></p>")
  elsif number == "9"
    printf("<p><a href=\"shishi.JPG\"><img src=\"shishi_mini.JPG\" alt=\"shishi\" height=\"333px\" width=\"500px\"></a></p>")
  end
  for v, sel in q[1]
    outinput(v, sel)
  end
  print"<input name=\"ok\" type=\"submit\" value=\"送信\">\n"
  print"<input name=\"ng\" type=\"reset\" value=\"リセット\">\n"
elsif number == "2" || number == "7" || number == "10"          #正解
  printf("%s", q[0])
  printf("%s", q[1])
  if number == "2"
    print("<p>")
    printf("<video controls wight=\"320\"height=\"240\"><source src=\"skipseikai1.mp4\"></video>")
    print("<\p>")
    printf("<label><input type=\"radio\" name=\"rd\" value=\"5\">次へ進もう<br></label>")
    db.execute("REPLACE INTO point VALUES(?,?)",id,someVALUES4)
  elsif number == "7"
    print("<p>")
    printf("<video controls wight=\"320\"height=\"240\"><source src=\"skipseikai4.mp4\"></video>")
    print("<\p>")
    printf("<label><input type=\"radio\" name=\"rd\" value=\"9\">次へ進もう<br></label>")
    db.execute("REPLACE INTO point VALUES(?,?)",id,someVALUES5)
  elsif number == "10"
    print("<p>")
    printf("<video controls wight=\"320\"height=\"240\"><source src=\"skipseikai5.mp4\"></video>")
    print("<\p>")
    printf("<label><input type=\"radio\" name=\"rd\" value=\"13\">次へ進もう<br></label>")
        db.execute("REPLACE INTO point VALUES(?,?)",id,someVALUES6)
  end
  printf("<input type=\"submit\" value=\"次へ\">")
  
elsif number == "3" || number == "6" || number == "11"          #不正解1
  print("<h1>残念!もう一度挑戦だーー</h1>")
  printf("<p>%s</p>", q[0])
  if number == "3"
    printf("<p><a href=\"tama.jpg\"><img src=\"tama_mini.jpg\" alt=\"tama\" height=\"300px\" width=\"300px\"></a></p>")
  elsif number == "6"
    printf("<p><a href=\"12.jpg\"><img src=\"12_mini.jpg\" alt=\"12\" height=\"300px\" width=\"300px\"></a></p>")
  elsif number == "11"
    printf("<p><a href=\"shishi.JPG\"><img src=\"shishi_mini.JPG\" alt=\"shishi\" height=\"333px\" width=\"500px\"></a></p>")
  end
  for v, sel in q[1]
    outinput(v, sel)
  end
  print"<input name=\"ok\" type=\"submit\" value=\"送信\">\n"
  print"<input name=\"ng\" type=\"reset\" value=\"リセット\">\n"
elsif number == "4" || number == "8" || number == "12"        #不正解2
  print("<h1>惜しい!もう一度やってみよーー</h1>")
  printf("<p>%s</p>", q[0])
  if number == "4"
    printf("<p><a href=\"tama.jpg\"><img src=\"tama_mini.jpg\" alt=\"tama\" height=\"300px\" width=\"300px\"></a></p>")
  elsif number == "8"
    printf("<p><a href=\"12.jpg\"><img src=\"12_mini.jpg\" alt=\"12\" height=\"300px\" width=\"300px\"></a></p>")
  elsif number == "12"
    printf("<p><a href=\"shishi.JPG\"><img src=\"shishi_mini.JPG\" alt=\"shishi\" height=\"333px\" width=\"500px\"></a></p>")
  end
  for v, sel in q[1]
    outinput(v, sel)
  end
  print"<input name=\"ok\" type=\"submit\" value=\"送信\">\n"
  print"<input name=\"ng\" type=\"reset\" value=\"リセット\">\n"
elsif number == "13"
  print("<h1>結果発表</h1>")
end
print"</form>\n"
print "</body>\n"
print "</html>\n"