Morse kódok Console.Beep()-pel

RoliSoft
2010 May 30, Sunday 17:27

Érdekességként írtam ezt a kódrészletet, ami a Console.Beep()-pet hasznossá teszi. Megadsz neki egy üzenetet, azt meg átalakítja morse kóddá és lecsipogja. Hasznos lehet például tanulás céljából, de akármilyen célra fel lehet használni. Mondjuk puskázás céljából.

A függvény pedig a következő: Nem, nem működik szervereken, így ASP.Net-ből nem lehet a szervergépet csipogtatni a szerverteremben. Shit.

// A tábla forrása: http://hu.wikipedia.org/wiki/Morzekód
public static readonly Dictionary<char, string> Table = new Dictionary<char, string>
{
	// latin betűk
	{ 'A', ".-"     }, { 'B', "-..."    }, { 'C', "-.-."   }, { 'D', "-.."    }, { 'E', "."       },
	{ 'F', "..-."   }, { 'G', "--."     }, { 'H', "...."   }, { 'I', ".."     }, { 'J', ".---"    },
	{ 'K', "-.-"    }, { 'L', ".-.."    }, { 'M', "--"     }, { 'N', "-."     }, { 'O', "---"     },
	{ 'P', ".--."   }, { 'Q', "--.-"    }, { 'R', ".-."    }, { 'S', "..."    }, { 'T', "-"       },
	{ 'U', "..-"    }, { 'V', "...-"    }, { 'W', ".--"    }, { 'X', "-..-"   }, { 'Y', "-.--"    },
	{ 'Z', "--.."   },
	// számok
	{ '1', ".----"  }, { '2', "..---"   }, { '3', "...--"  }, { '4', "....-"  }, { '5', "....."   },
	{ '6', "-...."  }, { '7', "--..."   }, { '8', "---.."  }, { '9', "----."  }, { '0', "-----"   },
	// speciális karakterek
	{ '/', "-..-."  }, { '+', ".-.-."   }, { '=', "-...-"  }, { '.', ".-.-.-" }, { ',', "--..--"  },
	{ '?', "..--.." }, { '!', "--.--"   }, { '(', "-.--."  }, { ')', "-.--.-" }, { '-', "-....-"  },
	{ '_', "..--.-" }, { '\'', ".----." }, { ':', "---..." }, { ';', "-.-.-." }, { '$', "...-..-" },
	{ '@', ".--.-." }, { ' ', " "       },
	// magyar ékezetes karaterek
	{ 'Á', ".--.-"  }, { 'É', "..-.."   }, { 'Ö', "---."   }, { 'Ü', "..--"   }, { 'Í', ".."      },
	{ 'Ó', "---"    }, { 'Ú', "..-"     }, { 'Ő', "---."   }, { 'Ű', "..--"   }
};

public static void Morse(string message)
{
	Console.Write(String.Format("Üzenet: '{0}'\r\nMorse : ", message));

	foreach (var codes in from chr in message.ToUpper() where Table.ContainsKey(chr) select Table[chr])
	{
		foreach (var code in codes)
		{
			Console.Write(code);

			switch (code)
			{
				case '.':
					Console.Beep(392, 500); // ti esetén 392 Hz 500 milliszekundumig
					Thread.Sleep(100);
					break;
				case '-':
					Console.Beep(220, 1000); // tá esetén 220 Hz 1 másodpercig
					Thread.Sleep(100);
					break;
				case ' ':
					Thread.Sleep(1000); // szóköz esetén 1 másodpercig kussol
					break;
			}
		}

		Console.Write(" ");
		Thread.Sleep(1000);
	}
}

Hozzászólások

nincs hozzászólás