Mercurial > hgrepos > hgweb.cgi > skipweb
view 2014OC/Bingo.rb @ 3240:fcfb3d904a2c
higawariTOPにお知らせ追加
author | GOTO Sakuya <c113061@e.koeki-u.ac.jp> |
---|---|
date | Thu, 11 Feb 2016 08:58:58 +0900 |
parents | 786e0b1a865f |
children |
line wrap: on
line source
#!/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 # 筝罩cс域ゃ sidesize = 3 message = "c茵障!<br>" # 潟雁鴻 print("Content-type: text/html; charset=UTF-8 \n\n") getcom = ARGV[0] ### 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/2014OC/account.html"> </head> <title></title> <body> ' print' <p> 違ゃ潟紊掩障 </p> <p> ≪潟脂蚊若吾御・膓筝<br> * 3腱腟c腱糸翫<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(",") # 絖","у阪c ########## ##### STAMPPING ##### ### Making randam number ### def taiou(sidesize) srand(987654321) stamp = Hash.new("n") stamp_name = ["kamo1", "kamo2", "kamo3", "kamo4", "kamo5", "kamo6", "kamo7", "kamo8", "kamo9"] (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 # sidesizedecisionゃс潟眼罨<潟眼若decision0,1,2ц;憗 if dbox.length == decision setbox[dbox] = nbox bingo << setbox setbox = Hash.new nbox = [] else nbox = [] end end end end end # bingo[{[潟眼障若綽荀] => [潟眼障若ゃ潟綵∽]}] ########## ### Checking Access Cord(AC) ### getAC = ARGV[0].to_i # URL?篁ラ綣違緇 rightAC = taiou(sidesize) # taiouхAC激 #p rightAC rightAC = rightAC[getAC] # AC罩c違鴻帥潟ャ違翫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罩c ### 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 # ≪鴻帥潟ャc 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# 潟眼医篁e stamp_img[reach] = rightAC message = "違鴻帥潟GET障!" # Top message else randam_number = index_st[rand(index_st.length)] # 鴻帥潟ャc潟蚊ら吾 stamp_st[randam_number] += 1 # 吾違1莇潟 stamp_img[randam_number] = rightAC # stamp_ststamp_img鴻帥潟篁e 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:#214e4d; color:white;\">%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) # 若吟若c帥鴻若帥 ## 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) # 若吟若c帥鴻若帥 printf(" <!-- c帥若ゃ<若吾荐絎 --> <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> ' ##########