2016-04-07 16 views
-4

Aşağıdakileri yapmak için bir program yazmak istiyorum.C# bir cümle için birden fazla cevap

  • Kullanıcı bir soru sorar ve program bu soru için 5 farklı yanıt alır ve program bir rastgele yanıt seçmelidir.

  • Program, sesli komutlara ile çalışır ve programdan geri besleme vokal olduğunu.

Kod

public partial class Form1 : Form 
{   

    SpeechSynthesizer s = new SpeechSynthesizer(); 
    Choices list = new Choices(); 
    Boolean wake = true; 
    public Form1() 
    { 

     SpeechRecognitionEngine rec = new SpeechRecognitionEngine(); 
     list.Add(new String[] { "hello", "how are you", "what time is it", "what day is it","wake", "sleep", "restart", "open studio", "close studio", "search ", "standby", "mute", "unmute", "up", "down", "hex system up", "google dog"}); 
     Grammar gr = new Grammar(new GrammarBuilder(list)); 
     try 
     { 

      rec.RequestRecognizerUpdate(); 
      rec.LoadGrammar(gr); 
      rec.SpeechRecognized += rec_SpeachRecognized; 
      rec.SetInputToDefaultAudioDevice(); 
      rec.RecognizeAsync(RecognizeMode.Multiple); 
      rec.LoadGrammar(new DictationGrammar()); 
      RecognitionResult Result = rec.Recognize(); 
      string ResultString = ""; 
      foreach (RecognizedWordUnit w in Result.Words)     
      { 
       ResultString += w.Text; 
      } 

     } 
     catch { return; } 


     InitializeComponent(); 
    } 
    public void KillProg(String s) 
    { 

     System.Diagnostics.Process[] procs = null; 
     try 
     { 
      procs = Process.GetProcessesByName(s); 
      Process prog = procs[0]; 
      if (!prog.HasExited) { prog.Kill(); } 


    }finally 
     { 
      if (procs != null) 
      { 
       foreach (Process p in procs) 
       { 
        p.Dispose(); 
       } 
      } 
     } 
}  


    public void restart() 
    { 
     Process.Start(@"D:\here.exe"); 
     Environment.Exit(0); 
    } 
    public void say(String h) 
    { 

     s.Speak(h); 

    } 

    public static void ExecuteCommand(string Command) 
    { 
     System.Diagnostics.ProcessStartInfo procStartInfo = new System.Diagnostics.ProcessStartInfo("cmd", "/c" + Command); 
     procStartInfo.RedirectStandardOutput = true; 
     procStartInfo.UseShellExecute = false; 
     procStartInfo.CreateNoWindow = true; 
     System.Diagnostics.Process proc = new System.Diagnostics.Process(); 
     proc.StartInfo = procStartInfo; 
     proc.Start(); 
     proc.Close(); 
    } 
    //Speech Commands 
    private void rec_SpeachRecognized(object sender, SpeechRecognizedEventArgs e) 
    {    
     String r = e.Result.Text; 
     if (r == "wake") wake = true; 
     if (r == "sleep") wake = false; 
     if (wake == true) 
     { 
      if (r.ToLower().Contains("search")) 
      { string query = r.Replace("search", ""); 
       query = System.Web.HttpUtility.UrlEncode(query); 
       string url = "https://www.google.com.au/search?q=" + query; 
       System.Diagnostics.Process.Start(url); } 
       if (r == "hex system up") { Process.Start(@"C:\Program Files\Rainmeter\Rainmeter.exe"); say("Welcome back sir     the system is loading and all energy is stabilized  ,   now i am at 100% capacity"); } 
       if (r == "down") { ExecuteCommand("C:/nircmd.exe changesysvolume -10000"); } 
       if (r == "up") { ExecuteCommand("C:/nircmd.exe changesysvolume 10000"); } 
       if (r == "unmute") { ExecuteCommand("C:/nircmd.exe mutesysvolume 0"); say("system unmute sir"); } 
       if (r == "mute") { say("mute now!"); ExecuteCommand("C:/nircmd.exe mutesysvolume 1"); } 
       if (r == "standby") { say("The system will enter in waiting mode sir"); ExecuteCommand("C:/nircmd.exe standby"); } 
       if (r == "close studio") { KillProg("WDExpress"); } 
       if (r == "open studio") { Process.Start(@"C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\WDExpress.exe"); } 
       if (r == "hello") { say("Hi"); } 
       if (r == "how are you") { say("Great , and you?"); } 
       if (r == "what time is it") { say(DateTime.Now.ToString("hh:mm")); } 
       if (r == "what day is it") { say(DateTime.Now.ToString("M/d/yyyy")); } 
       if (r == "open google") { Process.Start("https://www.google.ro"); } 


     } 



    } 

    private void say() 
    { 
     throw new NotImplementedException(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 

    } 

    public bool c { get; set; } 

    public int r { get; set; } 

    public int rnd { get; set; } 

    public Grammar dictationGrammar { get; set; } 
} 
} 

cevap

1

Sen xy için (0..4, 1..5 neyse) dan generate a random number için System.Random gerekir:

using System; 

public class Program 
{ 
    public static void Main() 
    { 
     // Define answers 
     string[] answers = new[] { 
      "Some answer", 
      "Another answer", 
      "Yet another answer", 
      "Foo answer", 
      "Bar answer" 
     }; 

     // Create a new instance of the Random class 
     var rng = new Random(); 

     // Pick a random number between 0 and the number of elements in the answers array 
     int randomnumber = rng.Next(0, answers.Length); 

     // Print random answer 
     Console.WriteLine(answers[randomnumber]); 
    } 
} 

İşte bu kadar. Bu kadar basit. Yukarıdaki kod here ile oynayın. Yerine: Senin durumunda

muhtemelen başka not Console.WriteLine(answers[randomnumber]); ama say(answers[randomnumber]);

yazmak olmaz

if (r == "hex system up") { ... } 
if (r == "down") { ... } 
if (r == "up") { ... } 
if (r == "unmute") { ... } 
if (r == "mute") { ... } 
if (r == "standby") { ... } 

Çalışma switch statement ve buna benzer bakmak için kodunuzu yeniden yazın:

switch (r.ToLowerInvariant()) { 
    case "hex system up": 
     Process.Start(@"C:\Program Files\Rainmeter\Rainmeter.exe"); 
     Say("Welcome back sir"); 
     break; 
    case "down": 
     ExecuteCommand(@"C:\nircmd.exe changesysvolume -10000"); 
     break; 
    case "up": 
     ExecuteCommand(@"C:\nircmd.exe changesysvolume 10000"); 
     break; 
    case "unmute": 
     ExecuteCommand(@"C:\nircmd.exe mutesysvolume 0"); 
     Say("system unmute sir"); 
     break; 
    case "mute": 
     Say("mute now!"); 
     ExecuteCommand(@"C:\nircmd.exe mutesysvolume 1"); 
     break; 
    case "standby": 
     Say("The system will enter in waiting mode sir"); 
     ExecuteCommand(@"C:\nircmd.exe standby"); 
     break; 
    // ... rest here ... 
    default: 
     Say("Unknown command sir!"); 
     break; 
} 

Ayrıca, tutarlı kalmaya çalışın:

  • e xecute ommand ->s ay =>S ay. @ =>"C: nircmd.exe \"

.Net Naming Guidelines Oku:> "/nircmd.exe C" -: "\ Progam Files ... C" @

  • . "Her şeyi açıklamak için insanlara sormayın, daha fazla bilgi gerekiyorsa o zaman bir belirli soru sormak lütfen

    d:

    Öyle adım her şeyi adım açıklayınız C# yeniyim adım adım".

  • İlgili konular