Mercurial > hgrepos > hgweb.cgi > skipweb
view event/oasis2017/ikusei/ikusei.rb @ 3462:bb651eea9b3d
audio Êѹ¹5
author | OOTANI Hiroyuki <c115036@g.koeki-u.ac.jp> |
---|---|
date | Fri, 28 Jul 2017 20:44:23 +0900 |
parents | 88e1f16d5b95 |
children | 3fd58f67d1a5 |
line wrap: on
line source
#!/usr/bin/env ruby # -*- coding: utf-8 -*- # # 残る課題 [cssã®èª¿æ•´] [他ゲームã¨ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ã®é€£ç³»] # ユーザåをクリアã—ãŸã„ã¨ã㯠http:/..../quiz.rb?reset require 'cgi' require 'csv' c = CGI.new(:accept_charset => 'utf-8') require 'sqlite3' file = "../db/point.sq3" myname = File.basename($0) #cookie関係 cookie_id=c.cookies["id"][0] form_name =c["playname"] # åå‰å…¥åŠ› form_mode =c["mode"] # å•é¡Œç¨®åˆ¥ form_qn =c["qn"] # å•é¡Œç•ªå· form_rd =c["rd"] # 解ç”ç•ªå· 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))") ################################################################## ユーザ登録 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 == "" || ARGV[0] == "reset" print(<<-EOF) <h1>庄内雑å¦ã‚¯ã‚¤ã‚ºãƒ¦ãƒ¼ã‚¶ãƒ¼ç™»éŒ²</h1> <form action="#{myname}" method="POST"> <p>プレイåを入れã¦ãã ã•ã„: <input type="text" name="playname"> <input type="submit" value="é€ä¿¡"> <input type="reset" value="リセット"> </form> <h1>注æ„:音ãŒã§ã¾ã™éŸ³é‡ã«æ³¨æ„ã—ã¦ãã ã•ã„</h1> EOF exit end printf("<h1>%sã•ã‚“ã®ãƒãƒ£ãƒ¬ãƒ³ã‚¸</h1>\n", playname) ################################################################## åˆå›žå‡¦ç† number = c["rd"] def outinput(value, label) printf("<label><input type=\"radio\" name=\"rd\" value=\"%s\">%s</label>", value, label) end def imgsrc(img) printf("<a href=\"%s.png\"\><img src=\"%s.png\"></a>", img, img) end def ongaku(oto) printf("<audio controls false preload=\"auto\"> <source src=\"%s\"></audio>",oto) end ## å•é¡Œæƒ…å ±ã®èªã¿è¾¼ã¿ question = {} n_question = 0 CSV.foreach("ikusei.csv", encoding: 'utf-8') do |row| mode = row.shift # å…ˆé = モード next if /^#/ =~ mode # 見出ã—è¡Œã¯ã‚¹ã‚ップ if question[mode] == nil question[mode] = {} end qn = row.shift # å•é¡Œç•ªå· question[mode][qn] = row # {1 => [tama, 玉簾, ....]} n_question += 1 # 全部ã§ä½•å•ã‚ã‚‹ã‹ end #print question n_question -=1 puts("<!DOCTYPE html>\n<html lang=\"ja\">") if form_mode > "" quiz_mode = form_mode else quiz_mode = ARGV[0] || "kayaku" # kantan, futsu, muzukashi end if not /kayaku|me|daizu|tori|neko/ =~ quiz_mode then print(<<-EOF) <head><title>ERROR</title></head><body> <h1>無効ãªã‚³ãƒ¼ãƒ‰ã§ã™</h1></body></html> EOF exit 0 end level = {"kayaku" => "ç«è–¬", "me"=>"芽", "daizu"=>"大豆", "tamago"=>"é³¥", "neko"=>"ãã“"}[quiz_mode] print(<<-EOF) <!DOCTYPE html> <html lang="ja"> <head><title>#{level}</title> <link rel="stylesheet" type="text/css" href="quizpg.css" > <meta name="viewport" content="width=device-width,initial-scale=1"> </head> <body> EOF print"<html><head><title>クイズ</title></head><body>\n" print"<form method=\"POST\" action=\"./#{myname}\">\n" q = question[quiz_mode] # 3種ã®ã†ã¡ã©ã‚Œã‹ if form_qn == nil || form_qn == "" # å•é¡Œç•ªå·æœªæŒ‡å®šãªã‚‰å•1 form_qn = "1" end ansinfo = q[form_qn] # 今ã®å•ã®é¸æŠžè‚¢ã¨è§£ç”é…列 # ↑㧠[hiyori,舞鶴公園,日和山公園,飯森山公園,2,skipseikai1.mp4] å„々文å—列 mondai,image, s1, s2, s3, ans, movie,movie2 = *ansinfo ###############å‹•ç”»(音) if number == ans then print "<h2>æ£è§£!!</h2>" print("<p>") db.execute("REPLACE INTO point VALUES(?, ?)", id, "quiz-" + quiz_mode + "-" + form_qn) # ex. quiz-kantan-1 printf(<<-EOF, movie, quiz_mode, 1+form_qn.to_i) <p> <audio controls autoplay loop false preload=\"auto\"><source src=\"%s\"></audio> </p> <p><input type="hidden" name="mode" value="%s"> <input type="hidden" name="qn" value="%d"></p> EOF printf("<audio controls autoplay loop false preload=\"auto\"><source src=\"%s\"></audio>",movie) ################ # form_qn ã‚’1ãµã‚„ã—㦠hidden ã«ä»•è¾¼ã‚€ if form_qn.to_i < q.length # ã¾ã 次ã®å•ãŒã‚ã‚‹ puts('<p><input type="submit" value="次ã®å•é¡Œã¸é€²ã‚€"></p>') else # 用æ„ã—ãŸå•ã™ã¹ã¦çµ‚了 puts("<p>ãŠã‚ã§ã¨ã†!</p>") n_right = db.execute("SELECT count(*) FROM point WHERE id=?", id)[0][0] printf(<<-EOF,n_question, n_right.to_i) <p>å…¨%då•ä¸ %då•æ£è§£ã—ã¾ã—ãŸã€‚</p> EOF puts("<p>å†ç”Ÿãƒœã‚¿ãƒ³ã‚’押ã—ã¦ã¤ãªãŒã£ãŸéŸ³æ¥½ã‚’èžã“ã†</p>") printf("<audio controls autoplay loop false preload=\"auto\"><source src=\"%s\"></audio>",movie2) if n_question == n_right.to_i puts("<p>å…¨å•ã‚¯ãƒªã‚¢é”æˆ!") end end else printf("<h1>第%då•</h1>\n", form_qn) if /\d/ =~ number puts("<h2>残念! ã‚‚ã†ä¸€åº¦!</h2>") end printf("<h1>%s</h1>\n",mondai ) printf("<p>") imgsrc(image) printf("</p>") n=0 for i in [s1, s2, s3] do outinput((n+=1).to_s, i) # <input name="rd" ....> puts("<br>") end printf(<<-EOF, quiz_mode, form_qn) <input type="hidden" name="mode" value="%s"> <input type="hidden" name="qn" value="%s"> <p><input type="submit" value="é€ä¿¡"> <input type="reset" value="リセット"></p> EOF end print"</form>\n" print "</body>\n" print "</html>\n"