Mercurial > hgrepos > hgweb.cgi > skipweb
view event/oasis2016/don/ckgame.rb @ 3273:706c45790b74
rogin
author | Minoru Konno <c113069@e.koeki-u.ac.jp> |
---|---|
date | Fri, 22 Jul 2016 21:14:15 +0900 |
parents | 857c551a39dc |
children | a6956619207c |
line wrap: on
line source
#!/usr/bin/env ruby # -*- coding: utf-8 -*- require 'yaml/store' file = "../db/point.yaml" bingoword = %w(きゅうり えび どんぶり さーもん まぐろ ほし わさび たまご まる) # 正解キーワード9つ require 'cgi' c = CGI.new(:accept_charset => "UTF-8") # 前回のアクセスで既にcookieが定義されていたら取得 # ブラウザからのcookieは、c.cookies[変数名][0] で受け取る cookie_id=c.cookies["id"][0] # 前回のアクセスで入力された値を取得 form_name=c["playname"] # nameをフォームから取得(もしあれば) form_kwd=c["keyword"] # keywordも取得(もしあれば) #if cookie_id == nil # (1)もしcookieからのidがなければ新規生成 # 新規idは、現在時刻を秒(to_i)にした文字列(to_s)と乱数の組み合わせ newid = Time.now.to_i.to_s + "/" + rand(99999).to_s id=newid # 新規idをidとする #else # (2)cookieからのidがあればそれをidとする 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 = YAML::Store.new(file) db.transaction do info = db["info"] = db.fetch("info", Hash.new) if !info[id] # もしそのユーザ情報が未登録(空)なら info[id] = Hash.new # 新規ハッシュを割り当てる end if form_name > "" # formからの名前設定がもしあれば info[id]["name"] = form_name # それをユーザ情報に記録 info[id]["bingo"] = Hash.new # 正解した単語保存用のハッシュも作成 end point = 0# 開始直後は0点 if !info[id]["name"] # もしユーザのプレイ名が未設定なら umi = '<img src="umi.png" width="800px" height="600px">' title = "ようこそ!" hello = "まちがいさがしスタート" guide = "あなたのプレイ名を決めます" input = '<input name="playname">' submit = '<input type="submit" value="送信">' reset = '<input type="reset" value="リセット">' else # プレイ名設定済みならキーワード入力 title = sprintf("%s さんのホーム", info[id]["name"]) setumei = "海鮮丼の絵から間違いを3個見つけよう!" setumei2 = "間違っている絵のパネルは全部で9個あるよ♪" seikai = '<img src="kaisendon.jpg" width="600px" height="600px">' # プレイ名設定済みで、さらにキーワードが入力されていたら if form_kwd > "" index = bingoword.index(form_kwd) # 配列から入力単語(form_kwd)を探索 #hello = sprintf("現在のポイントは %dpt です。", 25*point) if index # 見付かった! その単語をハッシュのキーとして適当に値(true)を入れておく info[id]["bingo"][bingoword[index]] = true end end point = info[id]["bingo"].length # ハッシュの長さで正解数が分かる bingos = info[id]["bingo"].keys.collect do |x| "「" + x + "」"# collectメソッドで 「 」 で括った単語を集めて end.join(", ")# joinメソッドで ,(カンマ) 区切りでつなげる kaisen = ""; kaisen2 = ""; kaisen3 = ""; kaisen4 = ""; kaisen5 = ""; kaisen6 = ""; kaisen7 = ""; kaisen8 = ""; kaisen9 = "" info[id]["bingo"].keys.each do |f| if /きゅうり/ =~ f kaisen = '<img src="kaisendon2-0.jpg" width="200px" height="200px">' elsif /えび/ =~ f kaisen2 = '<img src="kaisendon2-1.jpg" width="200px" height="200px">' elsif /どんぶり/ =~ f kaisen3 = '<img src="kaisendon2-2.jpg" width="200px" height="200px">' elsif /さーもん/ =~ f kaisen4 = '<img src="kaisendon2-3.jpg" width="200px" height="200px">' elsif /まぐろ/ =~ f kaisen5 = '<img src="kaisendon2-4.jpg" width="200px" height="200px">' elsif /ほし/ =~ f kaisen6 = '<img src="kaisendon2-5.jpg" width="200px" height="200px">' elsif /わさび/ =~ f kaisen7 = '<img src="kaisendon2-6.jpg" width="200px" height="200px">' elsif /たまご/ =~ f kaisen8 = '<img src="kaisendon2-7.jpg" width="200px" height="200px">' elsif /まる/ =~ f kaisen9 = '<img src="kaisendon2-8.jpg" width="200px" height="200px">' end end end printf(<<-EOF, <!DOCTYPE html> <html lang="ja"> <head> <title>まちがいみつけでみっちゃ</title> <link rel="stylesheet" type="text/css" href="../attack.css"> </head> <body> <img src="../img/logo.png" width="900px" height="100px"> <p>%s</p> <h1>%s</h1> <h2>%s</h2> <h2>%s</h2> <p>%s</p> <p>開けたパネル(%d/%d)</p> <form action="?" method="GET"> <p class=jyama>%s: %s: %s: %s</p> </form> <p>%s</p> <div class="don"> <div>%s</div> <div>%s</div> <div>%s</div> <div>%s</div> <div>%s</div> <div>%s</div> <div>%s</div> <div>%s</div> <div>%s</div></div> </body></html> EOF umi, title, setumei, setumei2, hello, point, bingoword.length, guide, input, submit, reset, seikai, kaisen, kaisen4, kaisen7, kaisen2, kaisen5, kaisen8, kaisen3, kaisen6, kaisen9,) end