2016-12-08 48 views
0

私はプログラムを作りようとしています。プログラムを作成しようとしています。プログラムを作るには、数字を入力してください。それを数字に分割し、数字に応じて異なるビープ音を鳴らします。しかし、ビープ音の間には遅延があります。ここではプロジェクトのコードは次のとおりです。Console.Beepループ内の遅延を削除する方法は?

using System; 
using System.Collections.Generic; 

namespace ConsoleApplication 
{ 
    public class Program 
    { 
     public static void Main(string[] args) 
     { 
      int[] numbersWithBeeps = new int [] { 262, 294, 330, 349, 392, 440, 494, 523, 600, 687, 878}; 
      int input; 
      Console.WriteLine("Please enter the number you would like to play."); 
      input = Convert.ToInt32(Console.ReadLine()); 
      input*=10; 
      List<int> actualNumbers = new List<int>(); 
      do{ 
       if(input%10 == 0) 
       { 
        actualNumbers.Add(0); 
       } 
       else 
       { 
        actualNumbers.Add(input%10); 
       } 
       input=input/10; 
      } while(input > 0); 

      for(int i = actualNumbers.Count - 1; i > 0; i--){ 
       Console.Beep(numbersWithBeeps[actualNumbers[i]], 500); 
      } 
     } 
    } 
} 
+1

遅延時間はどのくらいですか? –

+0

ビープ音の継続時間を 'Console.Beep'の2番目の引数で変更しようとしましたか?試してみると、ビープ音が鳴るたびに音が鳴り、実際のディレイではないようですが、別のハードウェアで動作させると違うことがあります。 – juharr

+1

[this guy](http://stackoverflow.com/a/1196069/5095502)によると: "別のスレッドからConsole.Beep()を呼び出すと、現在進行中のものは中断されます。"単純に 'if'文のリテラル遅延を繰り返し、新しい' Beep'呼び出しでハードウェアへの呼び出しを遅らせると、潜在的な答えは '878'ビープ音を1つのスレッドに作成してから、*まだ再生中です*別のスレッドで「687」というビープ音が鳴り、878→687の間に遅れなく再生されます。 – Quantic

答えて

0

遅延がforループ反復によるものです。 ビープ音には届きませんが、numbersWithBepps[]のいずれかが含まれていない反復ではありません。また、あなたの全体のdo{}whileループが不要であるようです。あなたがしていることの多くは私には意味がありません。あなたは、再生されたトーンを選択するユーザーをしたいですか?そして、なぜ

int iSoundId; 
getsound: Console.WriteLine("Enter the number of sound you want to hear:\t"); 
iSoundId = Convert.ToInt32(Console.ReadLine(); 
if (iSoundId < 32,767) 
    Console.Beep(iSoundId, 500); 
else 
{ 
    Console.WriteLine("Number too high... Try again:\n); 
    goto getSound; 
} 

また、juharr述べたように、あなたの時間は、それに影響を与える何であるかもしれません。期間を500ミリ秒の代わりにに変更してください。

+0

私は、ユーザーがそれを選ぶのを望んでいない、プログラムの全体的なポイントは、ユーザーが数字を入力し、トラックがそれを生成するので、彼は何を聞くつもりです。後で別の「種」のようなものを追加するつもりです。 「シード」に応じて、トラックは毎回違うサウンドになります。 –

+0

そして、整数値はスピーカーに適用されるヘルツレベルに基づいているため、ユーザーはビープ音の音程がわからないことは確かです。いずれにしても、私が言ったように、あなたは**継続時間**時間を250以下に下げてみることができます。問題を改善するはずです。それを試して、それが動作するかどうかを教えてください...そうでなければ、私はあなたのためにさらに詳細なものを把握しようとします。 –

関連する問題