Permalänk
Medlem

Fastnat med ett program i C#

Hej,

Jag håller på att göra ett enkelt program som ska se ut såhär: http://i.imgur.com/U8T8L4Z.png. Såhär ser min kod ut just nu: http://pastebin.com/0dHV66gK. Om jag kör programmet nu så är julgranen till vänster så behöver "centrera" den.

Det jag skulle vilja göra nu är någon form av sats som gör så att mellanrum minskar när stjärnorna ökar, för att få julgranen "centrerad". Någon som vet hur satsen(antar att det är en till for-sats) ska se ut för att få till dessa mellanrum?

Permalänk
Medlem

Ett litet tips som kanske kan hjälpa dig, kolla in metoden PathLeft ( samt PadRight ) http://msdn.microsoft.com/en-us/library/0zk6ydzx.aspx

Visa signatur

Speldator: Ryzen 7800X3D, 64GB DDR5, RTX 3070
Server: i7-8700k, 32GB DDR4, RTX2080
Steam deck + de fiesta konsoller.

Permalänk
Medlem
Skrivet av MugiMugi:

Ett litet tips som kanske kan hjälpa dig, kolla in metoden PathLeft ( samt PadRight ) http://msdn.microsoft.com/en-us/library/0zk6ydzx.aspx

Funkar det att göra PadCenter? För just nu är den på PadLeft och tror att PadRight gör att den flyttas längst till höger.

Permalänk
Medlem
Skrivet av zAjtarN:

Funkar det att göra PadCenter? För just nu är den på PadLeft och tror att PadRight gör att den flyttas längst till höger.

Om du läser länken du fick så står det precis vad funktionen gör, där kan du även se att det inte finns något "PadCenter".

Exemplet från länken med dokumentationen (http://msdn.microsoft.com/en-us/library/0zk6ydzx.aspx):

string str = "BBQ and Slaw"; Console.WriteLine(str.PadLeft(15)); // Displays " BBQ and Slaw". Console.WriteLine(str.PadLeft(5)); // Displays "BBQ and Slaw".

PadLeft lägger alltså till mellanslag i början så att strängen åtminstonde blir lika lång som det angivna värdet (15 och 5 i exemplet).

Permalänk
Medlem

for (int n = 0; n < i; n++){ txtOutput.Text += ("*"); } // end inner for

går att skriva om till

txtOutput.Text += new string('*',i);

Permalänk
Medlem

Om du har gjort en for-sats för att öka antalet * per rad så borde det inte vara så svårt att klura ut hur du ska göra för att minska antalet mellanrum per rad. Eller är det nått du inte förstår med for-loopar? Vet du vad de 3 delarna efter for är, inom parenteserna?

Permalänk
Medlem

class Program { const int height = 19; static void Main(string[] args) { string[] julgransfot = new string[] { "#", "#", "#####" }; for(int i = 0; i < height; i++) { Console.Write(new string(' ', height - i - 1)); Console.Write(new string('*', i * 2)); Console.WriteLine("*"); } for (int a = 0; a < julgransfot.Length; a++){ Console.Write(new string(' ', height - julgransfot[a].Length / 2 - 1)); Console.WriteLine(julgransfot[a]); } Console.ReadLine(); }

Är det typ detta du vill göra? Koden kan nog optimeras ytterligare.

EDIT: Lade till en julgransfot också