

私は心理学を専攻する大学4年生です。
現在卒業論文で実験プログラムを作成しなければならないのですが、プログラミングは大の苦手であり、心理学実験用のマニュアルや資料を参照しても全く完成させることができません。使用しているアプリケーションソフトはVisualStudio2015、言語はVisualBasicです。
作成すべきプログラムは以下のようなものです。
1. 開始ボタンを押すと開始ボタンが消え、画面中央のラベルに文字が1個表示される。
2. ラベルの文字は全部で28種類あり、1ブロックにおいてそれぞれが1回ずつランダムに表示される。これが全部で4ブロックまで繰り返されるので、総試行数は112試行となる。
3. 1試行は、1個の文字が10秒間表示されることであり、10秒経つと自動的に次の試行へと移り、文字が切り替わる。
4. ただし、1試行中に被験者がスペースキーを押すと、ただちに画面全体が暗転する。暗転状態は10秒間であり、10秒経つと自動的に次の試行へと移る(元通りの画面になり、次の文字が表示される)。
5.ある文字に対してスペースキーが押された回数と、その文字が表示されてからスペースキーを押すまでの時間(潜時)を計測する。
指導教授からは簡単なプログラムなのだから早く完成させろと叱責します(ただし、教授自身にはプログラミングの具体的指導は仰げません)。別の先生によるプログラミングの授業も以前受けたことがありますが、その際も今回よりも簡単なプログラムの作成すらままなりませんでした。その先生は大変プログラミングにお詳しいので、今回もご相談したところ、授業で用いたレジュメよりも詳細なものを頂きました。また、「はじめての行動分析実験―VisualBasicでまなぶ実験プログラミング」という本を入手し、これらを参照して作成に励みました。しかし、それぞれの項目にあるサブプロシージャを単に組み合わせただけでは、デバッグをしても思うように作動せず(何も表示されない、暗転状態が終わらない、表示された文字が10秒経過しても切り替わらない、など)、徹夜を続けて試行錯誤的に記述してはデバッグを繰り返しましたが、全く完成させることができませんでした。サブプロシージャ同士のつながりが重要なのだろうと思いますが、それをどうやって実現すればよいかは資料を読んでも私の頭では理解・実現困難でした。
指導教授には2日後の月曜日から実験を始めるよう命じられており、明日には完成させなければなりません。先のプログラミングにお詳しい先生とは休日にはコンタクトがとれないので間に合いません。私のゼミにはそのようなプログラミングに詳しい院生の方はおらず、他のゼミにもご相談できる方がおりません。本日も完成させるべくずっと頑張っていたのですが、ついに思うように作動することはなく、完成の見通しが全く立たないため、このサイトにて質問を投稿する決心を致しました。このような事態になったことは完全に私の自業自得であり、私の横着と怠慢故の質問で大変恐縮ですが、本当に困っています。ここ1週間は慢性的に頭痛腹痛に悩まされ、夜も眠れません。どなたかお助け下さい。どうかよろしくお願い申し上げます。
お恥ずかしながら、以下が私が作成したコードになります。
Button1は開始ボタン、Label1は文字を表示するラベル、Trialは試行数カウンタ、StartTimeは表示開始時間、EndTime1は表示終了時間、RespTimeはキーを押した時間、EndTime2は暗転終了時間、Latencyは表示開始からキーが押されるまでの時間、EndFlag1は表示終了、EndFlag2は暗転終了、StimTypeは文字の種類、dataは当座の順番保管場所になります。
(以下作成コード)
Public Class Form1
Declare Function GetAsyncKeyState Lib "user32.dll" (ByVal nVirtKey As Integer) As Short
Dim Trial As Integer
Dim StartTime, EndTime1, RespTime, EndTime2, Latency(130) As Long
Dim EndFlag1, EndFlag2 As Boolean
Dim StimType(30) As Integer
Dim data(30) As Integer
Dim i As Integer
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Button1.Visible = False
EndFlag1 = False
Trial = 1
ArrangeStim()
StimStream()
End Sub
Private Sub StimStream()←文字の表示
Label1.Visible = True
StartTime = System.Environment.TickCount
EndFlag2 = False
StimType(Trial) = data(i)
Select Case StimType(Trial)
Case 1
Label1.Text = "文字1"
Case 2
Label1.Text = "文字2"
(中略)
Case 28
Label1.Text = "文字28"
End Select
Do Until EndFlag1
Application.DoEvents()
EndTime1 = System.Environment.TickCount
If EndTime1 - StartTime > 1000 Then
EndFlag1 = True
End If
Loop
If EndFlag1 = True Then
Trial = Trial + 1
End If
If (&H001 And GetAsyncKeyState(System.Windows.Forms.Keys.Space)) = 1 Then
BlackOut()
End If
End Sub
Private Sub BlackOut()←暗転
Me.BackColor = Color.Black
RespTime = System.Environment.TickCount
Latency(Trial) = RespTime - StartTime
Do Until EndFlag2
Application.DoEvents()
EndTime2 = System.Environment.TickCount
If EndTime2 - RespTime > 10000 Then
EndFlag2 = True
End If
Loop
If EndFlag2 = True Then
Trial = Trial+ 1
StimStream()
End If
End Sub
Private Sub ArrangeStim()←文字のランダム化
Dim r, temp As Integer
For i = 1 To 28
data(i) = i
Next
For i = 1 To 28
r = Int(Rnd() * 28 + 1 - i) + i
temp = data(i)
data(i) = data(r)
data(r) = temp
Next
End Sub
End Class
No.1ベストアンサー
- 回答日時:
その示したプログラムが実際にどんな期待を裏切る動きをするのかくらい示さないと…。
どんな裏切り行為をするのかまで読むのが面倒なので、別のアプローチからのアドバイス。
いきなり全部の動作を行うプログラムから書き始めていないか?
1~5を1ステップずつ作ればデバッグも簡単だ。
今作ってあるモノは破棄して、新しく作り直すことを勧めてみる。
質問文を見る限り、いきなり完璧なモノを作ろうとしているように感じるのだ。
慣れていないならそんな無茶はしてはダメ。
早々のご回答大変ありがとうございました。
プログラミングに関する質問が初めてであり、また非常に焦っていたため、過去の質問等を閲覧するなどして明示すべきことを把握することを怠ってしまいました。大変申し訳ありませんでした。また、読みにくい駄文長文となってしまい、大変失礼致しました。
このプログラムですと、開始ボタンを押すと開始ボタンが消えて文字が出るところまではできるのですが、「文字1」しか表示されず、10秒経っても次の文字に切り替わりません。また、「文字1」の表示中にスペースキーを押すと画面全体が暗転するのですが、10秒経っても暗転状態が終わらず、ずっと暗転したままです。
以前からうまくいかない度に何回も破棄しては1から作り直していたのですが、自分ではステップを踏んだつもりになっていただけで、仰る通りそのひとつひとつがちゃんと作動するかどうかの確かめを怠っていたのだと思います。もう一度、動作をひとつずつ作っていこうと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
リピート再生が出来ません
-
スクリーンセイバーの作り方
-
PL/Iについて
-
プログラミングの質問です。x^2...
-
Borland C++ 5.5.1でデバッグす...
-
アセンブリ名とは??
-
作業工程 SDとMD
-
VB 1対1の簡単なチャットプログ...
-
プログラミングを使ったYoutube...
-
MATLABでの不連続グラフについて
-
プログラミングとかクッソ難し...
-
図形の中心の取り方を教えてく...
-
push any key で終了する方法?
-
ローグライクゲームの参考本
-
情報処理検定プログラミング部...
-
exeファイルを作ったり改造した...
-
WordpressのPHPを安全に編集す...
-
情報処理検定プログラミング部...
-
名城大学理工学部電気電子工学...
-
C言語で常駐ソフトを作成
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アセンブリ名とは??
-
Visual Studio Codeについて
-
procってなんですか?
-
CSVデータの"(ダブルクォーテ...
-
リピート再生が出来ません
-
作業工程 SDとMD
-
プログラミングを使ったYoutube...
-
VBAプログラミング
-
曲を作るのにプログラミングっ...
-
Delphiでxmlファイルを読み込む...
-
PL/Iについて
-
exeファイルを作ったり改造した...
-
MFCとC++/CLIとの比較
-
VBA フォルダ アクセス権限付与
-
図形の中心の取り方を教えてく...
-
プログラミング教室に入ったら...
-
C言語で個人の趣味では何が出来...
-
C言語を用いたプログラミングに...
-
プログラミングの質問です。x^2...
-
LeakTracer をshared Object の...
おすすめ情報