Mercurial > hgrepos > hgweb.cgi > skipweb
changeset 3273:706c45790b74
rogin
author | Minoru Konno <c113069@e.koeki-u.ac.jp> |
---|---|
date | Fri, 22 Jul 2016 21:14:15 +0900 |
parents | 09d2631e8230 |
children | dc2eecba9982 |
files | event/oasis2016/attack.css event/oasis2016/db/point.yaml event/oasis2016/don/1.png event/oasis2016/don/ckgame.rb event/oasis2016/rogin.rb event/oasis2016/sea/ckgame.rb event/oasis2016/tori/ckgame.rb |
diffstat | 7 files changed, 100 insertions(+), 22 deletions(-) [+] |
line wrap: on
line diff
--- a/event/oasis2016/attack.css Fri Jul 22 15:23:43 2016 +0900 +++ b/event/oasis2016/attack.css Fri Jul 22 21:14:15 2016 +0900 @@ -37,3 +37,7 @@ div.sea div:first-child {left: 0px; top: 0px} div.sea div:nth-child(2) {position: absolute; left: 0px; top: 150px;} div.sea div:nth-child(3) {position: absolute; left: 0px; top: 300px;} + + + +.jyama{color:#f9f5a9;}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/event/oasis2016/db/point.yaml Fri Jul 22 21:14:15 2016 +0900 @@ -0,0 +1,6 @@ +--- +info: + ! '': + name: aa + bingo: + "きゅうり": true
--- a/event/oasis2016/don/ckgame.rb Fri Jul 22 15:23:43 2016 +0900 +++ b/event/oasis2016/don/ckgame.rb Fri Jul 22 21:14:15 2016 +0900 @@ -1,7 +1,7 @@ #!/usr/bin/env ruby # -*- coding: utf-8 -*- require 'yaml/store' -file = "db/point.yaml" +file = "../db/point.yaml" bingoword = %w(きゅうり えび どんぶり さーもん まぐろ ほし わさび たまご まる) # 正解キーワード9つ require 'cgi' @@ -15,13 +15,13 @@ form_name=c["playname"] # nameをフォームから取得(もしあれば) form_kwd=c["keyword"] # keywordも取得(もしあれば) -if cookie_id == nil # (1)もしcookieからのidがなければ新規生成 +#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とする +#else # (2)cookieからのidがあればそれをidとする id=cookie_id -end +#end # idをすぐcookieで相手ブラウザに送る # 変数の期限を24時間に設定し、expire変数に入れる @@ -46,17 +46,18 @@ 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個あるよ♪" - guide = "キーワードを入れてください" - input = '<input name="keyword">' - seikai = '<img src="kaisendon.jpg" width="600px" height="600px">' + seikai = + '<img src="kaisendon.jpg" width="600px" height="600px">' # プレイ名設定済みで、さらにキーワードが入力されていたら if form_kwd > "" index = bingoword.index(form_kwd) # 配列から入力単語(form_kwd)を探索 - hello = sprintf("現在のポイントは %dpt です。", 25*point) + #hello = sprintf("現在のポイントは %dpt です。", 25*point) if index # 見付かった! その単語をハッシュのキーとして適当に値(true)を入れておく info[id]["bingo"][bingoword[index]] = true @@ -104,11 +105,9 @@ <h2>%s</h2> <h2>%s</h2> <p>%s</p> -<p>開けたパネル(%d/%d): %s</p> +<p>開けたパネル(%d/%d)</p> <form action="?" method="GET"> -<p>%s: %s<br> -<input type="submit" value="送信"> -<input type="reset" value="リセット"></p> +<p class=jyama>%s: %s: %s: %s</p> </form> <p>%s</p> <div class="don"> @@ -123,5 +122,5 @@ <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,) + umi, title, setumei, setumei2, hello, point, bingoword.length, guide, input, submit, reset, seikai, kaisen, kaisen4, kaisen7, kaisen2, kaisen5, kaisen8, kaisen3, kaisen6, kaisen9,) end
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/event/oasis2016/rogin.rb Fri Jul 22 21:14:15 2016 +0900 @@ -0,0 +1,77 @@ +#!/usr/bin/env ruby +# -*- coding: utf-8 -*- +require 'yaml/store' +file = "db/point.yaml" + +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をフォームから取得(もしあれば) + + +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 + if !info[id]["name"] # もしユーザのプレイ名が未設定なら + umi = '<img src="./img/umi.png" width="800px" height="600px">' + title = "ようこそ!" + hello = "QRコードを読みこんで間違い探しをしましょう!" + guide = "まずはあなたのプレイ名を決めます" + input = '<input name="playname">' + submit = '<input type="submit" value="送信">' + reset = '<input type="reset" value="リセット">' + else # プレイ名設定済みならキーワード入力 + title = "登録完了!" + hello = "プレイ名の登録は完了しました!" + guide = "QRコードを読みこんで楽しみましょう♪" + 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> +<form action="?" method="GET"> +<p> %s<br> +%s: %s</p> +</body></html> +EOF + umi, title, hello, guide, input, submit, reset,) +end +
--- a/event/oasis2016/sea/ckgame.rb Fri Jul 22 15:23:43 2016 +0900 +++ b/event/oasis2016/sea/ckgame.rb Fri Jul 22 21:14:15 2016 +0900 @@ -49,7 +49,7 @@ title = sprintf("%s さんのホーム", info[id]["name"]) setumei = "絵から間違いを3個見つけよう!" setumei2 = "間違っている絵のパネルは全部で3個あるよ♪" - guide = "キーワードを入れてください" + guide = "QRコードを読みこんでパネルを埋めよう! input = '<input name="keyword">' seikai = '<img src="ans.jpg" width="450px" height="450px">' # プレイ名設定済みで、さらにキーワードが入力されていたら
--- a/event/oasis2016/tori/ckgame.rb Fri Jul 22 15:23:43 2016 +0900 +++ b/event/oasis2016/tori/ckgame.rb Fri Jul 22 21:14:15 2016 +0900 @@ -51,14 +51,6 @@ setumei2 = "間違っている絵のパネルは全部で3個あるよ♪" seikai = '<img src="tori.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メソッドで 「 」 で括った単語を集めて