Mercurial > hgrepos > hgweb.cgi > skipweb
view event/oasis2016/sea/ckgame.rb @ 1526:53fcfc712dbf
html¹¹¿·
author | OOTANI Hiroyuki <c115036@g.koeki-u.ac.jp> |
---|---|
date | Wed, 20 Jul 2016 11:09:10 +0900 |
parents | 551c27ff32b3 |
children | 7fd8a7df98d6 |
line wrap: on
line source
#!/usr/bin/env ruby # -*- coding: utf-8 -*- require 'yaml/store' file = "db/point2.yaml" bingoword = %w(ã‹ã‚‚ã‚ ã¨ã³ã†ãŠ ã²ã¨ã§) # æ£è§£ã‚ーワード3㤠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"] # ã‚‚ã—ユーザã®ãƒ—レイåãŒæœªè¨å®šãªã‚‰ title = "よã†ã“ã!" hello = "ã¾ã¡ãŒã„ã•ãŒã—スタート" guide = "ã‚ãªãŸã®ãƒ—レイåを決ã‚ã¾ã™" input = '<input name="playname">' else # プレイåè¨å®šæ¸ˆã¿ãªã‚‰ã‚ーワード入力 title = sprintf("%s ã•ã‚“ã®ãƒ›ãƒ¼ãƒ ", info[id]["name"]) setumei = "çµµã‹ã‚‰é–“é•ã„を3個見ã¤ã‘よã†!" setumei2 = "é–“é•ã£ã¦ã„ã‚‹çµµã®ãƒ‘ãƒãƒ«ã¯å…¨éƒ¨ã§3個ã‚るよ♪" guide = "ã‚ーワードを入れã¦ãã ã•ã„" input = '<input name="keyword">' seikai = '<img src="ans.jpg" width="450px" height="450px">' # プレイåè¨å®šæ¸ˆã¿ã§ã€ã•ã‚‰ã«ã‚ーワードãŒå…¥åŠ›ã•ã‚Œã¦ã„ãŸã‚‰ 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メソッド㧠,(カンマ) 区切りã§ã¤ãªã’ã‚‹ boat = ""; boat2 = ""; boat3 = ""; info[id]["bingo"].keys.each do |f| if /ã‹ã‚‚ã‚/ =~ f boat = '<img src="boat-0.png" width="450px" height="151px">' elsif /ã¨ã³ã†ãŠ/ =~ f boat2 = '<img src="boat-1.png" width="450px" height="147px">' elsif /ã²ã¨ã§/ =~ f boat3 = '<img src="boat-2.png" width="450px" height="152px">' 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"> <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> </body></html> EOF title, setumei, setumei2, hello, point, bingoword.length, bingos, guide, input, seikai, boat, boat2, boat3 ) end