changeset 893:056a01b67a81

battle.rb
author ARAKI Tsuyohito <c113007@e.koeki-u.ac.jp>
date Wed, 28 Oct 2015 00:35:43 +0900
parents a8ec072c09a6
children 870f5cba6918
files opencampus2015/#prof.rb# opencampus2015/battle.rb
diffstat 2 files changed, 558 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/opencampus2015/#prof.rb#	Wed Oct 28 00:35:43 2015 +0900
@@ -0,0 +1,381 @@
+#!/usr/bin/env ruby22
+# -*- coding: utf-8 -*-
+require 'cgi'
+require 'sqlite3'
+require 'kconv'
+c = CGI.new(:tag_maker => "html5", :accept_charest => "UTF-8")
+db = SQLite3::Database.new("./sql/main.sq3")
+
+id = c.cookies["id"][0]
+person = id.to_i
+
+data = "select * from test where id = ?"
+data2 = "select * from test where id = ?"
+#idが?(後で代入)のデータをtest票から探す。という命令をdataにしくむ。全てがほしい場合は「*」。「*」を「name」に変えると該当データのnameだけとりだす。
+cook = db.execute(data, person)               #dataに仕組んでいた命令を、personを代入しつつ実行。
+cook2 = db.execute(data2, person)
+jikan1 = "select * from time where cd = ?"
+timeupd = "update time set now = ?, id = ? where cd = ?"
+
+que = "select * from toi where id = ?"
+queupd = "update toi set q1 = ?, q2 = ?, q3 = ?, q4 = ?, q5 = ? where id = ?"
+toi = db.execute(que, person)
+
+bomd = "update test set pt = ? where id = ?"
+ins4 = 'insert into time values(?, 61, "n")'
+printf("Content-type: text/html; charset=UTF-8\n\n")
+
+begin
+name = cook[0][1]
+cal = cook[0][2]
+age = cook[0][3]
+sex = cook[0][4]
+aria = cook[0][5]
+exp = cook[0][6]
+pt = cook[0][7]
+#lv = cook[0][8]
+rescue
+printf(<<_EOS_)
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+	"http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta name="viewport"
+content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">
+<meta name="format-detection" content="telephone=no">
+<link media="only screen and (max-device-width:480px)"
+href="smart.css" type="text/css" rel="stylesheet" />
+<link media="screen and (min-device-width:481px)" href="profeel.css"
+type="text/css" rel="stylesheet" />
+<link rel="shortcut icon" href="./img/cabage.png"/>
+<title>Miyazac Quest</title>
+<style type="text/css">
+<!--
+-->
+</style>
+</head>
+
+<body>
+<header></header>
+<h1>記録が無くなったようだ...</h1><h2>記憶も消してやりなおしたまえ......</h2>
+<div class="f1"><a href="index.html"><div class="lets"><span>新規記憶の作成</span></div></a></div>
+<div class="f1"><a href="cookie.rb"><div class="lets"><span>作成前に記憶を消す</span></div></a></div>
+<address>skip&#x40;xxxx.co.jp</address>
+<footer></footer>
+</body>
+</html>
+
+_EOS_
+exit(0)            ##プログラム終了! これがないと以降のプログラムが動いてしまう。
+end
+
+
+
+q1 = toi[0][1]
+q2 = toi[0][2]
+q3 = toi[0][3]
+q4 = toi[0][4]
+q5 = toi[0][5]
+
+per ="%"
+
+##################--ptを獲得するための乱数生成--#############
+##################----#############################
+
+def qrc()
+  srand(4567845678)
+  x = rand(10000000)
+  srand(x)
+  qrnumber = Hash.new("n")
+  qrarr = ["a", "b", "c", "d", "e"]
+  qrarr.length.times do |i|
+    qrnumber[rand(100000000)] = qrarr[i]
+  end
+  return qrnumber
+end
+
+##################ptを獲得した際の反応。####################
+#########前の人が書き込んだ時間と比べて60秒以内なら追加ポイント####
+kpt = 0
+
+
+begin
+  jikan2 = db.execute(jikan1, "j")
+  now1 = jikan2[0][1]
+rescue
+  ("a".."j").each{|x| db.execute(ins4,x)}
+end
+
+
+qrAC = qrc            ###生成したハッシュには、"乱数"=>"記号"が入っている
+getAC = ARGV[0].to_i  ###URL?以降の文字(特定の乱数)を取得してgetACに代入
+qr = qrAC[getAC]      ###特定の"乱数"が一致すると、"乱数"=>"記号"がqrに正しく入力される。
+if qr =="a" && q1 == 0
+  q1 += 1
+  jikan2 = db.execute(jikan1, "a")
+  now1 = jikan2[0][1]
+  nowper = jikan2[0][2]
+  now2 = Time.now.to_i
+  db.execute(timeupd, now2, person, "a")
+  if person == nowper
+  elsif now1 == nil
+  elsif now2-now1 < 40
+    pt += 5
+    kpt += 5
+  end
+  pt += 7
+  kpt += 7
+elsif qr == "b" && q2 == 0
+  q2 += 1
+  jikan2 = db.execute(jikan1, "b")
+  now1 = jikan2[0][1]
+  nowper = jikan2[0][2]
+  now2 = Time.now.to_i
+  db.execute(timeupd, now2, person, "b")
+  if person == nowper
+  elsif now1 == nil
+  elsif now2-now1 < 20
+    pt += 2
+    kpt += 2
+  end
+  pt += 12
+  kpt += 12
+elsif qr == "c" && q3 == 0
+  q3 += 1
+  jikan2 = db.execute(jikan1, "c")
+  now1 = jikan2[0][1]
+  nowper = jikan2[0][2]
+  now2 = Time.now.to_i
+  db.execute(timeupd, now2, person, "c")
+  if person == nowper
+  elsif now1 == nil
+  elsif now2-now1 < 25
+    pt += 10
+    kpt += 10
+  end
+  pt += 3
+  kpt += 3
+elsif qr == "d" && q4 == 0
+  q4 += 1
+  jikan2 = db.execute(jikan1, "d")
+  now1 = jikan2[0][1]
+  nowper = jikan2[0][2]
+  now2 = Time.now.to_i
+  db.execute(timeupd, now2, person, "d")
+  if person == nowper
+  elsif now1 == nil
+  elsif now2-now1 < 60
+    pt += 2
+    kpt += 2
+  end
+  pt += 15
+  kpt += 15
+elsif qr == "e" && q5 == 0
+  q5 += 1
+  jikan2 = db.execute(jikan1, "e")
+  now1 = jikan2[0][1]
+  nowper = jikan2[0][2]
+  now2 = Time.now.to_i
+  db.execute(timeupd, now2, person, "e")
+  if person == nowper
+  elsif now1 == nil
+  elsif now2-now1 < 50
+    pt += 4
+    kpt += 4
+  end
+  pt += 10
+  kpt += 10
+end
+
+
+db.execute(bomd, pt, person)
+db.execute(queupd, q1, q2, q3, q4, q5, person)
+
+kkget = ""
+
+########################~ここまでpt処理~###################
+#######################################################
+
+##################################レベル処理する####
+lv = 1
+gage = 0
+e1 = db.execute("select e1 from box where id = ?",person)[0][0]#じぶんのidのboxにある一体目の経験値
+no1 = db.execute("select no1 from box where id = ?",person)[0][0]
+no2 = db.execute("select no2 from box where id = ?",person)[0][0].to_i#2体目id
+no3 = db.execute("select no3 from box where id = ?",person)[0][0].to_i#3体目id
+lv2 = db.execute("select lv2 from zukan where no = ?",no1)[0][0].to_i
+lv3 = db.execute("select lv3 from zukan where no = ?",no1)[0][0].to_i
+lv4 = db.execute("select lv4 from zukan where no = ?",no1)[0][0].to_i
+lv5 = db.execute("select lv5 from zukan where no = ?",no1)[0][0].to_i
+if e1 < lv2
+lv = 1
+gage = 100-(e1/lv2.to_f*100)
+elsif e1 >= lv5
+lv = 5
+gage = 0
+elsif e1 >= lv4
+lv = 4
+gage = 100-(e1-lv4)/(lv5-lv4.to_f)*100
+elsif e1 >= lv3
+lv = 3
+gage = 100-(e1-lv3)/(lv4-lv3.to_f)*100
+elsif e1 >= lv2
+lv = 2
+gage = 100-(e1-lv2)/(lv3-lv2.to_f)*100
+end#########################################
+
+
+image = "./img/#{cal}#{lv}.png"
+alt = "#{cal}.png"
+
+
+
+if lv == 1
+  color = "black"
+elsif lv == 2
+  color = "navy"
+elsif lv == 3
+  color = "green"
+elsif lv == 4
+  color = "red"
+elsif lv == 5
+  color = "yellow"
+else
+  color = "pink"
+  image = "./img/snail.png"
+  alt = "snails_bug"
+end
+#expが10あがる毎にlvが1あがる。
+#expの1の位*10で、次のレベルアップに必要な経験値の割合が出る。
+#(exp=12の場合、2*10=『20%』、次のレベルアップまであと80%が必要、と分かる。)
+#(exp=35の場合、5*10=『50%』、次のレベルアップまであと50%が必要、と分かる。)
+#exppoint = "select e1 from box where id = ?"  #じぶんのidのboxにある一体目の経験値
+#expp = db.execute(exppoint,id)
+#exp = expp[0][0].to_i
+#gage = 0
+#gage2 = db.execute("select no1 from box where id = ?",id)
+#exp2 = exp
+#esa = "<br><br><br>"
+
+wcname ="select name from zukan where no = ?"
+cal1 = db.execute(wcname,no1)[0][0]
+begin
+cal2 = db.execute(wcname,no2.to_s)[0][0]
+rescue
+cal2 = db.execute(wcname,no2.to_s)[0]
+end
+begin
+cal3 = db.execute(wcname,no3.to_s)[0][0]
+rescue
+cal3 = db.execute(wcname,no3.to_s)[0]
+end
+chengeform = '<select name="chenge"><option value = 0>' + "#{cal1}"
+if no2 > 0 && no3 >0
+  chengeform +="<option value = 2>#{cal2}<option value = 3>#{cal3}"
+elsif no2 > 0 && no3 > 0
+  chengeform +="<option value = 2>#{cal2}"
+end
+########################
+###lv==5のとき画像を変える###
+
+kakunin = ""
+#########################
+#########################
+###################################--HTML--##################
+###################################--------##################
+
+printf(<<_EOS_, per, gage, per, per, per, color, kakunin, kkget, image, alt, name, person, cal, lv, chengeform ,pt)
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+	"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+
+<meta name="viewport"
+content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">
+<meta name="format-detection" content="telephone=no">
+<link media="only screen and (max-device-width:480px)"
+href="smart.css" type="text/css" rel="stylesheet" />
+<link media="screen and (min-device-width:481px)" href="profeel.css"
+type="text/css" rel="stylesheet" />
+
+
+
+
+<link rel="shortcut icon" href="./img/cabage.png"/>
+<title>ほげほげ!</title>
+<style type="text/css">
+<!--
+p.gage{
+background:#adf;
+margin-left:0%s;
+margin-right:%d%s;
+text-align:left;
+border-radius: 10ex;
+}
+div.gage{
+background:#ddf;
+margin-left:20%s;
+margin-right:20%s;
+border-radius: 10ex;
+}
+div.cal div{float:left; border:solid %s;}
+
+-->
+</style>
+</head>
+
+<body>
+<header><p>%s</p></header>
+<h1>Miyazac Quest</h1>
+<h2>%s</h2>
+
+<div class="cal">
+<div>
+<img src=%s alt=%s width="172" height="172">
+</div>
+<table class="state"><tr><td>name</td><td>:%s</td></tr>
+<tr><td>id</td><td>:%04d</td></tr>
+<tr><td>cara</td><td>:%s</td></tr>
+<tr><td>lv.</td><td>%d</td></tr>
+</table>
+</div>
+
+<div class="gage">
+<p class="gage">exp</p>
+</div>
+
+<form method="POST" action="quest.rb">
+%s
+<input type="submit" value="~魔王の迷宮へ~">
+</form>
+<p>coin:%d$</p>
+<table><tr><td>
+<!--
+<form method="POST" action="gohan.rb">
+<label><input type="checkbox" name="hdn">宿屋<div><br>
+<label><input type="radio" name="gohan" value="g1">馬小屋:10$<img src="./img/food.png" width="16" height="16"></label><br>
+<label><input type="radio" name="gohan" value="g2">客室:50$<img src="./img/niku.png" width="16" height="16"></label><br>
+<input type="reset" value="やめる">
+<input type="submit" value="泊まる"></div></label>
+</div></label></form>
+</td><td>
+
+<form method="POST" action="battle.rb">
+<label><input type="checkbox" name="hdn">闘技場<div><br><br><br>
+<input type="reset" value="いかない">
+<input type="submit" value="バトル"></div></label>
+</div></label></form>
+</td></tr><td>
+-->
+<form method="POST" action="cookie.rb">
+<label><input type="checkbox" name="hdn">人生リセット<div><br><br><br>
+<input type="reset" value="やめる">
+<input type="submit" value="記憶を消す"></div></label>
+</div></label></form>
+</td></tr></table>
+<footer></footer>
+</body>
+</html>
+
+_EOS_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/opencampus2015/battle.rb	Wed Oct 28 00:35:43 2015 +0900
@@ -0,0 +1,177 @@
+#!/usr/bin/env ruby22
+# -*- coding: utf-8 -*-
+require 'cgi'
+require 'sqlite3'
+require 'kconv'
+id = c.cookies["id"][0]
+person = id.to_i
+
+data = "select * from test where id = ?"
+cook = db.execute(data, person)
+printf("Content-type: text/html; charset=UTF-8\n\n")
+
+begin
+name = cook[0][1]
+cal = cook[0][2]
+age = cook[0][3]
+sex = cook[0][4]
+aria = cook[0][5]
+exp = cook[0][6]
+pt = cook[0][7]
+lv = cook[0][8]
+rescue
+printf(<<_EOS_)
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+	"http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta name="viewport"
+content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">
+<meta name="format-detection" content="telephone=no">
+<link media="only screen and (max-device-width:480px)"
+href="smart.css" type="text/css" rel="stylesheet" />
+<link media="screen and (min-device-width:481px)" href="profeel.css"
+type="text/css" rel="stylesheet" />
+<link rel="shortcut icon" href="./img/cabage.png"/>
+<title>Miyazac Quest</title>
+<style type="text/css">
+<!--
+-->
+</style>
+</head>
+
+<body>
+<header></header>
+<h1>記録が無くなったようだ...</h1><h2>記憶も消してやりなおしたまえ......</h2>
+<div class="f1"><a href="index.html"><div class="lets"><span>新規記憶の作成</span></div></a></div>
+<div class="f1"><a href="cookie.rb"><div class="lets"><span>作成前に記憶を消す</span></div></a></div>
+<address>skip&#x40;xxxx.co.jp</address>
+<footer></footer>
+</body>
+</html>
+
+_EOS_
+exit(0)            ##プログラム終了! これがないと以降のプログラムが動いてしまう。
+end
+
+
+kkget = ""
+
+########################~ここまでpt処理~###################
+#######################################################
+
+##################################レベル処理する####
+gage = 0
+e1 = db.execute("select e1 from box where id = ?",person)[0][0]#じぶんのidのboxにある一体目の経験値
+no1 = db.execute("select no1 from box where id = ?",person)[0][0]
+no2 = db.execute("select no2 from box where id = ?",person)[0][0].to_i#2体目id
+no3 = db.execute("select no3 from box where id = ?",person)[0][0].to_i#3体目id
+lv2 = db.execute("select lv2 from zukan where no = ?",no1)[0][0].to_i
+lv3 = db.execute("select lv3 from zukan where no = ?",no1)[0][0].to_i
+lv4 = db.execute("select lv4 from zukan where no = ?",no1)[0][0].to_i
+lv5 = db.execute("select lv5 from zukan where no = ?",no1)[0][0].to_i
+if e1 < lv2
+lv = 1
+gage = 100-(e1/lv2.to_f*100)
+elsif e1 >= lv5
+lv = 5
+gage = 0
+elsif e1 >= lv4
+lv = 4
+gage = 100-(e1-lv4)/(lv5-lv4.to_f)*100
+elsif e1 >= lv3
+lv = 3
+gage = 100-(e1-lv3)/(lv4-lv3.to_f)*100
+elsif e1 >= lv2
+lv = 2
+gage = 100-(e1-lv2)/(lv3-lv2.to_f)*100
+end#########################################
+
+
+image = "./img/#{cal}#{lv}.png"
+alt = "#{cal}.png"
+
+
+
+if lv == 1
+  color = "black"
+elsif lv == 2
+  color = "navy"
+elsif lv == 3
+  color = "green"
+elsif lv == 4
+  color = "red"
+elsif lv == 5
+  color = "yellow"
+else
+  color = "pink"
+  image = "./img/snail.png"
+  alt = "snails_bug"
+end
+
+printf(<<_EOS_, per, gage, per, per, per, color, kakunin, kkget, image, alt, name, person, cal, lv)
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+	"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+
+<meta name="viewport"
+content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">
+<meta name="format-detection" content="telephone=no">
+<link media="only screen and (max-device-width:480px)"
+href="smart.css" type="text/css" rel="stylesheet" />
+<link media="screen and (min-device-width:481px)" href="profeel.css"
+type="text/css" rel="stylesheet" />
+
+
+
+
+<link rel="shortcut icon" href="./img/cabage.png"/>
+<title>ほげほげ!</title>
+<style type="text/css">
+<!--
+p.gage{
+background:#adf;
+margin-left:0%s;
+margin-right:%d%s;
+text-align:left;
+border-radius: 10ex;
+}
+div.gage{
+background:#ddf;
+margin-left:20%s;
+margin-right:20%s;
+border-radius: 10ex;
+}
+div.cal div{float:left; border:solid %s;}
+
+-->
+</style>
+</head>
+
+<body>
+<header><p>%s</p></header>
+<h1>Miyazac Quest</h1>
+<h2>%s</h2>
+
+<div class="cal">
+<div>
+<img src=%s alt=%s width="172" height="172">
+</div>
+<table class="state"><tr><td>name</td><td>:%s</td></tr>
+<tr><td>id</td><td>:%04d</td></tr>
+<tr><td>cara</td><td>:%s</td></tr>
+<tr><td>lv.</td><td>%d</td></tr>
+</table>
+</div>
+
+<div class="gage">
+<p class="gage">exp</p>
+</div>
+
+<footer></footer>
+</body>
+</html>
+
+_EOS_

yatex.org