2012-03-16 3 views
-4

... Je travaille au hasard en C#. Je veux utiliser un hasard pour voir déplacer la chaîne dans & aléatoire c'est le code que je vous écris, mais il ne marche pas travailler je veux savoir ce que je fais malcomment écrire un code aléatoire dans C#

using system ; 
namespace work 
{ 
    static random random =new random(); 
    static int max_X=console.windowwidth; 
    static int max_Y=console.windowheight; 
    static void main(string[] args) 
    { 
     int x=random.next(max_X); 
     int y=random.next(max_Y); 
     console.setcursorposition(x,y); 
     console.write("walaa"); 
    } 
} 
} 
+2

Pouvez-vous décrire en quoi cela ne fonctionne pas? Ou est votre problème le fait que le code ne compile pas? –

+8

Premier problème: C# est sensible à la casse. Aucun de votre code ne fonctionnera pour le moment. Problème suivant: vous n'avez pas dit * comment * cela ne fonctionne pas, en supposant que votre code * real * utilise le bon boîtier ... –

+0

En quoi cela ne fonctionne-t-il pas? Qu'est-ce qui se passe? Avez-vous une erreur? – Haedrian

Répondre

2

Je suppose que votre problème est que votre programme ne compile pas. Voici une version qui fait:

using System; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static Random random = new Random(); 
     static int max_X = Console.WindowWidth; 
     static int max_Y = Console.WindowHeight; 

     static void Main(string[] args) 
     { 
      int x = random.Next(max_X); 
      int y = random.Next(max_Y); 
      Console.SetCursorPosition(x, y); 
      Console.Write("walaa"); 
      Console.ReadLine();//keep console open so you can see output 
     } 
    } 
} 

En C#, pour définir des méthodes, vous devez définir une classe. Cela manquait dans votre code.

L'autre problème important est que C# est sensible au cas du texte. Autrement dit, les majuscules et les minuscules sont traitées différemment par le compilateur. Par exemple, la classe est nommée Random plutôt que random, et ainsi de suite.

Votre manuel contiendra toutes ces informations et je vous suggère de réviser les sections introductives de ce livre.


Vous demandez comment déplacer le texte sur l'écran. Voulez-vous dire comme ça?

using System; 
using System.Threading; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static Random random = new Random(); 
     static int max_X = Console.WindowWidth; 
     static int max_Y = Console.WindowHeight; 

     static void Main(string[] args) 
     { 
      while (true) 
      { 
       int x = random.Next(max_X); 
       int y = random.Next(max_Y); 
       Console.Clear(); 
       Console.SetCursorPosition(x, y); 
       Console.Write("walaa"); 
       Thread.Sleep(500); 
       while (Console.KeyAvailable) 
       { 
        ConsoleKeyInfo cki = Console.ReadKey(); 
        if (cki.Key == ConsoleKey.Escape) 
        { 
         return; 
        } 
       } 
      } 
     } 
    } 
} 
+0

+1 pour ajouter 'Console.ReadLine();'. @WalaaElsaid: Sans cette addition, la console se fermera immédiatement après l'exécution du code. 'ReadLine' le garde ouvert jusqu'à ce que vous frappiez' '. –

+0

c'est vrai mais ça ne bouge toujours pas –

+1

@WalaaElsaid Il ne bouge pas car le code ne le fait pas bouger. Il imprime une seule chaîne de 5 caractères, puis se termine. Si vous voulez que le texte bouge, vous devez le programmer. Vous ne pouvez pas vous attendre à ce que vous sachiez ce que vous attendez du comportement du programme puisque vous n'avez pas dit ce que vous attendiez de lui. –

0

Lorsque vous créez un nouveau projet de console dans Visual Studio (et dans d'autres IDE) un texte comme le texte suivant est inséré

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
     } 
    } 
} 

Gardez cette structure générale et placez votre code dans la méthode Main entre { et }.


MISE À JOUR:

faire bouger comme ça

while (!Console.KeyAvailable) { 
    int x = random.Next(max_X); 
    int y = random.Next(max_Y); 

    Console.Clear(); 
    Console.SetCursorPosition(x, y); 
    Console.Write("walaa"); 

    Thread.Sleep(500); // Pause in milliseconds 
} 

Vous aurez besoin d'ajouter un using System.Threading; avant l'espace de noms. Cela fonctionnera jusqu'à ce qu'une touche soit atteinte. Le Console.ReadLine() n'est plus requis.

while (condition) { statement_sequence } est une instruction de boucle. Il répète les déclarations tant que la condition est remplie.