Mercurial > hgrepos > hgweb.cgi > skipweb
changeset 582:345b851fea56
merged
author | MURAKAMI Masaki <c112124@h.koeki-u.ac.jp> |
---|---|
date | Fri, 25 Jul 2014 16:16:58 +0900 |
parents | c519d3b947b5 |
children | 79ce5c5b2e21 |
files | minato2014/#Bingo.rb# minato2014/.#Bingo.rb minato2014/bacup/Bingo1.rb minato2014/chusen.rb minato2014/etsuran.rb |
diffstat | 5 files changed, 446 insertions(+), 537 deletions(-) [+] |
line wrap: on
line diff
--- a/minato2014/#Bingo.rb# Fri Jul 25 16:10:04 2014 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,446 +0,0 @@ -#!/usr/bin/env ruby -# -*- coding: utf-8 -*- - -require 'sqlite3' -require 'cgi' -require 'date' -require './sub.rb' -require 'net/http' - -c = CGI.new(:tag_maker => "html5", :accept_charest => "UTF-8") -db = SQLite3::Database.new("sql/stamp.sq3") - -id = c.cookies["id"][0].to_i -magic = c.cookies["magic"][0].to_i -err = 0 # 不正な動きであれば負の値になる -sidesize = 3 -message = "はりきって行きましょう!<br>" # ビンゴ用テキスト - -print("Content-type: text/html; charset=UTF-8 \n\n") - -### DROP TABLE ### - -getcom = ARGV[0].to_s -drop = 'DROP TABLE main ;' -if getcom == 'ududlrllba' - db.execute(drop) -end - -###### - -### DELETE TABLE ### - -del = 'DELETE FROM main WHERE id=?' -if getcom == 'ududlrlrba' - db.execute(del, id) -end - -###### - -##### CHECKING UID ##### - -sql = "SELECT stamp_status, stamp_img, name, job, sex, exp FROM main WHERE id=? AND magic=?" -begin - user_data = db.execute(sql, id, magic) -rescue - user_data = [] -end - -if user_data == [] # ログインエラー(-1) - err -= 1 -end - -### LOGIN ERROR HTML ### - -if err == -1 - print' -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" - "http://www.w3.org/TR/html4/strict.dtd"> -<html> -<head> -<meta http-equiv="refresh" content="2.5;http://skip.koeki-prj.org/minato2014/account.html"> -</head> -<title>たいとる</title> -<body> -' -print' -<p> ログインに失敗しました。 </p> -<p> -アカウント登録ページへ接続中…<br> -* 3秒経っても移動しない場合は<a href="account.html">こちら</a>から移動して下さい。 -</p> -</body> -</html> -' - exit -end - -###### - -########## - -##### RE-ARRAYING STAMP_STATUS AND STAMP_IMG ##### - -# stamp status -stamp_st = user_data[0][0] -stamp_st = stamp_st.split(//) # 一文字ずつ分けて配列にする -stamp_st = stamp_st.map {|s| s.to_i} # 配列内の文字列を数列になおす - -# stamp img -stamp_img = user_data[0][1] -stamp_img = stamp_img.split(",") # 文字列を","で区切って配列にする - -########## - -##### STAMPPING ##### - -### Making randam number ### - -def taiou(sidesize) - srand(123456789) - stamp = Hash.new("n") - stamp_name = ["kamo", "kite", "mame", "mo2usa", "inuwasi", "hanabu", "be", "UMIMARU", "pero"] - (sidesize**2).times do |n| - stamp[rand(10000000)] = stamp_name[n] - end - stamp -end - -###### - -##### Checking bingo method ##### - -def bingocheck(start, sidesize, stepon, stamp, decision, bingo) - nbox = [] - setbox = Hash.new - if sidesize == stepon - x = sidesize - else - x = 1 - end - x.times do |m| - start.step(sidesize*sidesize - 1, stepon) do |n| - nbox << n + m - if nbox.length == sidesize - dbox = Array.new(0) # next bingo or reach numbers(bingoed -> nothing) - for i in nbox - if stamp[i] == 0 - dbox << i - end - end - # sidesizeにdecisionの値を加えることで、ビンゴ、次ビンゴ、リーチをそれぞれdecisionに0,1,2を加えることで表現。 - if dbox.length == decision - setbox[dbox] = nbox - bingo << setbox - setbox = Hash.new - nbox = [] - else - nbox = [] - end - end - end - end -end -# bingo[{[ビンゴまたはリーチに必要な番号] => [ビンゴまたはリーチのラインを形成する番号]}] -########## - -bingo = # 現在のビンゴ数 - -### Checking Access Cord(AC) ### - -getAC = ARGV[0].to_i # URL?以降の引数を取得 -rightAC = taiou(sidesize) # taiouで生成したACのハッシュ -#p rightAC -rightAC = rightAC[getAC] # ACが正しければスタンプ名が入り、異なる場合はn - -##### ACCESS LOG ##### -t = Time.now -time = (t.hour * 3600) + (t.min * 60) + t.sec - -## Checking sql_master table. If sqlite_master don't have tablename, it create. - -sql_master = "SELECT name FROM sqlite_master WHERE name='logs';" -check_master = db.execute(sql_master) -sql_logs = 'CREATE TABLE logs( -id INTEGER PRIMARY KEY AUTOINCREMENT, -uid INTEGER, -ac TEXT, -time INTEGER); -' -if check_master == [] - db.execute(sql_logs) -end - -########## - -begin - get_log = 'SELECT ac, time FROM logs WHERE uid=(SELECT MAX(id) FROM logs WHERE uid=?);' # ユーザーの最新のログ情報を取得 - log_check = db.execute(get_log, id) -rescue - print'GETTING LOG ERROR!' -end -begin - log = 'INSERT INTO logs(uid, ac, time) VALUES(?, ?, ?)' - db.execute(log, id, rightAC, time) -rescue - print'INSERT LOG ERROR!' -end -# /* memo: 再度同じようなシステムを作る際はスタンプ用のテーブルがほしい。 */ # - -########## - -### ビンゴしたラインを判定(decision = 0) ### -bingo = [] -# 横 -bingocheck(0, sidesize, 1, stamp_st, 0, bingo) -# 縦 -bingocheck(0, sidesize, sidesize, stamp_st, 0, bingo) -# 左斜め -bingocheck(0, sidesize, sidesize+1, stamp_st, 0, bingo) -# 右斜め -bingocheck(sidesize-1, sidesize, sidesize-1, stamp_st, 0, bingo) -####### - -bingo = bingo.length # ビンゴの数 -last_bingo = bingo - -if rightAC != "n" # rightACが正しければ - - ### Update Stamp_status And Stamp_img ### - - # Replacing Image # - - index_st = [] - stamp_st.length.times { |c| - if stamp_st[c] == 0 - index_st << c - end - } - - ### リーチ(decision = 1)# [{[ビンゴの番号] => [リーチを構成する数]}] - reach = [] - # 横 - bingocheck(0, sidesize, 1, stamp_st, 1, reach) - # 縦 - bingocheck(0, sidesize, sidesize, stamp_st, 1, reach) - # 左斜め - bingocheck(0, sidesize, sidesize+1, stamp_st, 1, reach) - # 右斜め - bingocheck(sidesize-1, sidesize, sidesize-1, stamp_st, 1, reach) - ####### - - begin - reach = reach[0].flatten(2)[0] # ビンゴの番号のみ抽出 - rescue - reach = [] - end - - ### ビンゴしたラインを判定(decision = 0) ### - bingo = [] - # 横 - bingocheck(0, sidesize, 1, stamp_st, 0, bingo) - # 縦 - bingocheck(0, sidesize, sidesize, stamp_st, 0, bingo) - # 左斜め - bingocheck(0, sidesize, sidesize+1, stamp_st, 0, bingo) - # 右斜め - bingocheck(sidesize-1, sidesize, sidesize-1, stamp_st, 0, bingo) - ####### - - bingo = bingo.length # ビンゴの数 - - # Updating stamp_st # - if stamp_img.include?(rightAC) == true # 既に同名のスタンプが入っていたら - if stamp_st[stamp_img.index(rightAC)] < 9 - stamp_st[stamp_img.index(rightAC)] += 1 # 対応するスタンプの位置に1足す - message = "スタンプカウントが「1」増えました!(スタンプカウントは「9」が上限です)" - else - message="スタンプカウントMAX!!(※これ以上このスタンプのカウントは増えません)" - end - else - if reach != [] && bingo == 0 # はじめのビンゴは必ず3回で完成 - stamp_st[reach] += 1# ビンゴになる数字を代入 - stamp_img[reach] = rightAC - message = "新しいスタンプをGETしました!" # Top message - else - randam_number = index_st[rand(index_st.length)] # スタンプの入っていない個所のなかからランダムにひとつ選ぶ - stamp_st[randam_number] += 1 # 選ばれた個所に1足す - stamp_img[randam_number] = rightAC # stamp_stと同じ個所にstamp_imgにスタンプの名前を代入 - message = "新しいスタンプをGETしました!" # Top message - end - end - ## - - ### ビンゴしたラインを判定(decision = 0) ### - bingo = [] - # 横 - bingocheck(0, sidesize, 1, stamp_st, 0, bingo) - # 縦 - bingocheck(0, sidesize, sidesize, stamp_st, 0, bingo) - # 左斜め - bingocheck(0, sidesize, sidesize+1, stamp_st, 0, bingo) - # 右斜め - bingocheck(sidesize-1, sidesize, sidesize-1, stamp_st, 0, bingo) - ####### - - bingo = bingo.length # ビンゴの数 - - - ## - - # Convert to string # - - stamp_st_string = stamp_st.join - stamp_img_string = stamp_img.join(",") - - ## - - sql_update = "UPDATE main SET stamp_status=?, stamp_img=? WHERE id=?;" - db.execute(sql_update, stamp_st_string, stamp_img_string, id) -end - -###### - -########## - -##### HTML ##### -print' -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" - "http://www.w3.org/TR/html4/strict.dtd"> -<html> -<head> -<title>たいとる</title> -<link rel="stylesheet" type="text/css" href="Bingo.css"> -</head> -<body> -' -### TOP ### - -sql_rank = 'select rank from main where id=?;' -rank = db.execute(sql_rank, id).flatten(2)[0].to_i - -print' -<div class="outflam"> -' -if rank > 0 - print'<div class="top" style="background: red;">' -else - print'<div class="top">' -end -# - ビンゴステータス処理 - # - -if rank > 0 - printf("<h1>おめでとうございます!!<br>☆ %d等 ☆が当選しました!!</h1>", rank) - # print'<p>抽選は終了しましたが、引続きゆる☆スタをお楽しみ下さい!!</p>' -end - -# End of top -print' -</div> -' -# Top message # - -bc = bingo.to_i - last_bingo.to_i - -if bc > 0 - message += '<br>おめでとう!' + bc.to_s - message += 'ビンゴ揃いました!!<br>' -end - -if rank > 0 - printf("<p style=\"background:red; color:white;\">%sおめでとうございます!☆ %d等 ☆が当選しました!!</p>", message, rank) -else - printf("<p style=\"background:#136cf9;\">%s</p>", message) -end - -## - -###### - -### CENTER ### -print' -<div class="center"> -<table border=1> -' -for i in 0..2 - print'<tr>' - 3.times do |n| - if stamp_st[3*i+n].to_i > 0 - printf("<td width=170 height=170><img src=\"png/%s.png\" alt=\"stamped\" width=\"160\" height=\"160\"><span style=\"color: green; font-weight: 900;\">%d</span></td>\n", stamp_img[3*i+n], stamp_st[3*i+n]) - else - print"<td width=170 height=170></td>\n" - end - end - print'<tr>' -end -# End of center -print' -</table> -</div> -' -###### - -### BOTTOM ### -print' -<div class="bottom"> -' -# - RPGの表示 - # - -name = user_data[0][2] -job = user_data[0][3] -sex = user_data[0][4] -exp = user_data[0][5] - -## GETTING EXP SUM ## - -sum_sql = 'SELECT SUM(exp) FROM main WHERE rank=0;' -sumexp = db.execute(sum_sql).flatten(2)[0] - -#### - -stamp = stamp_st.inject(:+) # 配列内の値を全て足す - -charST = rpg(job, sex, stamp, bingo, sumexp) # ユーザーのキャラクタステータス - -## UPDATE EXP ## - -update_exp = 'UPDATE main SET exp=? WHERE id=?;' -db.execute(update_exp, charST[2], id) - -#### - -## GETTING EXP SUM ## - -sum_sql = 'SELECT SUM(exp) FROM main WHERE rank=0;' -sumexp = db.execute(sum_sql).flatten(2)[0] - -#### - -stamp = stamp_st.inject(:+) # 配列内の値を全て足す - -charST = rpg(job, sex, stamp, bingo, sumexp) # ユーザーのキャラクタステータス - -printf(" -<!-- キャラクターイメージの設定 --> -<div class=\"charIMG\"> -<img src=\"png/%s.png\"> -</div> -<div class=\"charSTATUS\"> -ID:%04d<br> -NAME:%s<br> -あなたのLv: %d / 全員のLv: %d<br> -当選確率: %3.3f \% -<div> -", charST[0], id-1, name, charST[2],sumexp , charST[1]) - -# End of bottom -print'</div>' -# End of outflam -print'</div>' -###### - -print' -</body> -</html> -' -##########
--- a/minato2014/.#Bingo.rb Fri Jul 25 16:10:04 2014 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -c112124@roy.e.koeki-u.ac.jp.15104 \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/minato2014/bacup/Bingo1.rb Fri Jul 25 16:16:58 2014 +0900 @@ -0,0 +1,446 @@ +#!/usr/bin/env ruby +# -*- coding: utf-8 -*- + +require 'sqlite3' +require 'cgi' +require 'date' +require './sub.rb' +require 'net/http' + +c = CGI.new(:tag_maker => "html5", :accept_charest => "UTF-8") +db = SQLite3::Database.new("sql/stamp.sq3") + +id = c.cookies["id"][0].to_i +magic = c.cookies["magic"][0].to_i +err = 0 # 不正な動きであれば負の値になる +sidesize = 3 +message = "はりきって行きましょう!<br>" # ビンゴ用テキスト + +print("Content-type: text/html; charset=UTF-8 \n\n") + +### DROP TABLE ### + +getcom = ARGV[0].to_s +drop = 'DROP TABLE main ;' +if getcom == 'ududlrllba' + db.execute(drop) +end + +###### + +### DELETE TABLE ### + +del = 'DELETE FROM main WHERE id=?' +if getcom == 'ududlrlrba' + db.execute(del, id) +end + +###### + +##### CHECKING UID ##### + +sql = "SELECT stamp_status, stamp_img, name, job, sex, exp FROM main WHERE id=? AND magic=?" +begin + user_data = db.execute(sql, id, magic) +rescue + user_data = [] +end + +if user_data == [] # ログインエラー(-1) + err -= 1 +end + +### LOGIN ERROR HTML ### + +if err == -1 + print' +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" + "http://www.w3.org/TR/html4/strict.dtd"> +<html> +<head> +<meta http-equiv="refresh" content="2.5;http://skip.koeki-prj.org/minato2014/account.html"> +</head> +<title>たいとる</title> +<body> +' +print' +<p> ログインに失敗しました。 </p> +<p> +アカウント登録ページへ接続中…<br> +* 3秒経っても移動しない場合は<a href="account.html">こちら</a>から移動して下さい。 +</p> +</body> +</html> +' + exit +end + +###### + +########## + +##### RE-ARRAYING STAMP_STATUS AND STAMP_IMG ##### + +# stamp status +stamp_st = user_data[0][0] +stamp_st = stamp_st.split(//) # 一文字ずつ分けて配列にする +stamp_st = stamp_st.map {|s| s.to_i} # 配列内の文字列を数列になおす + +# stamp img +stamp_img = user_data[0][1] +stamp_img = stamp_img.split(",") # 文字列を","で区切って配列にする + +########## + +##### STAMPPING ##### + +### Making randam number ### + +def taiou(sidesize) + srand(256788901) + stamp = Hash.new("n") + stamp_name = ["kamo", "kite", "mame", "mo2usa", "inuwasi", "hanabu", "be", "UMIMARU", "pero"] + (sidesize**2).times do |n| + stamp[rand(10000000)] = stamp_name[n] + end + stamp +end + +###### + +##### Checking bingo method ##### + +def bingocheck(start, sidesize, stepon, stamp, decision, bingo) + nbox = [] + setbox = Hash.new + if sidesize == stepon + x = sidesize + else + x = 1 + end + x.times do |m| + start.step(sidesize*sidesize - 1, stepon) do |n| + nbox << n + m + if nbox.length == sidesize + dbox = Array.new(0) # next bingo or reach numbers(bingoed -> nothing) + for i in nbox + if stamp[i] == 0 + dbox << i + end + end + # sidesizeにdecisionの値を加えることで、ビンゴ、次ビンゴ、リーチをそれぞれdecisionに0,1,2を加えることで表現。 + if dbox.length == decision + setbox[dbox] = nbox + bingo << setbox + setbox = Hash.new + nbox = [] + else + nbox = [] + end + end + end + end +end +# bingo[{[ビンゴまたはリーチに必要な番号] => [ビンゴまたはリーチのラインを形成する番号]}] +########## + +bingo = # 現在のビンゴ数 + +### Checking Access Cord(AC) ### + +getAC = ARGV[0].to_i # URL?以降の引数を取得 +rightAC = taiou(sidesize) # taiouで生成したACのハッシュ +#p rightAC +rightAC = rightAC[getAC] # ACが正しければスタンプ名が入り、異なる場合はn + +##### ACCESS LOG ##### +t = Time.now +time = (t.hour * 3600) + (t.min * 60) + t.sec + +## Checking sql_master table. If sqlite_master don't have tablename, it create. + +sql_master = "SELECT name FROM sqlite_master WHERE name='logs';" +check_master = db.execute(sql_master) +sql_logs = 'CREATE TABLE logs( +id INTEGER PRIMARY KEY AUTOINCREMENT, +uid INTEGER, +ac TEXT, +time INTEGER); +' +if check_master == [] + db.execute(sql_logs) +end + +########## + +begin + get_log = 'SELECT ac, time FROM logs WHERE uid=(SELECT MAX(id) FROM logs WHERE uid=?);' # ユーザーの最新のログ情報を取得 + log_check = db.execute(get_log, id) +rescue + print'GETTING LOG ERROR!' +end +begin + log = 'INSERT INTO logs(uid, ac, time) VALUES(?, ?, ?)' + db.execute(log, id, rightAC, time) +rescue + print'INSERT LOG ERROR!' +end +# /* memo: 再度同じようなシステムを作る際はスタンプ用のテーブルがほしい。 */ # + +########## + +### ビンゴしたラインを判定(decision = 0) ### +bingo = [] +# 横 +bingocheck(0, sidesize, 1, stamp_st, 0, bingo) +# 縦 +bingocheck(0, sidesize, sidesize, stamp_st, 0, bingo) +# 左斜め +bingocheck(0, sidesize, sidesize+1, stamp_st, 0, bingo) +# 右斜め +bingocheck(sidesize-1, sidesize, sidesize-1, stamp_st, 0, bingo) +####### + +bingo = bingo.length # ビンゴの数 +last_bingo = bingo + +if rightAC != "n" # rightACが正しければ + + ### Update Stamp_status And Stamp_img ### + + # Replacing Image # + + index_st = [] + stamp_st.length.times { |c| + if stamp_st[c] == 0 + index_st << c + end + } + + ### リーチ(decision = 1)# [{[ビンゴの番号] => [リーチを構成する数]}] + reach = [] + # 横 + bingocheck(0, sidesize, 1, stamp_st, 1, reach) + # 縦 + bingocheck(0, sidesize, sidesize, stamp_st, 1, reach) + # 左斜め + bingocheck(0, sidesize, sidesize+1, stamp_st, 1, reach) + # 右斜め + bingocheck(sidesize-1, sidesize, sidesize-1, stamp_st, 1, reach) + ####### + + begin + reach = reach[0].flatten(2)[0] # ビンゴの番号のみ抽出 + rescue + reach = [] + end + + ### ビンゴしたラインを判定(decision = 0) ### + bingo = [] + # 横 + bingocheck(0, sidesize, 1, stamp_st, 0, bingo) + # 縦 + bingocheck(0, sidesize, sidesize, stamp_st, 0, bingo) + # 左斜め + bingocheck(0, sidesize, sidesize+1, stamp_st, 0, bingo) + # 右斜め + bingocheck(sidesize-1, sidesize, sidesize-1, stamp_st, 0, bingo) + ####### + + bingo = bingo.length # ビンゴの数 + + # Updating stamp_st # + if stamp_img.include?(rightAC) == true # 既に同名のスタンプが入っていたら + if stamp_st[stamp_img.index(rightAC)] < 9 + stamp_st[stamp_img.index(rightAC)] += 1 # 対応するスタンプの位置に1足す + message = "スタンプカウントが「1」増えました!(スタンプカウントは「9」が上限です)" + else + message="スタンプカウントMAX!!(※これ以上このスタンプのカウントは増えません)" + end + else + if reach != [] && bingo == 0 # はじめのビンゴは必ず3回で完成 + stamp_st[reach] += 1# ビンゴになる数字を代入 + stamp_img[reach] = rightAC + message = "新しいスタンプをGETしました!" # Top message + else + randam_number = index_st[rand(index_st.length)] # スタンプの入っていない個所のなかからランダムにひとつ選ぶ + stamp_st[randam_number] += 1 # 選ばれた個所に1足す + stamp_img[randam_number] = rightAC # stamp_stと同じ個所にstamp_imgにスタンプの名前を代入 + message = "新しいスタンプをGETしました!" # Top message + end + end + ## + + ### ビンゴしたラインを判定(decision = 0) ### + bingo = [] + # 横 + bingocheck(0, sidesize, 1, stamp_st, 0, bingo) + # 縦 + bingocheck(0, sidesize, sidesize, stamp_st, 0, bingo) + # 左斜め + bingocheck(0, sidesize, sidesize+1, stamp_st, 0, bingo) + # 右斜め + bingocheck(sidesize-1, sidesize, sidesize-1, stamp_st, 0, bingo) + ####### + + bingo = bingo.length # ビンゴの数 + + + ## + + # Convert to string # + + stamp_st_string = stamp_st.join + stamp_img_string = stamp_img.join(",") + + ## + + sql_update = "UPDATE main SET stamp_status=?, stamp_img=? WHERE id=?;" + db.execute(sql_update, stamp_st_string, stamp_img_string, id) +end + +###### + +########## + +##### HTML ##### +print' +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" + "http://www.w3.org/TR/html4/strict.dtd"> +<html> +<head> +<title>たいとる</title> +<link rel="stylesheet" type="text/css" href="Bingo.css"> +</head> +<body> +' +### TOP ### + +sql_rank = 'select rank from main where id=?;' +rank = db.execute(sql_rank, id).flatten(2)[0].to_i + +print' +<div class="outflam"> +' +if rank > 0 + print'<div class="top" style="background: red;">' +else + print'<div class="top">' +end +# - ビンゴステータス処理 - # + +if rank > 0 + printf("<h1>おめでとうございます!!<br>☆ %d等 ☆が当選しました!!</h1>", rank) + # print'<p>抽選は終了しましたが、引続きゆる☆スタをお楽しみ下さい!!</p>' +end + +# End of top +print' +</div> +' +# Top message # + +bc = bingo.to_i - last_bingo.to_i + +if bc > 0 + message += '<br>おめでとう!' + bc.to_s + message += 'ビンゴ揃いました!!<br>' +end + +if rank > 0 + printf("<p style=\"background:red; color:white;\">%sおめでとうございます!☆ %d等 ☆が当選しました!!</p>", message, rank) +else + printf("<p style=\"background:#136cf9;\">%s</p>", message) +end + +## + +###### + +### CENTER ### +print' +<div class="center"> +<table border=1> +' +for i in 0..2 + print'<tr>' + 3.times do |n| + if stamp_st[3*i+n].to_i > 0 + printf("<td width=170 height=170><img src=\"png/%s.png\" alt=\"stamped\" width=\"160\" height=\"160\"><span style=\"color: green; font-weight: 900;\">%d</span></td>\n", stamp_img[3*i+n], stamp_st[3*i+n]) + else + print"<td width=170 height=170></td>\n" + end + end + print'<tr>' +end +# End of center +print' +</table> +</div> +' +###### + +### BOTTOM ### +print' +<div class="bottom"> +' +# - RPGの表示 - # + +name = user_data[0][2] +job = user_data[0][3] +sex = user_data[0][4] +exp = user_data[0][5] + +## GETTING EXP SUM ## + +sum_sql = 'SELECT SUM(exp) FROM main WHERE rank=0;' +sumexp = db.execute(sum_sql).flatten(2)[0] + +#### + +stamp = stamp_st.inject(:+) # 配列内の値を全て足す + +charST = rpg(job, sex, stamp, bingo, sumexp) # ユーザーのキャラクタステータス + +## UPDATE EXP ## + +update_exp = 'UPDATE main SET exp=? WHERE id=?;' +db.execute(update_exp, charST[2], id) + +#### + +## GETTING EXP SUM ## + +sum_sql = 'SELECT SUM(exp) FROM main WHERE rank=0;' +sumexp = db.execute(sum_sql).flatten(2)[0] + +#### + +stamp = stamp_st.inject(:+) # 配列内の値を全て足す + +charST = rpg(job, sex, stamp, bingo, sumexp) # ユーザーのキャラクタステータス + +printf(" +<!-- キャラクターイメージの設定 --> +<div class=\"charIMG\"> +<img src=\"png/%s.png\"> +</div> +<div class=\"charSTATUS\"> +ID:%04d<br> +NAME:%s<br> +あなたのLv: %d / 全員のLv: %d<br> +当選確率: %3.3f \% +<div> +", charST[0], id-1, name, charST[2],sumexp , charST[1]) + +# End of bottom +print'</div>' +# End of outflam +print'</div>' +###### + +print' +</body> +</html> +' +##########
--- a/minato2014/chusen.rb Fri Jul 25 16:10:04 2014 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,49 +0,0 @@ -#!/usr/bin/env ruby -# -*- coding: utf-8 -*- - -require 'sqlite3' -require 'cgi' - -c = CGI.new(:tag_maker => "html5", :accept_charest => "UTF-8") -db = SQLite3::Database.new("sql/stamp.sq3") - -begin - result = db.execute("select id,exp,rank from main;") -rescue - exit -end - -all = Array.new -for id,lv,rank in result - if id == "ID" || lv == 0 || rank.to_i != 0 - next - end - lv.to_i.times do - all << id - end -end - -tousen = Array.new(0) -atari1 = rand(all.length) -tousen << all[atari1] -all.delete_if {|x| x == tousen[0]} - -sql = "update main set rank = 1 where id = ?;" -db.execute(sql,tousen[0]) - -sql = "update main set rank = 2 where id = ?;" -while tousen.length < 4 - srand - atari2 = rand(all.length) - hoge = all[atari2] - tousen << all[atari2] - all.delete_if {|x| x == hoge} - db.execute(sql,hoge) -end - -i=0 -printf("Content-type: text/html; charset=UTF-8\n\n") - -printf("<p>1等はIDが%04dの方!おめでとー!</p>\n",tousen[i].to_i) -printf("<p>2等はIDが%04dと%04dと%04dの方!おめでとー!</p>\n",tousen[i+=1].to_i,tousen[i+=1].to_i,tousen[i+=1].to_i) -
--- a/minato2014/etsuran.rb Fri Jul 25 16:10:04 2014 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,41 +0,0 @@ -#!/usr/bin/env ruby -#coding:utf-8 - -require'cgi' -require'sqlite3' - -db = SQLite3::Database.new("../sql/stamp.sq3") - -c = CGI.new(:accept_charaset => "UTF-8") - -flag = 0 -text = "<p>登録者一覧を表示します</p>\n" -begin - result = db.execute("select * from main;") -rescue - flag = 1 - text = "<p>データがありません</p>\n" -end - -printf("Content-type: text/html; charset=UTF-8\n\n") - -printf'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/h -tml4/strict.dtd"> -<html> -<head> -<title>Delete table</title> -<link rel="stylesheet" type="text/css" href="design.css"> -</head> -</body> -<h1>データ閲覧ページ</h1>' -puts text -if flag == 1 -else - print"<table border = 1>\n" - result.each do |line| - printf("<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>\n",line[0],line[1],line[2],line[3],line[4],line[8],line[9]) - end - print"</table>" -end - -print'</body></html>'