view event/oasis2016/don/ckgame.rb @ 1526:53fcfc712dbf

html¹¹¿·
author OOTANI Hiroyuki <c115036@g.koeki-u.ac.jp>
date Wed, 20 Jul 2016 11:09:10 +0900
parents 0bdb5d686599
children 99954b3ef28b
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">'
  else                          # プレイå設定済ã¿ãªã‚‰ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰å…¥åŠ›
    title = sprintf("%s ã•ã‚“ã®ãƒ›ãƒ¼ãƒ ", info[id]["name"])
    setumei = "海鮮丼ã®çµµã‹ã‚‰é–“é•ã„を3個見ã¤ã‘よã†!"
    setumei2 = "é–“é•ã£ã¦ã„ã‚‹çµµã®ãƒ‘ãƒãƒ«ã¯å…¨éƒ¨ã§ï¼™å€‹ã‚るよ♪"
    guide = "キーワードを入れã¦ãã ã•ã„"
    input = '<input name="keyword">'
    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): %s</p>
<form action="?" method="GET">
<p>%s: %s<br>
<input type="submit" value="é€ä¿¡">
<input type="reset" value="リセット"></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, bingos, guide, input, seikai, kaisen, kaisen4, kaisen7, kaisen2, kaisen5, kaisen8, kaisen3, kaisen6, kaisen9,)
end

yatex.org