2010-05-26 40 views
10

Entonces, soy un programador de C#. Conozco la sintaxis básica y cosas simples como declaraciones y bucles (métodos y clases también). Solo he usado aplicaciones de consola en este momento, todavía no me he molestado con los formularios de Windows.C# - Ideas del programa de consola para Noob

Cualquier idea de aplicación simple que introduzca cosas nuevas importantes para la programación de C#.

Además, NO hay tutoriales. Quiero hacer todo por mi cuenta.

+0

http://stackoverflow.com/questions/tagged/code-golf –

+0

si no desea tutoriales, lea un libro o el ECMA. http://www.ecma-international.org/publications/standards/Ecma-334.htm – Luiscencio

Respuesta

6

Soy un gran fan de Halo, y una de las primeras cosas que hice con C# fue escribir una aplicación que descargó y analizó mis estadísticas de juego en línea mientras jugaba Halo 2. A partir de ahí, cargué toda la información en una base de datos y se volvió a mostrar en ASP.NET. En retrospectiva, el código era horrendo, pero fue un ejercicio divertido.

Otro ejercicio fue analizar el archivo XML para mi biblioteca de música de iTunes, cargarlo en una base de datos y (por supuesto) mostrar partes de él en ASP.NET.

De todos modos, encuentre maneras de trabajar con cosas que le gustan, ya sean juegos, música, televisión o lo que sea.

4

Un juego simple puede ser un buen comienzo, pero las preguntas del código de golf pueden ser un poco más avanzadas.

¿Por qué no intentas escribir un juego de "prueba tus reflejos", en el que sacas una letra y la hora del tiempo que lleva introducir esa letra? Luego, muestre el tiempo de respuesta y el mejor tiempo de respuesta hasta la fecha.

+0

Sí, podría hacer un juego de mecanografía. Es por su velocidad y precisión ... También quiero pasar un poco de tiempo con solo C# antes de pasar a C# + XNA framework – user377419

+1

XNA? Te recomiendo que pruebes SlimDX primero, para tener una idea general de los gráficos 3D. No se puede sumergir directamente en el desarrollo de videojuegos [que es lo único que XNA es realmente bueno para = /] – Warty

0

Escribe algo recursivo, como una rutina que calcula el valor de un factorial.

+0

La mayoría de las aplicaciones no requieren programación recursiva. –

+1

@WalterA: ¿Y eso vale la pena un voto negativo? La recursión es una técnica de programación reconocida, ¿y su sugerencia es que un novato no debería aprenderla? También debes rechazar la respuesta del solucionador de Sudoku, porque la gran mayoría de las aplicaciones no tienen nada que ver con Sudoku. Y, ¿aquí estás bajando votos de respuestas de cinco años? – Cyberherbalist

+0

ok, deshice el voto –

3

Una vez que tuve que aprender bash scripting para Linux escribiendo el juego hangman, debería ser un buen ejemplo para una aplicación de consola en C#.

Consejo:

comienzo con

while(true) 
{ 
//Game code goes here, use "continue" or "break" according to game logic. 
} 
1

Una manera divertida de desarrollar sus habilidades es a través de code katas y programación concursos como Top Coder y Google Code Jam. Hay muchos ejemplos de problemas que te harán pensar, y muchos ofrecen soluciones con las que puedes comparar una vez que hayas terminado.

Incluso cuando has sido desarrollador por un tiempo, este tipo de problemas simples te permiten incorporar nuevas prácticas en tu estilo de programación (por ejemplo, un kata es una gran manera de comenzar a aprender los principios de TDD). Además, son divertidas distracciones.

1

Creo que la solución de Top-Coder problemas será una gran práctica! Es especialmente adecuado ya que todos sus problemas están basados ​​en la consola, y le harán aumentar no solo su conocimiento de C#, sino también sus habilidades de resolución de problemas y su estructura de datos/conocimiento de algoritmos.

Dicho esto, probablemente no aprenderá mucho sobre cosas nuevas o más específicas de la plataforma sobre C#, como linq, controladores de eventos, subprocesos, biblioteca de tareas paralelas, etc. Para eso, lo mejor sería encontrar un buen C# reservar y pasar por eso.

Otra forma podría ser hacer pequeños juegos. Conozco su consola, pero en realidad puedes hacer juegos como Snake, Pac-man, hangman, etc., por supuesto, con un poco de imaginación extra, pero todavía funciona y los juegos son excelentes ejercicios de aprendizaje (y son divertidos para mostrarles a las personas)

0

Recientemente desarrollé un solucionador de sudoku y un solucionador de 8Queens.

Hice el sudoku solver en la consola donde el rompecabezas estaba codificado en el proyecto. Podría tratar de hacer posible el uso de un archivo de texto como entrada. Implementé un algoritmo de fuerza bruta que funciona con recursión. Es bueno desarrollar un solucionador así y una vez que esté listo probablemente habrá muchas mejoras posibles.

El solucionador de 8Queens me enseñó dos cosas. Primero tuve que hacer un tablero de ajedrez, lo cual hice con formularios. Me enseñó sobre bolígrafos, pinceles y dibujo. También fue una buena práctica para la recursión que tienes que hacer mucho antes de que lo entiendas ...

0

Te sugiero que escribas una herramienta de línea de comandos que hace algo que quizás no pueda hacer otra cosa.

Lo único que viene a la mente es algo que aplica hojas de estilo XSL a archivos XML y escupe la salida. Hay código de muestra en todas partes, pero no he visto ninguna herramienta sencilla de Windows.

Las ventajas potenciales de este enfoque son que terminas con una herramienta útil y luego tienes la opción de convertirla en código abierto para obtener entradas/soporte adicionales.

0

bien todos ellos son difíciles de hacer, por lo que se sugiere emplear el método de copiar y pegar con mi aplicación de Blackjack
recuerde hacer referencia a añadir sintetizador de voz del sistema

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); 
       } 
      } 
     } 
    } 
} 
+4

¡Well Copy-Pase es LO PEOR DE LA PROGRAMACIÓN! – Robik

+2

Parece que el OP pedía específicamente ideas no tutoriales y, por lo tanto, definitivamente no copiar/pegar: "Quiero hacerlo todo solo". – colllin

Cuestiones relacionadas