Hledáme nové posily do ITnetwork týmu. Podívej se na
volné pozice a přidej se do nejagilnější firmy na trhu -
Více
informací.
Pouze tento týden sleva až 80 % na e-learning týkající
se Swiftu. Zároveň využij výhodnou slevovou akci
až 30 % zdarma při nákupu e-learningu - více
informací.
Dobrý den,
snažím se v program dosáhnout toho abych mohl do pole po určitém cyklu
napsat novou hodnotu osy X a osy Y. Pro každou osu mam samostané pole. Tohle
se taky snažím dosáhnout u nastaveni velikosti objektu, ktere potrebuji
vykreslit.
Chyba je v tom ze program mi ulozi hodnotu ale pouze jednou ikdyz zadam nekolik
objektu s ruznymi osami.
Zde přikládám zdrojový kod.
Za kazdy typ a pomoc budu velice moc rad.
Ucim se programovat teprve chvili tak se omlouvam za spatne optimalizovany
kod.
Kod jsem nahral zde na web pod nazvem Ikea simulator.
Dekuji Jakub
Zkusil jsem: Snazil jsem se inktrementovat promennou po kazdem zapisu v poli
ale bohuzel to taky nefunguje.
Sem jeste vkladam cely kod.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
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, ;
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;
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.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++;
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");
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, 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
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, ;
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
}
}
}
Chci docílit: Snažím se dosáhnout toho aby v poli mel ulozenych treba 5
informaci ale ted mi to bohuzel nejde.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.