合計 昨日 今日

楽器の練習や何かの暗記に使えそうなソフト

自分で作ったゲームや動画、面白いネタをみんなに宣伝しましょう!
また、気軽に作品の感想をコメントで残してあげて下さい。
Name: Rom
[URL]
初心者(6,911 ポイント)
Date: 2013年9月02日(月) 22:55
No: 1
(OFFLINE)

 楽器の練習や何かの暗記に使えそうなソフト

タイトルの通りです作ってみました
ソースも同梱してます

CPU使用率がやや高くなりますが多分正常な動作です
DXライブラリでやったせいです
ゲームではないのでホントはC#とかで作るべきなのでしょう

このような機能を持ったフリーソフトが見つからなかったので作りました

ダウンロード


使い方は添付の画像を見るだけでもなんとなくわかると思います
画像の左側にあるEmと書いているスペースにコードや暗記したい単語などを表示させられます
添付ファイル
pmusic1.gif
スクショ
pmusic1.gif (17.31 KiB) 表示数: 2476 回

Name: みけCAT
[URL]
伝説なるハッカー(683,544 ポイント)
Date: 2013年9月04日(水) 15:06
No: 2
(ONLINE)

 Re: 楽器の練習や何かの暗記に使えそうなソフト

ちょっといじってみました。
テンポや拍数をどんどん上げていくと、枠をはみ出してしまったので、上限を設けたほうがいいと思います。
Pmusic_test1.png
テンポを上げるテスト
Pmusic_test1.png (53.35 KiB) 表示数: 2373 回

Pmusic_test2.png
拍数を上げるテスト
Pmusic_test2.png (69.17 KiB) 表示数: 2373 回

このテンポ111119、11113拍の設定では、スタートすると数字が勢いよくカウントダウンしていきましたが、
時々止まっていました。特に後半、数字が小さいほど止まる間隔が短くなるようでした。
数字のカウントダウンが止まると、Amなどが表示され始めました。(仕様ですね)

また、テンポを逆に下げると、0では音が聞こえませんでしたが、-1以下にすると爆速で音が鳴り始めました。
テンポの下限も設けるべきだと思います。
Pmusic_test3.png
テンポを下げるテスト
Pmusic_test3.png (76.07 KiB) 表示数: 2373 回


再生中に拍数を切り替えられない、という仕様に戸惑いました。
今使用できないボタンはグレーなどで表示し、無効だとわかるようにすると親切だと思います。

今後の発展のために(?)、アイコンやバージョン情報(リソースを使い、プロパティで表示できるもの)をつけてみるのもいいと思います。

タイトルが表示されている部分とスタート/ストップボタンの間のスペースに役割はあるのでしょうか?

UIが「ランダム/順番」なのに対しディレクトリ名が「random/list」なのは対応がおかしい気がするので、
listをsequentialにしてはどうでしょうか?

10000件のデータをlist\8.txtに書いた状態で起動すると、真っ白な画面がしばらく続いていました。(CPU使用率は2%程度)
右上の×ボタンを押すと、強制終了になりました。
「あんまり個数が増えすぎると(200ぐらい)バグるかもしれません」という記述で逃げるのではなく、
きちんとエラー処理(上限を超えたところで読み込みを打ち切るなど)をするべきだと思います。
上限は増やさなくても構いません。(増やすことを禁止する意図はありません)

0.txt~9.txtの読み込みを全てコピペ(or全部手入力?)し、ループを使わずに書いているようですが、
これはループを使うべきです。ループを使わない理由はウンコードの生産以外に思いつきません。
あとは「宗教上の理由」くらいでしょうか?
wsprintfが嫌いでも、この場合ファイル名の数字だけ書き換える、ファイルのパスを配列に入れて持つなど、他の方法もあります。

数値を読み込む時にatoiを用い、オーバーフローを回避しているのはいいと思います。
ファイルの設定によりテンポを120、-65537拍にしたところ、最初に黒電話のような音がなり、その後音はしないようでした。
そして表示も最初の項目から動きませんでした。
0拍にすると、スタートボタンを押した時に強制終了しました。

最初に起動した状態で、「順番」→「ランダム」→「スタート」の順にボタンを押し、他のボタンは押さないようにすると、
list\0.txtの内容(テンポ、拍、表示する内容)を使ってランダムな順番で表示されるようです。
ただし、横に表示しているタイトルはrandom\0.txtに従うようです。

ファイルにデータを1件も用意しない状態(タイトル、テンポ、拍の3行のみ記入)でそのファイルを使うと、
順番モードでは最初のカウントが終わったタイミングで強制終了しましたが、
ランダムモードではカウントが終わっても強制終了せず、文字が表示されない状態でメトロノームの音が流れました。

データ部分(表示されるテキスト)を
コード[Text]: 全て選択
1
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
としたファイルを使って順番モードで実行すると、
AAABBBBB、BBBBBBBB、BBの3種類の表示がされました。(最初の2個は左右に続いているようでした)

また、データの最初の3行(タイトルなどの設定)を
コード[Text]: 全て選択
1
2
3
ああああああああああああああああああああああああ!!!!!!!!!!!!
120
4
とすると、テンポが0となり、120拍となりました。

空のファイルを使用すると、テンポ0、0拍と認識され、スタートボタンを押すと強制終了しました。(0拍だから?)

list\9.txtを以下の内容にしたところ、メトロノームやスタートボタン、拍の切り替えなどの操作はできるようですが、
一部の文字が表示されなくなりました。
コード[Text]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
多い!!!
120
0
1234567890
0123456789
9012345678
8901234567
7890123456
6789012345
5678901234
4567890123
3456789012
2345678901
1234567890
0123456789
9012345678
8901234567
7890123456
6789012345
5678901234
4567890123
3456789012
2345678901
1234567890
0123456789
9012345678
8901234567
7890123456
6789012345
5678901234
4567890123
3456789012
2345678901
1234567890
0123456789
9012345678
8901234567
7890123456
6789012345
5678901234
4567890123
3456789012
2345678901
1234567890
0123456789
9012345678
8901234567
7890123456
6789012345
5678901234
4567890123
3456789012
2345678901
1234567890
0123456789
9012345678
8901234567
7890123456
6789012345
5678901234
4567890123
3456789012
2345678901
1234567890
0123456789
9012345678
8901234567
7890123456
6789012345
5678901234
4567890123
3456789012
2345678901
1234567890
0123456789
9012345678
8901234567
7890123456
6789012345
5678901234
4567890123
3456789012
2345678901
1234567890
0123456789
9012345678
8901234567
7890123456
6789012345
5678901234
4567890123
3456789012
2345678901
1234567890
0123456789
9012345678
8901234567
7890123456
6789012345
5678901234
4567890123
3456789012
2345678901
1234567890
0123456789
9012345678
8901234567
7890123456
6789012345
5678901234
4567890123
3456789012
2345678901
1234567890
0123456789
9012345678
8901234567
7890123456
6789012345
5678901234
4567890123
3456789012
2345678901
1234567890
0123456789
9012345678
8901234567
7890123456
6789012345
5678901234
4567890123
3456789012
2345678901
1234567890
0123456789
9012345678
8901234567
7890123456
6789012345
5678901234
4567890123
3456789012
2345678901
1234567890
0123456789
9012345678
8901234567
7890123456
6789012345
5678901234
4567890123
3456789012
2345678901
1234567890
0123456789
9012345678
8901234567
7890123456
6789012345
5678901234
4567890123
3456789012
2345678901
1234567890
0123456789
9012345678
8901234567
7890123456
6789012345
5678901234
4567890123
3456789012
2345678901
1234567890
0123456789
9012345678
8901234567
7890123456
6789012345
5678901234
4567890123
3456789012
2345678901
1234567890
0123456789
9012345678
8901234567
7890123456
6789012345
5678901234
4567890123
3456789012
2345678901
1234567890
0123456789
9012345678
8901234567
7890123456
6789012345
5678901234
4567890123
3456789012
2345678901
1234567890
0123456789012345678901234567890123

また、list\9.txtを一回以下の内容で保存し、
コード[Text]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
色変更
120
4
1234567890
0123456789
9012345678
8901234567
7890123456
6789012345
5678901234
4567890123
3456789012
2345678901
1234567890
0123456789
9012345678
8901234567
7890123456
6789012345
5678901234
4567890123
3456789012
2345678901
1234567890
0123456789
9012345678
8901234567
7890123456
6789012345
5678901234
4567890123
3456789012
2345678901
1234567890
0123456789
9012345678
8901234567
7890123456
6789012345
5678901234
4567890123
3456789012
2345678901
1234567890
0123456789
9012345678
8901234567
7890123456
6789012345
5678901234
4567890123
3456789012
2345678901
1234567890
0123456789
9012345678
8901234567
7890123456
6789012345
5678901234
4567890123
3456789012
2345678901
1234567890
0123456789
9012345678
8901234567
7890123456
6789012345
5678901234
4567890123
3456789012
2345678901
1234567890
0123456789
9012345678
8901234567
7890123456
6789012345
5678901234
4567890123
3456789012
2345678901
1234567890
0123456789
9012345678
8901234567
7890123456
6789012345
5678901234
4567890123
3456789012
2345678901
1234567890
0123456789
9012345678
8901234567
7890123456
6789012345
5678901234
4567890123
3456789012
2345678901
1234567890
0123456789
9012345678
8901234567
7890123456
6789012345
5678901234
4567890123
3456789012
2345678901
1234567890
0123456789
9012345678
8901234567
7890123456
6789012345
5678901234
4567890123
3456789012
2345678901
1234567890
0123456789
9012345678
8901234567
7890123456
6789012345
5678901234
4567890123
3456789012
2345678901
1234567890
0123456789
9012345678
8901234567
7890123456
6789012345
5678901234
4567890123
3456789012
2345678901
1234567890
0123456789
9012345678
8901234567
7890123456
6789012345
5678901234
4567890123
3456789012
2345678901
1234567890
0123456789
9012345678
8901234567
7890123456
6789012345
5678901234
4567890123
3456789012
2345678901
1234567890
0123456789
9012345678
8901234567
7890123456
6789012345
5678901234
4567890123
3456789012
2345678901
1234567890
0123456789
9012345678
8901234567
7890123456
6789012345
5678901234
4567890123
3456789012
2345678901
1234567890
0123456789
9012345678
8901234567
7890123456
6789012345
5678901234
4567890123
3456789012
2345678901
1234567890
0123456789
9012345678
8901234567
7890123456
6789012345
5678901234
4567890123
3456789012
2345678901
1234567890
01234567890123456789012345BGR
最後のBGRの部分をバイナリエディタで書き換えることにより、一部の文字の色を変えられるようです。

プロジェクトをDドライブに置くことでユーザー名を推測されないようにする、というのは良い工夫だと思います。
ただ、そもそも余計なパス情報をバイナリに記録しないコンパイラを使うと、もっと良くなると思います。

とりあえず、気づいたことはこんなもんです。
長文失礼しました。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

Name: Rom
[URL]
初心者(6,911 ポイント)
Date: 2013年9月05日(木) 15:42
No: 3
(OFFLINE)

 Re: 楽器の練習や何かの暗記に使えそうなソフト

みけCATさん
長文でありがとうございます

>タイトルが表示されている部分とスタート/ストップボタンの間のスペースに役割はあるのでしょうか?
今のとこないです。機能を増やすための予備スペースです

>UIが「ランダム/順番」なのに対しディレクトリ名が「random/list」なのは対応がおかしい気がするので、
>listをsequentialにしてはどうでしょうか?
作ってるときから思ってましたが、たしかにsequentialだとわかりやすくていいですねそうします

>「あんまり個数が増えすぎると(200ぐらい)バグるかもしれません」という記述で逃げるのではなく、
>きちんとエラー処理(上限を超えたところで読み込みを打ち切るなど)をするべきだと思います。
たしかにそうですね。簡単に実装できそうなのでさせてもらいます

>0.txt~9.txtの読み込みを全てコピペ(or全部手入力?)し、ループを使わずに書いているようですが、
>これはループを使うべきです。
うまいやり方がわからず、とりあえず動けばいいや的な気持ちでやってました
wsprintfといものがあったんですね、ありがとうございます


その他のエラーやバグのほとんどがtxtファイルの読み込み関連ですね・・・
簡単に対処できるところはやろうと思うんですが使い方間違えたらエラー・フリーズは当然ジャンぐらいに
考えてるんですよね。そこの穴ふさぐ労力で機能充実使いやすさ向上を目指した方がいいのかなと

・・・しかしもっと大規模なプログラムになるとそんなこともいってられないのでしょうね

Name: みけCAT
[URL]
伝説なるハッカー(683,544 ポイント)
Date: 2013年9月05日(木) 16:06
No: 4
(ONLINE)

 Re: 楽器の練習や何かの暗記に使えそうなソフト

いろいろ書きすぎてしまったようですね。
とりあえずやるべきことは
  • ファイル読み込み処理のループ化
  • データを読み込む行数(件数)の制限(バッファのサイズと合わせるため、constで宣言した定数を使うと良い)
  • バッファサイズの指定の統一(読み込みサイズの上限は50なのに、表示する文字列を格納するバッファのサイズは30、sizeofを使うと良い)
  • テンポと拍数の上限と下限の設定(拍数の下限はあるが、ファイルから読み込んだデータは下限が反映されていない)
  • ランダムと順番の切り替えのバグの修正(切り替え時、モードに関わらずlist[now_slc%10]を設定してしまっています)
このくらいだと思います。
競技プログラミングやオンラインジャッジだと、仕様外の入力が与えられないことが保証されているんですけどね…
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)


Return to 作品お披露目掲示板

オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[1人]