Dobrý den,
dělám program a zasekl jsem se teď u toho, že mi jde zapsat do pole pouze jednou a vicekrat to nejde, nebo aspon tohle si myslim. Potrebuju si zapamatovat a ulozit do pole Osu X a Osu Y, ale bohuzel jsem to ulozi pouze do pole 1 a nebo pak do dalších mohl by mi někdo pomoci ?
V programovani jsem velky zacatecnik tak se omlouvam ze kod neni usporny ani nejlepe optimalizovany.
Zde vkládám svuj zdrojovy kod. Kdyby nekdo vedel jaka je chyba treba v tech polich byl bych rad kdyby mi poradil dekuji.
(Přidávám znova předtím jsem to vlozil do spatne diskuze)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CV5_3program
{
class Program
{
static void Main(string[] args)
{
Console.Title = "Ikea Simulator 3000"; // nastaveni nazvu okna
Console.WindowHeight = 40; // vyska okna
Console.WindowWidth = 200; // sirka okna
Console.WriteLine("Nejprve zadejte hodnoty pro vykreslení místa pokoje."); // uvitani uzivatele v programu
int osaX; // promena pro osu X pro vykresleni kde ma byt ramecek
int osaY; // promena pro osu Y pro vykresleni kde ma byt ramecek
do // opakuj do te doby dokud nebude hodnota v rozmezi
{
Console.WriteLine("Nejprve osa X. Doporucuji maximalni hodnotu 50.");
osaX = Int32.Parse(Console.ReadLine()); // precteni hodnoty zadane uzivatelem
} while (osaX > 50 || osaX < 5); // bude se to opakovat do te doby dokud nebude spravna hodnota
do // opakuj do te doby dokud nebude hodnota v rozmezi
{
Console.WriteLine();
Console.WriteLine("Nejprve osa Y. Doporucuji maximalni hodnotu 20.");
osaY = Int32.Parse(Console.ReadLine()); // precteni hodnoty zadane uzivatelem
} while (osaY > 20 || osaY <= 0); // bude se to opakovat do te doby dokud nebude spravna hodnota
Console.WriteLine("Nyní zadejte velikost pokoje podle výšky a šířky.");
Console.WriteLine("Teď zadejte výšku pokoje. Doporucuji minimalni hodnotu 10.");
int vyska = Int32.Parse(Console.ReadLine()); // nastaveni vysky pokoje
Console.WriteLine();
Console.WriteLine("Teď zadejte šířku pokoje. Doporocuji minimalni hodnotu 20.");
int sirka = Int32.Parse(Console.ReadLine()); // nastaveni sirky pokoje
System.ConsoleColor barvaSteny = ConsoleColor.Red; // zakladni barva
int start = 5;
do
{
VykresliPokoj(barvaSteny, osaX, osaY, vyska, sirka); // spusteni vykresleni rmecku pokoje
NabytekGenerovani(osaX, osaY,vyska,sirka);
} while (start > 5); // opakovani do nekonečna
Console.ReadKey();
}
public static void Vymalovat(System.ConsoleColor barvaSteny, int osaX, int osaY, int vyska, int sirka)
{
Console.BackgroundColor = ConsoleColor.Black;
Console.SetCursorPosition(120, 0); // Nastaveni pozice aby byla videt volba
Console.ForegroundColor = ConsoleColor.Yellow;
Console.Write("Chcete vymalovat barvy stěn ? ano / ne"); // Otazka pro vymalovani
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine();
Console.SetCursorPosition(120, 1);
string vyberAnoNe = Console.ReadLine(); // vyber jestli chteji vymalovat pokoj
string ano = "ano"; // nadefinovani hodnoty ano
if (vyberAnoNe == ano) // pokud chce uzivatel vymalovat pokoj spusti se
{
Console.SetCursorPosition(120, 2);
Console.WriteLine("1 - Modrá barva"); // vyber barvy
Console.SetCursorPosition(120, 3);
Console.WriteLine("2 - Zelená barva"); // vyber barvy
Console.SetCursorPosition(120, 4);
Console.WriteLine("3 - Žlutá barva"); // vyber barvy
Console.SetCursorPosition(120, 5);
Console.WriteLine("4 - Šedá barva"); // vyber barvy
Console.SetCursorPosition(120, 6);
Console.WriteLine("Vyberte si barvu pokoje podle čísla."); // vyber barvy
Console.SetCursorPosition(120, 7);
int vyberBarev = int.Parse(Console.ReadLine()); // cekani na vyber barvy podle cisla od uzivatele
switch (vyberBarev) // switch pro vyber barvy
{
case 1: // vyber diky zadani z konzole
barvaSteny = ConsoleColor.Blue;
VykresliPokoj(barvaSteny, osaX, osaY, vyska, sirka); // pro pamatovani ostatnich promenných
break;
case 2: // vyber diky zadani z konzole
barvaSteny = ConsoleColor.Green;
VykresliPokoj(barvaSteny, osaX, osaY, vyska, sirka); // pro pamatovani ostatnich promenných
break;
case 3: // vyber diky zadani z konzole
barvaSteny = ConsoleColor.Yellow;
VykresliPokoj(barvaSteny, osaX, osaY, vyska, sirka); // pro pamatovani ostatnich promenných
break;
case 4: // vyber diky zadani z konzole
barvaSteny = ConsoleColor.Gray;
VykresliPokoj(barvaSteny, osaX, osaY, vyska, sirka); // pro pamatovani ostatnich promenných
break;
default: // pokud uzivatel zada neplatnou hodnotu
Console.SetCursorPosition(120, 8);
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Zadal jsi neplatnou hodnotu barva zůstala stejná.");
Console.ForegroundColor = ConsoleColor.White;
break;
}
}
else // pokud uzivatel zada neco jineho nez ano barva zustane stejna
{
Console.SetCursorPosition(120, 2);
Console.Write("Barva stěn zůstane stejná jak byla.");
}
}
// metoda pro generovani nabytku / Pridani / Zruseni / novy Nabytek
private static void NabytekGenerovani(int osaX, int osaY, int vyska, int sirka)
{
Console.SetCursorPosition(120, 3);
Console.ForegroundColor = ConsoleColor.Yellow;
Console.Write("Chcete přidat nabytek? ano / ne ");
Console.ForegroundColor = ConsoleColor.White;
Console.SetCursorPosition(120, 4);
string vyberNabytek = Console.ReadLine(); // vyber jestli chteji pridat nabytek do pokoje
string VyberAno = "ano"; // definice rozhodnuti ano
if (vyberNabytek == VyberAno) // pokud si vybere ano spusti se vyber nabytku
{
int stranaA = 0;
int stranaB = 0;
Console.SetCursorPosition(120, 5);
Console.Write("Vyber si jaký nabytek chceš vložit.");
Console.SetCursorPosition(120, 6);
Console.WriteLine("1 - Židle"); // vyber nábytku
Console.SetCursorPosition(120, 7);
Console.WriteLine("2 - Stůl"); // vyber nábytku
Console.SetCursorPosition(120, 8);
Console.WriteLine("3 - Postel"); // vyber nábytku
Console.SetCursorPosition(120, 9);
Console.WriteLine("4 - Skříň"); // vyber nábytku
Console.SetCursorPosition(120, 10);
Console.WriteLine("5 - Komoda"); // vyber nábytku
Console.SetCursorPosition(120, 11);
Console.WriteLine("Vyberte si nový nábytek podle čísla."); // vyber nábytku
Console.SetCursorPosition(120, 12);
int vyberNabytku = int.Parse(Console.ReadLine()); // cekani na vyber nabytku podle cisla od uzivatele
switch (vyberNabytku) // switch pro vyber nabytku
{
case 1: // vyber diky zadani z konzole ========= ZIDLE
stranaA = 2; // velikost strany X
stranaB = 2; // velikost strany Y
break;
case 2: // vyber diky zadani z konzole =========== STUL
stranaA = 4; // velikost strany X
stranaB = 2; // velikost strany Y
break;
case 3: // vyber diky zadani z konzole =========== POSTEL
stranaA = 2; // velikost strany X
stranaB = 4; // velikost strany Y
break;
case 4: // vyber diky zadani z konzole ========== SKRIN
stranaA = 3; // velikost strany X
stranaB = 3; // velikost strany Y
break;
case 5: // vyber diky zadani z konzole ========== KOMODA
stranaA = 5; // velikost strany X
stranaB = 5; // velikost strany Y
break;
default: // pokud uzivatel zada neplatnou hodnotu
Console.SetCursorPosition(120, 13);
Console.BackgroundColor = ConsoleColor.Red;
Console.WriteLine("Zadal jsi neplatnou hodnotu.");
Console.BackgroundColor = ConsoleColor.Black;
break;
}
int polePromenna2 = 0;
int[] PoleStranaA = new int[5];
int[] PoleStranaB = new int[5];
PoleStranaA[polePromenna2] = stranaA; // ukladani hodnoty osy x do pole
PoleStranaB[polePromenna2] = stranaB; ; // ukladani hodnoty osy y do pole
polePromenna2++;
PridejNabytek(osaX, osaY, stranaA, stranaB,vyska,sirka, ref PoleStranaA, ref PoleStranaB, ref polePromenna2); // spusteni metody pridani nabytku
}
else // pokud uzivatel nebude už chtít přidat nabytek muže buď odebrat nebo ukončit program
{
Console.SetCursorPosition(120, 30);
Console.BackgroundColor = ConsoleColor.Red;
Console.ForegroundColor = ConsoleColor.Black;
Console.WriteLine("Stisknutím libovolného tlačítka vypnete program.");
Console.BackgroundColor = ConsoleColor.Black;
Console.SetCursorPosition(120, 31);
Console.ReadKey();
}
}
private static void ZrusNabytek(ref int[] poleX, ref int[] poleY, ref int polePromenna,ref int[] PoleStranaA, ref int[] PoleStranaB, ref int polePromenna2)
{
int osaX;
int osaY;
int stranaA;
int stranaB;
Console.SetCursorPosition(120, 25);
Console.Write("Chcete zrušit nějaký nábytek? ano / ne");
Console.SetCursorPosition(120, 26);
string vyberZruseni = Console.ReadLine(); // vyber jestli chteji pridat nabytek do pokoje
string VyberAno = "ano";
if (vyberZruseni == VyberAno) // pokud si vybere ano spusti se
{
Console.SetCursorPosition(120, 27);
Console.BackgroundColor = ConsoleColor.DarkBlue;
Console.WriteLine("Vyber si co chceš vymazat.");
Console.BackgroundColor = ConsoleColor.Black;
Console.SetCursorPosition(120, 28);
Console.WriteLine("1 - Nábytek"); // vyber nábytku
Console.SetCursorPosition(120, 29);
Console.WriteLine("2 - Nábytek"); // vyber nábytku
Console.SetCursorPosition(120, 30);
Console.WriteLine("3 - Nábytek"); // vyber nábytku
Console.SetCursorPosition(120, 31);
Console.WriteLine("4 - Nábytek"); // vyber nábytku
Console.SetCursorPosition(120, 32);
Console.WriteLine("5 - Nábytek"); // vyber nábytku
Console.SetCursorPosition(120, 33);
int vyberNabZruseni = int.Parse(Console.ReadLine()); // vyber uzivatele co chce zrusit
osaX = poleX[vyberNabZruseni-1]; // prevedni z pole na osu X
osaY = poleY[vyberNabZruseni-1]; // prevedni z pole na osu Y
stranaA = PoleStranaA[vyberNabZruseni-1]; // prevedeni z pole na stranu A
stranaB = PoleStranaB[vyberNabZruseni-1]; // prevedeni z pole na stranu B
Console.SetCursorPosition(osaX, osaY); // Nastaveni pozice vykresleni nabytku
for (int i = 1; i < stranaA; i++) // For pro sloupce
{
for (int j = 1; j < stranaB; j++) // For pro radky
{
Console.BackgroundColor = ConsoleColor.Black;
Console.Write(" ", i, j); // vykresleni
Console.BackgroundColor = ConsoleColor.Black;
Console.SetCursorPosition(osaX, osaY + 1); // nastaveni pozice
}
Console.Write(""); // Odradkovani
}
}
else
{
Console.SetCursorPosition(120, 27);
Console.BackgroundColor = ConsoleColor.Red;
Console.WriteLine("Nevybral jste si nic na zrušení.");
Console.BackgroundColor = ConsoleColor.Black;
}
}
public static void PridejNabytek(int osaX, int osaY, int stranaA, int stranaB, int vyska, int sirka, ref int[] PoleStranaA, ref int[] PoleStranaB, ref int polePromenna2) // pokud uzivatel chce pridat nabytek
{
int polePromenna = 0; // pro zvoleni kam zapsat do pole
int[] poleX = new int[5]; // deklarovani pole
int[] poleY = new int[5]; // deklarovani pole
int poziceA = 0; // pozice vykresleni na ose X
int poziceB = 0; // pozice vykresleni na ose Y
int revOsaX = osaX; // pro backup OSY X
int revOsaY = osaY; // pro backup OSY Y
PresunNabytek(ref poziceA, ref poziceB, osaX, osaY,vyska,sirka); // spusti se metoda presun nabytek
osaX = osaX + poziceA; // nastaveni pozice vykresleni nabytku osa x
osaY = osaY + poziceB; // nastaveni pozice vykresleni nabytku osa y
poleX[polePromenna] = osaX; // ukladani hodnoty osy x do pole
poleY[polePromenna] = osaY; // ukladani hodnoty osy y do pole
polePromenna++; // ikrementace promenne pro zvoleni dalsiho pole
System.ConsoleColor barvaNabytku = ConsoleColor.DarkBlue;
NabarviNabytek(ref barvaNabytku); // nabarveni nabytku
Console.SetCursorPosition(osaX, osaY); // Nastaveni pozice vykresleni nabytku
for (int i = 1; i < stranaA; i++) // For pro sloupce
{
for (int j = 1; j < stranaB; j++) // For pro radky
{
Console.BackgroundColor = barvaNabytku;
Console.Write(" ", i, j); // vykresleni
Console.BackgroundColor = ConsoleColor.Black;
Console.SetCursorPosition(osaX, osaY + 1); // nastaveni pozice
}
Console.Write(""); // Odradkovani
}
// vymazani obsahu textu pro cistou obrazovku
Console.SetCursorPosition(120, 4); Console.Write(" "); Console.SetCursorPosition(120, 5); Console.Write(" "); Console.SetCursorPosition(120, 6); Console.Write(" "); Console.SetCursorPosition(120, 7); Console.Write(" "); Console.SetCursorPosition(120, 8); Console.Write(" "); Console.SetCursorPosition(120, 9); Console.Write(" "); Console.SetCursorPosition(120, 10); Console.Write(" "); Console.SetCursorPosition(120, 11); Console.Write(" ");
Console.SetCursorPosition(120, 12); Console.Write(" "); Console.SetCursorPosition(120, 13); Console.Write(" "); Console.SetCursorPosition(120, 14); Console.Write(" "); Console.SetCursorPosition(120, 15); Console.Write(" "); Console.SetCursorPosition(120, 16); Console.Write(" "); Console.SetCursorPosition(120, 17); Console.Write(" ");
Console.SetCursorPosition(120, 18); Console.Write(" "); Console.SetCursorPosition(120, 19); Console.Write(" "); Console.SetCursorPosition(120, 20); Console.Write(" "); Console.SetCursorPosition(120, 21); Console.Write(" "); Console.SetCursorPosition(120, 22); Console.Write(" "); Console.SetCursorPosition(120, 23); Console.Write(" "); Console.SetCursorPosition(120, 24); Console.Write(" ");
osaX = revOsaX; // nulovani osy X aby se nepricitalo znovu
osaY = revOsaY; // nulovani osy Y aby se nepricitalo znovu
// spusteni metody zrus nabytek
ZrusNabytek(ref poleX,ref poleY, ref polePromenna, ref PoleStranaA, ref PoleStranaB,ref polePromenna2); // spusteni zruseni nabytku
Console.SetCursorPosition(120, 27); Console.Write(" "); Console.SetCursorPosition(120, 28); Console.Write(" "); Console.SetCursorPosition(120, 29); Console.Write(" "); Console.SetCursorPosition(120, 30); Console.Write(" ");
Console.SetCursorPosition(120, 31); Console.Write(" "); Console.SetCursorPosition(120, 32); Console.Write(" "); Console.SetCursorPosition(120, 33); Console.Write(" ");
NabytekGenerovani(osaX, osaY,vyska,sirka); // spusteni znovu
}
private static void NabarviNabytek(ref System.ConsoleColor barvaNabytku)
{
Console.SetCursorPosition(120, 18);
Console.WriteLine("Vyberte si barvu nábytku.");
Console.SetCursorPosition(120, 19);
Console.WriteLine("1 - Modrá barva"); // vyber barvy
Console.SetCursorPosition(120, 20);
Console.WriteLine("2 - Zelená barva"); // vyber barvy
Console.SetCursorPosition(120, 21);
Console.WriteLine("3 - Žlutá barva"); // vyber barvy
Console.SetCursorPosition(120, 22);
Console.WriteLine("4 - Šedá barva"); // vyber barvy
Console.SetCursorPosition(120, 23);
Console.WriteLine("Vyberte si barvu pokoje podle čísla."); // vyber barvy
Console.SetCursorPosition(120, 24);
int vyberBarvy = int.Parse(Console.ReadLine());
switch (vyberBarvy) // switch pro vyber barvy
{
case 1: // vyber diky zadani z konzole
barvaNabytku = ConsoleColor.Blue;
break;
case 2: // vyber diky zadani z konzole
barvaNabytku = ConsoleColor.Green;
break;
case 3: // vyber diky zadani z konzole
barvaNabytku = ConsoleColor.Yellow;
break;
case 4: // vyber diky zadani z konzole
barvaNabytku = ConsoleColor.Gray;
break;
default: // pokud uzivatel zada neplatnou hodnotu
Console.SetCursorPosition(120, 8);
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Zadal jsi neplatnou hodnotu barva zůstala stejná.");
Console.ForegroundColor = ConsoleColor.White;
break;
}
}
public static void PresunNabytek(ref int poziceA, ref int poziceB, int osaX, int osaY, int vyska, int sirka)
{
Console.SetCursorPosition(120, 13);
Console.WriteLine("Vyberte si kde chcete umístit nábytek.");
do
{
Console.SetCursorPosition(120, 15); // je tu zde pro vymazani obsahu pokud uzivatel zada moc velkou hodnotu
Console.Write(" ");
Console.SetCursorPosition(120, 14);
Console.WriteLine("Zadej osu X. Sirka byla {0}",sirka);
Console.SetCursorPosition(120, 15);
poziceA = int.Parse(Console.ReadLine()); // vybrani uzivatelem pozice A
} while (poziceA > sirka || poziceA < 0); // pokud je hodnota zvolena uzivatelem vetsi nez sirka okna znovu se zada cislo
do
{
Console.SetCursorPosition(120, 17); // je tu zde pro vymazani obsahu pokud uzivatel zada moc velkou hodnotu
Console.Write(" ");
Console.SetCursorPosition(120, 16);
Console.WriteLine("Zadej osu Y. Vyska byla {0}",vyska);
Console.SetCursorPosition(120, 17);
poziceB = int.Parse(Console.ReadLine()); // vybrani uzivatele pozice B
} while (poziceB > sirka || poziceB < 0); // pokud je hodnota zvolena uzivatelem vetsi nez sirka okna znovu se zada cislo
}
public static void VykresliPokoj(System.ConsoleColor barvaSteny, int osaX, int osaY, int vyska, int sirka) // metoda pro vykresleni pokoje
{
Console.Clear(); // vycisteni displeje
Console.BackgroundColor = barvaSteny; // nastaveni barvy podle predchoziho vyberu a nebo podle zakladu
Console.SetCursorPosition(osaX, osaY); // nastaveni kde se bude ramecek vykreslovat
for (int i = 0; i < sirka + 1; i++)
{
Console.SetCursorPosition(osaX + i, osaY);
Console.Write(" "); // Vykresleni Horni strany obdelniku / ctverce
}
for (int i = 0; i < vyska + 1; i++)
{
Console.SetCursorPosition(osaX, osaY + i);
Console.Write(" "); // Vykresleni Leve strany obdelniku / ctverce
}
for (int i = 0; i < sirka + 1; i++)
{
Console.SetCursorPosition(osaX + i, osaY + vyska);
Console.Write(" "); // Vykresleni Dolni strany obdelniku / ctverce
}
for (int i = 0; i < vyska + 1; i++)
{
Console.SetCursorPosition(osaX + sirka, osaY + i);
Console.Write(" "); // Vykresleni Prave strana obdelniku / ctverce
}
Vymalovat(barvaSteny, osaX, osaY, vyska, sirka); // spusteni metody pro vymalovani
}
}
}