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

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

新規登録して質問してみよう
ただいま回答率
85.50%
最適化

最適化とはメソッドやデザインの最適な処理方法を選択することです。パフォーマンスの向上を目指す為に行われます。プログラミングにおける最適化は、アルゴリズムのスピードアップや、要求されるリソースを減らすことなどを指します。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

2回答

765閲覧

下記のコードを配列化する方法

888_8t

総合スコア1

最適化

最適化とはメソッドやデザインの最適な処理方法を選択することです。パフォーマンスの向上を目指す為に行われます。プログラミングにおける最適化は、アルゴリズムのスピードアップや、要求されるリソースを減らすことなどを指します。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2021/06/05 20:14

編集2021/06/06 03:20

超初歩的な質問です。
以下、制作しているプログラムの一部を簡略化したものなのですが、これらを配列でまとめるにはどうしたらいいか教えて下さい。

目標:画面を8分割し、一番下はド(piano1)、下から二番目はレの(pino2)が鳴る。
言語はP5jsで、OpenProcessingを使用しています!

function

1 //サウンドファイルの読み込み 2 piano1=loadSound('piano1.mp3'); 3 piano2=loadSound('piano2.mp3'); 4 piano3=loadSound('piano3.mp3'); 5 piano4=loadSound('piano4.mp3'); 6 piano5=loadSound('piano5.mp3'); 7 piano6=loadSound('piano6.mp3'); 8 piano7=loadSound('piano7.mp3'); 9 piano8=loadSound('piano8.mp3'); 10} 11 12function setup() { 13 createCanvas(windowWidth, windowHeight); 14} 15 16function touchStarted(){ 17 for(var i =0; i <touches.length; i++){ 18 19 var mx = touches[i].x; 20 var my = touches[i].y; 21 22 if(my>windowHeight/8*7 && my<windowHeight){ 23 piano1.play(); 24 } 25 if(my>windowHeight/8*6 && my<windowHeight/8*7){ 26 piano2.play(); 27 } 28 if(my>windowHeight/8*5 && my<windowHeight/8*6){ 29 piano3.play(); 30 } 31 if(my>windowHeight/8*4 && my<windowHeight/8*5){ 32 piano4.play(); 33 } 34 if(my>windowHeight/8*3 && my<windowHeight/8*4){ 35 piano5.play(); 36 } 37 if(my>windowHeight/8*2 && my<windowHeight/8*3){ 38 piano6.play(); 39 } 40 if(my>windowHeight/8*1 && my<windowHeight/8*2){ 41 piano7.play(); 42 } 43 if(my>0 && my<windowHeight/8*1){ 44 piano8.play(); 45 } 46} 47} 48 49function draw(){ 50 background(256); 51 stroke(0); 52 for(var i=windowHeight/8; i<windowHeight; i+=windowHeight/8){ 53 line(0,i,windowWidth,i) 54 } 55} 56コード

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

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

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

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

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

takasima20

2021/06/05 20:38

言語はなんですかね?
888_8t

2021/06/06 03:00

OpenProcessingのP5jsです!
guest

回答2

0

ベストアンサー

P5.js という JavaScript で Processing を再現するものがあり
それを編集&実行する paiza 的なサイトが https://openprocessing.org/ である、と。
調べてみましたが、基本的に JavaScript と同じ書き方でいけそうスね。

まずサウンドのロードはこんな感じで

p5js

1piano = []; 2for (let j=1; j<=8; j++) piano[j] = loadSound('piano' + j + '.mp3');

次に、こんなかんじの関数を作って

p5js

1function hoge(my) { 2 const h = windowHeight/8; 3 if (my > h*7 && my < windowHeight) return 1; 4 if (my > h*6 && my < h*7) return 2; 5 if (my > h*5 && my < h*6) return 3; 6 if (my > h*4 && my < h*5) return 4; 7 if (my > h*3 && my < h*4) return 5; 8 if (my > h*2 && my < h*3) return 6; 9 if (my > h*1 && my < h*2) return 7; 10 if (my > 0 && my < h*1) return 8; 11 //ほんとはここに上記条件に当てはまらなかった場合の return を書きたい 12 //もしくは無条件で 8 を返すか 13}

プレイ部分はこんなかんじ

p5js

1function touchStarted() { 2 for (let i=0; i<touches.length; i++) { 3 const mx = touches[i].x; 4 const my = touches[i].y; 5 6 piano[hoge(my)].play(); 7 } 8}

全体の造りが分からないので、もし不都合があったらがんばって修正してください。(汗

投稿2021/06/08 12:49

takasima20

総合スコア7458

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

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

888_8t

2021/06/09 00:12

できました!非常に助かりました!ありがとうございました!
guest

0

pianoを配列にするという話かな

投稿2021/06/05 21:31

y_waiwai

総合スコア87719

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

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

888_8t

2021/06/06 03:11

そうです!語彙力なくてすみません、、
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問