
上から 1, 2, 3, 4 桁で、ナンバーズ 4 の円盤と同じ数字の並びを配列にしてみました
let num_1_digit = [ 1, 0, 9, 8, 7, 6, 5, 4, 3, 2 ];
let num_2_digit = [ 1, 8, 5, 2, 9, 6, 3, 0, 7, 4 ];
let num_3_digit = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 ];
let num_4_digit = [ 1, 4, 7, 0, 3, 6, 9, 2, 5, 8 ];
現在、作っている部分は以下です。
円盤は 1 秒間、約 3 回転している。
円盤が止まるまでは 約 0.2 秒。
let i = 0;
let d = new Date
while ( new Date() - d < 200 ) {
}
円盤が止まるまでは 約 0.2 秒は上記で概ね、良いと思いますが、
円盤の秒間、約 3 回転を表現する方法がわかりませんでした。
わかる方おりましたら、参考にさせて下さい。
宜しくお願い致します
No.3ベストアンサー
- 回答日時:
面白そうだったので、作ってみました。
わたしはナンバーズ4の抽選を見たことが無いので、
合っているかどうかは分かりませんが、
https://ts4-net.com/husya.html
このサイトを参考に、
>みずほ銀行のお嬢さんが スイッチを押すと矢が発射され
>発射間隔は約1秒ぐらいで
という条件を付加しています。
<!DOCTYPE html>
<html>
<head>
<meta content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>numbers4</title>
</head>
<body>
<button onclick="roulette()">ルーレットを回す</button>
<button onclick="arrow()">矢を放つ</button>
<p id="num0"></p>
<p id="num1"></p>
<p id="num2"></p>
<p id="num3"></p>
<script>
let num_digit = [[1, 0, 9, 8, 7, 6, 5, 4, 3, 2],
[1, 8, 5, 2, 9, 6, 3, 0, 7, 4],
[1, 2, 3, 4, 5, 6, 7, 8, 9, 0],
[1, 4, 7, 0, 3, 6, 9, 2, 5, 8]];
let i = [0, 0, 0, 0]; // 初期値
const len = num_digit[0].length // 10個
const speed = 1000 / (3 * len); // 1秒に3回転
const timeLag = 200; // 0.2秒
let timer = []; // setIntervalする
let num = [];
num[0] = document.getElementById('num0');
num[1] = document.getElementById('num1');
num[2] = document.getElementById('num2');
num[3] = document.getElementById('num3');
function roulette() {
for (let j = 0; j < 4; j++) {
timer[j] = window.setInterval(function () {
i[j]++; // 1足して
i[j] %= len; //10で割った余り
num[j].textContent = num_digit[j][i[j]];
}, speed);
}
}
function arrow() {
for (let j = 0; j < 4; j++) {
setTimeout(function () {
window.clearInterval(timer[j]);
num[j].textContent = num_digit[j][i[j]];
}, timeLag + 1000 * j);
}
}
</script>
</body>
</html>
No.2
- 回答日時:
> このようなループは不可能ということですね。
そういう事、ですね。
大体、コンピュータ自体、計算が苦手な人間に代わり、計算を如何に早く終了するか、と言う事が主眼に設計されてます。
当然、単位時間毎にどれだけ大量の計算が行われるのか、と言うのが目的であって、貴方の言うように「時間に束縛されて計算する」ってのは本来の使用目的から言うと明らかにズレてるんですよ。
まぁ、大昔のPCだと例えばNEC-9801とかで前期型のマシンで動いてたゲームを後期型に持ってきて動かすとクロック数が違い過ぎてゲームが早回しになっちゃうような事があって、わざとwait命令(何秒間か停止させる)を挟んで、一定速度にする、なんつーテクニックもあった事もあったんですが、今のPCの環境だと推奨されません。
昔のPCだとシングルタスクだったんで、どっちみちゲームを起動すればPC丸ごとゲームに持っていかれたんで、wait命令を乱発しても他のソフトに影響は無かったんですが、今だとマルチタスク前提なんで、一つのソフトで「パフォーマンスをワザと落として」全体に影響を与える、と言うのは好まれないのです。
いずれにせよ、例えばこれはダイドードリンコの「当たり付き自販機」なんかでも同じなんですよ。貴方が硬貨入れて飲みたい缶のボタンを押した時点で全ての計算は終わってる。
結局貴方がその後「当たり」なのか「ハズレ」なのか待ってる時間は実は無駄で単なる演出です。ライトがピカピカ付いて光ってる部分が移動してても、これは「計算中」を表していない。もう結果は出てるのです。そういう演出、なだけですね。
同様に、コンピュータのおみくじなんかも、色々と演出されていますが、マジでスイッチ押した時点で結果は既に出てるのです。
写真: 桃太郎電鉄。
サイコロが転がる演出が成されてるが、これもコントローラのボタンが押された時点で「何の目が出るのか」は既に決定されている。「転がってる」のは演出であり、止まった目が「既に決定してる結果」と一致するようにプログラムされてるに過ぎない。

No.1
- 回答日時:
あー、分かった。
何やりたいか分かったわ。この質問でしょ?
https://oshiete.goo.ne.jp/qa/12530217.html
なんでそんな事したいんだろ、とか不思議に思ってたんだけど、合点が行ったわ。
なるほど。
ところで、残念なお知らせがあります。
こういうのって確かにあるよね?ゲームとかで。
でもね。実際はね。
「一瞬に計算は終わってる」の。
上のリンクで #1さんが言ってるように乱数使って一瞬に計算してるんですよ。
でね。例えばルーレットみたいになってるとして。
時間かけて回ってるのは映像的な演出なんですよ。実際は内部的にはもう、例えばスタートボタン的なモノ押したら結果はすぐ出てるのね。
だからこのテのゲームってのは「内側のロジック」と「映像的な演出」ってのが分離してるんです。もう結果は最初っから決まってるんだけど、そうじゃなく見えるように演出してるだけなんですよ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C++のcase文の書き方 4 2023/02/24 20:50
- Visual Basic(VBA) 順列をランダムに発生するプログラム 1 2022/11/16 12:16
- 工学 いつもありがとうございます、 円盤の上に何ccの液を液滴させながら円盤を回したら液が拡がって円盤の全 5 2023/03/18 14:17
- JavaScript 2段階プルダウンで1段階目の選択を終えた後に選択ボックスを見えなくしたい 2 2022/07/05 21:58
- Visual Basic(VBA) swiftで年号を 1 2023/02/05 06:48
- JavaScript 電車の運賃を出すプログラムを作っています。 2 2022/06/22 09:36
- Excel(エクセル) スプレッドシートのGASでチェックボックスのチェック全てを外したい 1 2022/09/13 17:09
- JavaScript GASでチェックボックスを一括offしたい 1 2022/09/13 19:54
- その他(音楽・ダンス・舞台芸能) 「録音品質の良い」オススメのレコードを教えてください。 皆様のお持ちのレコードで「これは音がいい!」 8 2022/08/08 14:45
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
function の return 値を表示し...
-
自動ジャンプでフォームデータ...
-
初心者javascript ウィンドウサ...
-
GoogleChart 階層ごとのブロッ...
-
JavaScriptでiframeの内容を「...
-
乱数を一定時間毎に表示させた...
-
SCRIPT5007: 未定義または NULL...
-
<a href="#" …>の意味を教えて...
-
POSTで<a hrefを送る方法について
-
親ウインドウの判別
-
検索フォームでの結果を別窓に...
-
<DIV id=""></DIV>勘でいれたら...
-
<head>と<body>どっちに入れる...
-
URLを引数とし、フレーム間で渡...
-
このスクリプトを説明してください
-
同意を求めて、次のページに進...
-
JavaScriptのエラー ( 関数の...
-
cssにjavascriptを入れる?呼び...
-
角丸うまくいきません
-
適切なページ分けのループを教...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
getElementsByNameで要素が取得...
-
JavaScriptでiframeの内容を「...
-
キーを押している間の時間を計...
-
SCRIPT5007: 未定義または NULL...
-
JavaScriptでの西暦下2桁での表...
-
htaでVBSのソースを書いたらエ...
-
クリックすると別の文章を表示する
-
日付のチェック
-
AjaxでXMLの要素が取得できない
-
引数付きで呼び出す関数・配列...
-
JavaScriptでのEnterキーとAlt+...
-
【js】onsubmit属性が変更できない
-
フォーカス移動抑止について
-
bodyタグのfocus
-
AjaxでDBから取得したデータを...
-
IEの拡大・縮小機能をWebページ...
-
idHOGEで取得したinnerText(数...
-
iframeの中から親ページをスム...
-
function の return 値を表示し...
-
「オブジェクトを指定してくだ...
おすすめ情報