所以,我是一名C#程序员。我知道基本的语法和简单的事情,比如if语句和循环(方法和类)。我现在只使用控制台应用程序还没有打扰Windows窗体。
所以任何简单的应用程序想法都会引入对C#编程很重要的新东西。
另外,没有教程。我想自己做一切。
答案 0 :(得分:6)
我是Halo的忠实粉丝,我用C#做的第一件事就是编写一个应用程序,在玩Halo 2时下载并解析我的在线游戏统计数据。从那里,我将所有信息加载到一个数据库并在ASP.NET中重新显示它。回想起来,代码很可怕,但这是一个有趣的练习。
另一个练习是解析我的iTunes音乐库的XML文件,将其加载到数据库中,然后(当然)在ASP.NET中显示它。
无论如何,想办法处理你喜欢的事物,无论是游戏,音乐,电视还是其他什么。
答案 1 :(得分:4)
一个简单的游戏可能是一个好的开始,但那些代码高尔夫问题可能会更高级。
为什么不试着写一个'测试你的反应'游戏,你输出一个字母和时间来键入该字母需要多长时间?然后显示所采用的响应时间和迄今为止的最佳响应时间。
答案 2 :(得分:3)
一旦我必须通过编写hangman游戏来学习linux的bash脚本,它应该是c#中控制台应用程序的一个很好的例子。
提示:
从
开始while(true)
{
//Game code goes here, use "continue" or "break" according to game logic.
}
答案 3 :(得分:1)
培养技能的一种有趣方式是code katas和Top Coder和Google Code Jam等编程竞赛。有很多示例问题会让你思考,而且很多都带有你可以在完成后比较的解决方案。
即使你曾经是一名开发人员,这些简单的问题也可以让你在编程风格中融入新的实践(例如,kata是开始学习TDD原理的好方法)。另外,它们会让人分心。
答案 4 :(得分:1)
我认为解决Top-Coder问题将是很好的做法!它特别适合,因为他们所有的问题都是基于控制台的,它们不仅会增加你对c#的了解,还会增加你的解决问题的能力和你的数据结构/算法知识。
也就是说,您可能不会了解有关C#的新的或更多特定于平台的内容,例如linq,事件处理程序,线程,并行任务库等等。为此,最好的方法是找到一本好的C#书并通过它。
另一种方式可能是制作小游戏。我知道它的控制台,但你实际上可以制作像Snake,吃豆人,刽子手等游戏,当然,还有一些额外的想象力,但它仍然有效,游戏是很棒的学习练习(很有趣,向人们展示)
答案 5 :(得分:0)
写一些递归的东西,就像计算阶乘值的例程一样。
答案 6 :(得分:0)
我最近开发了一个数独求解器和一个8Queens求解器。
我在控制台中制作了数独求解器,其中拼图本身在项目中被硬编码。您可以尝试使用文本文件作为输入。我实现了一个与递归一起使用的强力算法。开发这样一个求解器是很好的,一旦你准备好了,可能会有很多改进。
8Queens求解器学到了两件事。首先,我必须制作一个棋盘,我用表格做了。我学会了钢笔,画笔和绘画。这也是一个很好的递归练习,在你理解之前你必须做很多事情......
答案 7 :(得分:0)
我建议编写一个命令行工具来完成其他任何事情都无法完成的工作。
我想到的一件事是将XSL样式表应用于XML文件并吐出输出。到处都有示例代码但没有我见过的简单的Windows工具。
这种方法的潜在好处是您最终得到了一个有用的工具,然后您可以选择将其作为开源来获得额外的输入/支持。
答案 8 :(得分:-1)
他们都很难做到,所以我建议在我的Blackjack应用程序中使用复制粘贴方法 记得引用添加系统语音合成器
using System;
using System.Speech.Synthesis;
namespace Blackjack
{
class Blackjack
{
static string[] playerCards = new string[11];
static string hitOrStay = "";
static int total = 0, count = 1, dealerTotal = 0;
static Random cardRandomizer = new Random();
static void Main(string[] args)
{
using (SpeechSynthesizer synth = new System.Speech.Synthesis.SpeechSynthesizer())
{
Console.Title = "Blackjack";
synth.Speak("Please enter your blackjack table's name followed by a comma then the secondary name (AKA table number)");
string bjtn = Console.ReadLine();
Console.Clear();
Console.Title = bjtn;
}
Start();
}
static void Start()
{
dealerTotal = cardRandomizer.Next(15, 22);
playerCards[0] = Deal();
playerCards[1] = Deal();
do
{
Console.WriteLine("Welcome to Blackjack! You were dealed " + playerCards[0] + " and " + playerCards[1] + ". \nYour total is " + total + ".\nWould you like to hit or stay? h for hit s for stay.");
hitOrStay = Console.ReadLine().ToLower();
}
while (!hitOrStay.Equals("h") && !hitOrStay.Equals("s"));
Game();
}
static void Game()
{
if (hitOrStay.Equals("h"))
{
Hit();
}
else if (hitOrStay.Equals("s"))
{
if (total > dealerTotal && total <= 21)
{
Console.WriteLine("\nCongrats! You won the game! The dealer's total was " + dealerTotal + ".\nWould you like to play again? y/n");
PlayAgain();
}
else if (total < dealerTotal)
{
Console.WriteLine("\nSorry, you lost! The dealer's total was " + dealerTotal + ".\nWould you like to play again? y/n");
PlayAgain();
}
}
Console.ReadLine();
}
static string Deal()
{
string Card = "";
int cards = cardRandomizer.Next(1, 14);
switch (cards)
{
case 1: Card = "Two"; total += 2;
break;
case 2: Card = "Three"; total += 3;
break;
case 3: Card = "Four"; total += 4;
break;
case 4: Card = "Five"; total += 5;
break;
case 5: Card = "Six"; total += 6;
break;
case 6: Card = "Seven"; total += 7;
break;
case 7: Card = "Eight"; total += 8;
break;
case 8: Card = "Nine"; total += 9;
break;
case 9: Card = "Ten"; total += 10;
break;
case 10: Card = "Jack"; total += 10;
break;
case 11: Card = "Queen"; total += 10;
break;
case 12: Card = "King"; total += 10;
break;
case 13: Card = "Ace"; total += 11;
break;
default: Card = "2"; total += 2;
break;
}
return Card;
}
static void Hit()
{
count += 1;
playerCards[count] = Deal();
Console.WriteLine("\nYou were dealed a(n) " + playerCards[count] + ".\nYour new total is " + total + ".");
if (total.Equals(21))
{
Console.WriteLine("\nYou got Blackjack! The dealer's total was " + dealerTotal + ".\nWould you like to play again?");
PlayAgain();
}
else if (total > 21)
{
Console.WriteLine("\nYou busted, therefore you lost. Sorry. The dealer's total was " + dealerTotal + ".\nWould you like to play again? y/n");
PlayAgain();
}
else if (total < 21)
{
do
{
Console.WriteLine("\nWould you like to hit or stay? h for hit s for stay");
hitOrStay = Console.ReadLine().ToLower();
}
while (!hitOrStay.Equals("h") && !hitOrStay.Equals("s"));
Game();
}
}
static void PlayAgain()
{
string playAgain = "";
do
{
playAgain = Console.ReadLine().ToLower();
}
while (!playAgain.Equals("y") && !playAgain.Equals("n"));
if (playAgain.Equals("y"))
{
Console.WriteLine("\nPress enter to restart the game!");
Console.ReadLine();
Console.Clear();
dealerTotal = 0;
count = 1;
total = 0;
Start();
}
else if (playAgain.Equals("n"))
{
using (SpeechSynthesizer synth = new System.Speech.Synthesis.SpeechSynthesizer())
{
synth.Speak("\nPress enter to close Black jack." + dealerTotal);
}
ConsoleKeyInfo info = Console.ReadKey();
if (info.Key == ConsoleKey.Enter)
{
Environment.Exit(0);
}
else
{
Console.Read();
Environment.Exit(0);
}
}
}
}
}