プロが教えるわが家の防犯対策術!

こんにちは。
いつどこゲーム(「いつ」「どこで」「誰と」「誰と」「どうした」がバラバラに出てくる)のようにテキストがランダム表示されるようなことがしたいと思っています。

今回したいと思っているのが、
(1)「誰と」と「誰が」を、隣同士にランダム表示する
(2)「誰と」と「誰が」に、同じ人名が重複しないようにする
(3)「誰と」と「誰が」は、同じデータを引っ張りたい(できれば)
以上の3点です。

検索をしてjavascriptを使う方法を見つけたのですが、人名がかなり多いため他に良い方法がないものかと思い、相談に伺いました。
http://homepage2.nifty.com/yoshi-m/makehp/dhtml/ …

こういったことができるCGI、またはその方法をご存知の方いらっしゃいましたら、ご教示いただけましたら幸いです。
よろしくお願いいたします。

A 回答 (1件)

CGIでもできますが、JavaScriptの例があるのでそれを活用されてみてはいかがで


しょうか?

データを別ファイルに記述すれば管理しやすいのではないかと思い、JSON形式の
ファイルを用意してAjaxで読み込むように作ってみました。

まず以下のようなデータファイルを作ってください。

<ファイル : data.json>
{
"time": ["昨日", "今日", "明日"],
"endphrase": ["した。", "することになっている。", "する予定。"],
"people": ["私", "友達", "見知らぬ人"],
"where": ["家", "トイレ", "学校"],
"what": ["うんこ", "野球拳", "キス"]
}

そして、HTMLファイルは以下です。

<HTML>
<HEAD>
<TITLE>いつどこゲーム!?</TITLE>
<SCRIPT language="JavaScript">
<!--
//-- ご自分の環境に合わせて変更してください --
data_file = "data.json" // JSONデータを記述したファイル名
//--------------------------------------------

function createHttpRequest() {
if(window.XMLHttpRequest){
return new XMLHttpRequest()
} else if(window.ActiveXObject){
try {
return new ActiveXObject('Msxml2.XMLHTTP')
} catch (e) {
try {
return new ActiveXObject('Microsoft.XMLHTTP')
} catch (e2) {
return null
}
}
} else {
return null
}
}

function make_par(){
var data
var http_request = createHttpRequest()
http_request.open( "GET", data_file, true )
http_request.onreadystatechange = function () {
if ( http_request.readyState == 4 ) {
if ( http_request.status == 200 ) {
try {
data = eval( "(" + http_request.responseText + ")" )
} catch (e) {
alert("JSONデータの形式に問題があります")
}
show(data)
} else {
alert("ファイルに問題があります")
}
}
}
http_request.send(null)
}

function show(data) {
var day_num = Math.floor(Math.random()*data.time.length) //いつ?
var peo_num = Math.floor(Math.random()*data.people.length) //誰と?
var peo2_num //誰が?
while ( (peo2_num = Math.floor(Math.random()*data.people.length)) == peo_num ) {}
var whe_num = Math.floor(Math.random()*data.where.length) //どこで?
var do_num = Math.floor(Math.random()*data.what.length) //どんなことを?

text.innerText =
"「" + data.time[day_num] + "、" + data.people[peo_num] + "と" +
data.people[peo2_num] + "は" + data.where[whe_num] + "で" +
data.what[do_num] + "を" + data.endphrase[day_num] + "」";
}
//-->
</SCRIPT>
</HEAD>
<BODY onLoad="make_par()">
<!--表示部分-->
<SPAN id="text"> </SPAN>
<!--ここまで-->
</BODY>
</HTML>
    • good
    • 0
この回答へのお礼

仕事が繁忙期に入ってしまい、お礼が遅くなって大変失礼しました。
JavaScriptのサンプルをありがとうございます。
落ち着きましたら作成したいと思っております。
このたびは本当にありがとうございました!

お礼日時:2009/11/14 07:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!