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

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

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

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

Q&A

0回答

186閲覧

配列がうまくいかない

USOGIB

総合スコア8

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

0グッド

0クリップ

投稿2018/09/23 07:12

編集2018/09/23 07:27

反応時間を計測するプログラムを書いて見ました。
内容としては、

1.画面中心に点の注視点がある。
2.その注視点上に左右どちらか向きの矢印画像がでる。(1000ms)
3.80%の確率で矢印の方向に四角形がでてくる。
4.20%の確率で矢印とは反対方向に四角形がでてくる。
5.四角形がでてきてから、キーボードの矢印キーで回答する。
6.回答時間を計測する。
7.2〜6を繰り返す。

というものなのですが、

配列を使って3.4.番を制御しようとしたところ、うまくいきませんでした。
考えていたものとしては、配列の中の0~99が全て1回づつ出て、同じ数字はもう出ないように
したつもりなのですが、実行してみたところ、数字に被りが出ます。

どこが間違っているのでしょうか??

この中のプログラムとしては、0~99の数字を1回とり、取った数字は1に代わり、その1は取らない
という風にできていると思っています。

PImage img; int basetime; int response; int state = 0; int iti = 0; int time0 = 0; int num =99; int [] ex = new int[num]; int i = 0; int r = 0; int sikoukaisuu = 1; int RT = 0; int pk; int j; int baai; PrintWriter output; String file_name; void setup() { file_name = nf(year(), 4, 0) + nf(month(), 2, 0) + nf(day(), 2, 0) + nf(hour(), 2, 0) + nf(minute(), 2, 0) + nf(second(), 2, 0)+".csv"; output = createWriter(file_name); fullScreen(); background(200); noStroke(); ellipse(width/2, height/2, 10, 10); basetime = millis(); iti = int(random(1000, 2000)); for (i=0; i<50; i++) { ex[i]=0; } r=int(random(0, 99)); } void draw() { basetime = millis() - time0; if (state==0) { if (ex[r]==0) { ex[r] =1; state=1; } if (ex[r]==1) { r=int(random(0, 99)); } } if (state==1) { if (basetime >= iti) { if (r >= 0 && r <= 9) { ResponcePhase0(); if (basetime - iti >= 1000) { rect1(); //baai = 1; } } if (r >= 10 && r <= 49) { ResponcePhase0(); if (basetime - iti >= 1000) { rect0(); //baai = 2; } } if (r >= 50 && r <= 59) { ResponcePhase1(); if (basetime - iti >= 1000) { rect0(); //baai = 3; } } if (r >= 60 && r <= 99) { ResponcePhase1(); if (basetime - iti >= 1000) { rect1(); //baai = 4; } } } } } void ResponcePhase0() { background(200); img = loadImage("yazi.png"); imageMode(CENTER); image(img, width/2, height/2); } void ResponcePhase1() { background(200); img = loadImage("gyakuyazi.png"); imageMode(CENTER); image(img, width/2, height/2); } void rect0() { background(200); rectMode(CENTER); fill(0); rect(width/3, height/2, 50, 50); j = 1; } void rect1() { background(200); rectMode(CENTER); fill(0); rect(2*width/3, height/2, 50, 50); j = 1; } void keyPressed() { if (j == 1) { if ( keyCode == RIGHT ||keyCode == LEFT ) { if (keyCode == RIGHT) { pk = 1; } if (keyCode == LEFT) { pk = 0; } RT = basetime - iti - 1000; output.print(sikoukaisuu); output.print(","); output.print(r); //output.print(baai); output.print(","); output.print(RT); output.print(","); output.print(pk); output.print("\n"); output.flush(); time0 = millis(); background(200); noStroke(); fill(0); ellipse(width/2, height/2, 10, 10); iti = int(random(1000, 2000)); r=int(random(0, 99)); j = 0; sikoukaisuu ++; if (sikoukaisuu == 101) { exit(); } } } }

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

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

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

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

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

y_waiwai

2018/09/23 07:14

コードは、<code>ボタンで、’’’の枠の中に貼り付けてください
USOGIB

2018/09/23 07:19

修正します!!ありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問