質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
canvas

HTML5の<canvas>要素用のタグです。CanvasはHTML5から導入された、二次元の図形描写が可能な要素です。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

enchant.js

enchant.jsとは、アプリやゲームを簡単に開発できるオープンソースのHTML5+JavaScriptベースのフレームワークです。プログラミング学習にも用いられ、多くの素材やプラグインが用意されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

883閲覧

ランダム処理をする際に重複しない値でなおかつ16pxずつ値を作成したい

web11

総合スコア52

canvas

HTML5の<canvas>要素用のタグです。CanvasはHTML5から導入された、二次元の図形描写が可能な要素です。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

enchant.js

enchant.jsとは、アプリやゲームを簡単に開発できるオープンソースのHTML5+JavaScriptベースのフレームワークです。プログラミング学習にも用いられ、多くの素材やプラグインが用意されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/06/11 22:16

現在は重複しない値までは作成できたのですが、16px感覚でランダムな値を作成する方法が分かりません。解答よろしくおねがいします。

javascript

1function randomizing(min, max) { 2 var arr = []; 3 var numArr = []; 4 for (var i = 0; i < max - min; i++) { 5 arr[i] = i + 1; 6 } 7 8 for (var j = 0, len = arr.length; j < max - min; j++, len--) { 9 rndNum = Math.floor(Math.random() * len); 10 numArr.push(arr[rndNum]); 11 arr[rndNum] = arr[len - 1]; 12 } 13 return numArr; 14}; 15var map_y_random = randomizing(20, 50);

使う箇所としてマップに宝箱などを作成した際にランダムな値のため宝箱同士が重ならないようにしたいです。
テスト画面のurlになります
http://enchantrun.starfree.jp/

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

何個の宝箱を配置するかはお好きにしていただくとして、位置の決め方のみ説明します。

配置する範囲を「min以上max未満」とするとき、間隔を16ずつにするには、Math.floor((max - min) / 16)をまず計算します。この値を適当な変数、たとえばhogeに保存します。
次に、「0以上hoge未満の整数の疑似乱数」を生成します。たとえば、hogeが4であれば、0,1,2,3のいずれかを(等確率で)生成します。これは、Math.floor(Math.random() * hoge)で求められます。この値を適当な変数、たとえばfugaに保存します。
すると、配置する位置はmin + fuga * 16で求められます。この値は最大でもmax未満になります。

理解が進んだら、一時変数に使ったhogefugaを、計算式で置換しても構いません。

投稿2020/06/12 00:37

Daregada

総合スコア11990

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

web11

2020/06/12 09:52

ありがとうございます。もっと難しい処理走らせないと行けないかと思ってました。
Daregada

2020/06/12 11:41

もちろん、同じ場所に二個の宝箱を重ねたくないなら、「この場所には何も置かれていない」ことを調べたり、他の箱の位置をチェックしたり、といった処理が必要です
guest

0

js

1 for (var i = 0; i < max - min; i++) { 2 //arr[i] = i + 1; 3 // 数値的にはmin * 16 から max * 16 までになるので注意 4 arr[i] = ( ( i + 1 ) * 16 ) + 'px'; 5 //arr[i] = ( ( i + min ) * 16 ) + 'px'; // min/maxならこっちじゃないかな。 6 }

投稿2020/06/11 23:45

kei344

総合スコア69606

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問