C# programmering array till gameboard

Permalänk

C# programmering array till gameboard

Hej! Jag har sett att det finns fler trådar med denna uppgift och noggrant gått igenom allihop, men finner inte svaret på min fråga!

Jag håller på med en skoluppgift där jag ska göra ett lottoprogram med hjälp av arrays och slumptal.
Jag kommer inte vidare med min kod just nu då jag redan har bestämt mig hur jag vill att den ska se ut (användarvänlig och skön att kolla på:)). Problemet jag sitter fast i just nu är att jag inte förstår hur jag kan skriva ut användarens tal lagda i min array till ett nytt gameboard.
Jag vill alltså skriva ut indexvärdena i gameboardet jag ska lägga in där nere. Trodde det skulle gå att kopiera mitt tomma gameboard och sedan köra på [0], [1], [2] osv.. Men det gick ju inte..

Finns det någon vänlig själ som skulle kunna förklara för mig hur jag ska göra? Letar alltså inte bara efter ett svar, utan vill förstå varför jag ska göra som jag ska göra.
Jag skriver med språket C#. (Hoppas det blir rätt med hur jag lägger in koden nu, är som sagt en newbie).

Kod just nu:

using System; namespace Lottobollar { class Program { public static void Main(string[] args) { int [] usersWorth = new int[9]; //Skapar vektor med plats 10 index av värdetyp int Random random = new Random(); //Slumpar fram ett tal int winningNr = random.Next(1,26); //Variabel som berättar att det vinnande talet är mellan 1-25 = winningNr //Hälsar användare välkommen och ger användaren instruktioner till spelet Console.WriteLine("Hi and welcome to The Lottery-game!\n"); Console.WriteLine("Instructions to the game:\nYou will be asked to write in 9 diffrent lottery-ball numers between 1-25 into your board: "); //Skapar en tvådimensionell vektor som är 3x3 stor int [,] gameBoard = new int[,]{{0, 0, 0}, {0, 0, 0}, {0, 0, 0}}; for (int i = 0; i < gameBoard.GetLength(0); i++) // For-loop som går igenom vektorn nerifrån och upp { Console.WriteLine(" -------------"); Console.Write(" | "); for (int j = 0; j < gameBoard.GetLength(1); j++) //For-loop som går igenom vektorn från vänster till höger { Console.Write(gameBoard[i, j] + " | "); //Skriver ut en tom lottobricka } Console.WriteLine(""); } Console.WriteLine(" -------------"); Console.WriteLine("If any of your choices matches the random lottery-ball number in todays lottery, you'll win.\nGood luck, champ!\n"); Console.WriteLine("Please enter you 9 lottery numbers: \n"); //Ber användaren skriva in sina lottonummer for (int i = 0; i < usersWorth.Length; i++) //Loop som låter användaren skriva in sina 9 lottotal { Console.Write("Your lottery number " + (i + 1) + " : "); string str = Console.ReadLine(); int number = Convert.ToInt32(str); //Omvandlar användarens string till int usersWorth[i] = number; } Console.Write("Your lottery-ball board is now set to : \n "); Console.Write("Press any key to exit the game."); Console.ReadKey(true); } } }

Permalänk
Medlem

Du behöver uppdatera värdena i ditt gameboard i så fall, d.v.s. gameBoard[0, 0] = *något värde* o.s.v. Antingen direkt när du får ett nytt värde från användaren, eller efter inmatningen med hjälp av usersWorth.

Men en enklare lösning är troligtvis att bara göra en utskriftsmetod som skriver ut en 1-dimensionell array tre element i taget som du kan använda för att skriva ut usersWorth som en fyrkantig spelbräda. Då behöver du inte gameBoard alls.

Permalänk
Skrivet av perost:

Du behöver uppdatera värdena i ditt gameboard i så fall, d.v.s. gameBoard[0, 0] = *något värde* o.s.v. Antingen direkt när du får ett nytt värde från användaren, eller efter inmatningen med hjälp av usersWorth.

Men en enklare lösning är troligtvis att bara göra en utskriftsmetod som skriver ut en 1-dimensionell array tre element i taget som du kan använda för att skriva ut usersWorth som en fyrkantig spelbräda. Då behöver du inte gameBoard alls.

Hur gör jag en sådan då? Jag hittade gameboardet i min bok, men står inget om hur man gör den en-dimensionell board? Jag vet inte om jag är ungefär sämst i världen på att leta på nätet eller vad problemet är? För jag har väl iallafall lyckat spara ner användarens värde i usersWorth?

Permalänk
Medlem

Variabeln usersWorth är ju en 1-dimensionell array.
Variablen gameBoard är en 2-dimensionell array. I den första dimensionen är det tre positioner och på var och en av dem så finns det en array med tre postioner.

Console.WriteLine("Your lottery number on position 1 is:" + usersWorth[0]); Console.WriteLine("Your lottery number on position 2 is:" + usersWorth[1]); Console.WriteLine("Your lottery number on position 3 is:" + usersWorth[2]); Console.WriteLine("First three values value: " + gameBoard[0, 0] + ", " + gameBoard[0, 1] + ", " + gameBoard[0, 2]); gameBoard[0, 0] = 1; gameBoard[0, 1] = 2; gameBoard[0, 2] = 4; Console.WriteLine("First three values value: " + gameBoard[0, 0] + ", " + gameBoard[0, 1] + ", " + gameBoard[0, 2]);

Permalänk
Medlem
Skrivet av Hjälplös nybörjare:

Hur gör jag en sådan då? Jag hittade gameboardet i min bok, men står inget om hur man gör den en-dimensionell board? Jag vet inte om jag är ungefär sämst i världen på att leta på nätet eller vad problemet är? För jag har väl iallafall lyckat spara ner användarens värde i usersWorth?

Denna kod:

int rows = 3; int columns = 3; for (int y = 0; y < rows; y++) { for (int x = 0; x < columns; x++) { Console.Write(y * columns + x); } Console.WriteLine(); }

skriver ut:

012 345 678

Notera att de utskrivna siffrorna motsvarar 1-dimensionella array-index, så du kan använda dem för att indexera usersWorth direkt istället för att lagra värdena i två olika datastrukturer.