こんにちは。
いつどこゲーム(「いつ」「どこで」「誰と」「誰と」「どうした」がバラバラに出てくる)のようにテキストがランダム表示されるようなことがしたいと思っています。
今回したいと思っているのが、
(1)「誰と」と「誰が」を、隣同士にランダム表示する
(2)「誰と」と「誰が」に、同じ人名が重複しないようにする
(3)「誰と」と「誰が」は、同じデータを引っ張りたい(できれば)
以上の3点です。
検索をしてjavascriptを使う方法を見つけたのですが、人名がかなり多いため他に良い方法がないものかと思い、相談に伺いました。
http://homepage2.nifty.com/yoshi-m/makehp/dhtml/ …
こういったことができるCGI、またはその方法をご存知の方いらっしゃいましたら、ご教示いただけましたら幸いです。
よろしくお願いいたします。
No.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>
仕事が繁忙期に入ってしまい、お礼が遅くなって大変失礼しました。
JavaScriptのサンプルをありがとうございます。
落ち着きましたら作成したいと思っております。
このたびは本当にありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルについて教えてください。 1 2023/03/03 08:38
- Excel(エクセル) Excel 行の"〇" を検索して見出し(日付)を表示させたい 1 2022/04/04 18:35
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- Excel(エクセル) エクセルの数式で教えてください。 1 2022/10/25 09:26
- Visual Basic(VBA) Powerpointでランダムな数字の結果を表示するマクロ 2 2023/08/04 10:04
- Excel(エクセル) フォルダ内のエクセルファイルを開かずにデータ採取する関数式 2 2022/12/22 22:15
- Visual Basic(VBA) VBAで早押しゲームを作りたい 4 2022/05/12 13:46
- Excel(エクセル) エクセルの数式で教えてください。 1 2022/07/08 13:46
- フリーソフト AIMPに代わるおすすめのプレイヤー(フリーソフト)を教えてください 2 2022/08/11 20:32
- JavaScript 空白で入力フォームのボタンをクリックしたら、ブラウザの上部からjavascriptで 表示されるアラ 1 2022/05/20 11:16
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Perlでファイル名を変更したい...
-
ポインター引数の関数でコンパ...
-
char str[256]の256の意味は?
-
エクセルシート名の制限を変更...
-
UTF-8で5~6バイトになる文字コ...
-
10Mバイトて文字数に すると何...
-
「1TB」のHDDに日本語は何字入...
-
Excel 1セル当りの文字数が2...
-
Excel VBA メール作成について ...
-
バイト列とバイナリ列の違いが...
-
10個の実数に対する降順ソート...
-
COBOLのCOMP形式について
-
64bit対応
-
半角、全角の判別方法
-
Cのプログラムがどうしても動き...
-
memcmp バイナリデータの比較方法
-
【VB2005】テキストボックス内...
-
SQLで1バイト、2バイト混在...
-
バイナリとBCDコード
-
3バイト文字(UTF-8)をprintfで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MATLAB(マトラボ)とcsvファ...
-
matlabで、平均値を求める方法...
-
VBA エクセルで1列で表示したい。
-
VBScripの2次元動的配列
-
いつどこゲームのようなテキス...
-
VB6.0でMSChartをタイマーを使...
-
メールアドレスをテキストファ...
-
複数のCSVを一度にダウンロード
-
MSDOSからワイルドカード指定で...
-
utf-8のコードを使いたい
-
ポインター引数の関数でコンパ...
-
10Mバイトて文字数に すると何...
-
UTF-8で5~6バイトになる文字コ...
-
エクセルシート名の制限を変更...
-
COBOLのCOMP形式について
-
stable diffusionのエラー
-
ビットスワップとバイトスワッ...
-
char str[256]の256の意味は?
-
Excel VBA メール作成について ...
-
バイナリとBCDコード
おすすめ情報