IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
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í.
Avatar
Jakub Stefcek:7.4.2019 21:32

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.Collec­tions.Generic;
using System.Linq;
using System.Text;
using System.Threadin­g.Tasks;

namespace CV5_3program
{

class Program
{

static void Main(string[] args)
{
Console.Title = "Ikea Simulator 3000"; // nastaveni nazvu okna
Console.Window­Height = 40; // vyska okna
Console.WindowWidth = 200; // sirka okna

Console.Write­Line("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.Write­Line("Nejprve osa X. Doporucuji maximalni hodnotu 50.");
osaX = Int32.Parse(Con­sole.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.Write­Line();
Console.Write­Line("Nejprve osa Y. Doporucuji maximalni hodnotu 20.");
osaY = Int32.Parse(Con­sole.ReadLine()); // precteni hodnoty zadane uzivatelem
} while (osaY > 20 || osaY <= 0); // bude se to opakovat do te doby dokud nebude spravna hodnota

Console.Write­Line("Nyní zadejte velikost pokoje podle výšky a šířky.");
Console.Write­Line("Teď zadejte výšku pokoje. Doporucuji minimalni hodnotu 10.");
int vyska = Int32.Parse(Con­sole.ReadLine()); // nastaveni vysky pokoje
Console.Write­Line();
Console.Write­Line("Teď zadejte šířku pokoje. Doporocuji minimalni hodnotu 20.");
int sirka = Int32.Parse(Con­sole.ReadLine()); // nastaveni sirky pokoje

System.ConsoleColor barvaSteny = ConsoleColor.Red; // zakladni barva
int start = 5;
do
{
VykresliPokoj(bar­vaSteny, osaX, osaY, vyska, sirka); // spusteni vykresleni rmecku pokoje
NabytekGenero­vani(osaX, osaY,vyska,sirka);
} while (start > 5); // opakovani do nekonečna

Console.ReadKey();
}

public static void Vymalovat(Sys­tem.ConsoleCo­lor barvaSteny, int osaX, int osaY, int vyska, int sirka)
{
Console.Backgrou­ndColor = ConsoleColor.Black;
Console.SetCur­sorPosition(120, 0); // Nastaveni pozice aby byla videt volba
Console.Foregrou­ndColor = ConsoleColor.Y­ellow;
Console.Write("Chce­te vymalovat barvy stěn ? ano / ne"); // Otazka pro vymalovani
Console.Foregrou­ndColor = ConsoleColor.White;
Console.Write­Line();
Console.SetCur­sorPosition(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.SetCur­sorPosition(120, 2);
Console.Write­Line("1 - Modrá barva"); // vyber barvy
Console.SetCur­sorPosition(120, 3);
Console.Write­Line("2 - Zelená barva"); // vyber barvy
Console.SetCur­sorPosition(120, 4);
Console.Write­Line("3 - Žlutá barva"); // vyber barvy
Console.SetCur­sorPosition(120, 5);
Console.Write­Line("4 - Šedá barva"); // vyber barvy
Console.SetCur­sorPosition(120, 6);
Console.Write­Line("Vyberte si barvu pokoje podle čísla."); // vyber barvy
Console.SetCur­sorPosition(120, 7);
int vyberBarev = int.Parse(Con­sole.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(bar­vaSteny, osaX, osaY, vyska, sirka); // pro pamatovani ostatnich promenných
break;
case 2: // vyber diky zadani z konzole
barvaSteny = ConsoleColor.Green;
VykresliPokoj(bar­vaSteny, osaX, osaY, vyska, sirka); // pro pamatovani ostatnich promenných
break;
case 3: // vyber diky zadani z konzole
barvaSteny = ConsoleColor.Y­ellow;
VykresliPokoj(bar­vaSteny, osaX, osaY, vyska, sirka); // pro pamatovani ostatnich promenných
break;
case 4: // vyber diky zadani z konzole
barvaSteny = ConsoleColor.Gray;
VykresliPokoj(bar­vaSteny, osaX, osaY, vyska, sirka); // pro pamatovani ostatnich promenných
break;
default: // pokud uzivatel zada neplatnou hodnotu
Console.SetCur­sorPosition(120, 8);
Console.Foregrou­ndColor = ConsoleColor.Red;
Console.Write­Line("Zadal jsi neplatnou hodnotu barva zůstala stejná.");
Console.Foregrou­ndColor = ConsoleColor.White;
break;
}
}
else // pokud uzivatel zada neco jineho nez ano barva zustane stejna
{
Console.SetCur­sorPosition(120, 2);
Console.Write("Bar­va stěn zůstane stejná jak byla.");
}
}

// metoda pro generovani nabytku / Pridani / Zruseni / novy Nabytek
private static void NabytekGenero­vani(int osaX, int osaY, int vyska, int sirka)
{
Console.SetCur­sorPosition(120, 3);
Console.Foregrou­ndColor = ConsoleColor.Y­ellow;
Console.Write("Chce­te přidat nabytek? ano / ne ");
Console.Foregrou­ndColor = ConsoleColor.White;

Console.SetCur­sorPosition(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.SetCur­sorPosition(120, 5);
Console.Write("Vy­ber si jaký nabytek chceš vložit.");

Console.SetCur­sorPosition(120, 6);
Console.Write­Line("1 - Židle"); // vyber nábytku
Console.SetCur­sorPosition(120, 7);
Console.Write­Line("2 - Stůl"); // vyber nábytku
Console.SetCur­sorPosition(120, 8);
Console.Write­Line("3 - Postel"); // vyber nábytku
Console.SetCur­sorPosition(120, 9);
Console.Write­Line("4 - Skříň"); // vyber nábytku
Console.SetCur­sorPosition(120, 10);
Console.Write­Line("5 - Komoda"); // vyber nábytku
Console.SetCur­sorPosition(120, 11);

Console.Write­Line("Vyberte si nový nábytek podle čísla."); // vyber nábytku
Console.SetCur­sorPosition(120, 12);
int vyberNabytku = int.Parse(Con­sole.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.SetCur­sorPosition(120, 13);
Console.Backgrou­ndColor = ConsoleColor.Red;
Console.Write­Line("Zadal jsi neplatnou hodnotu.");
Console.Backgrou­ndColor = ConsoleColor.Black;
break;
}
int polePromenna2 = 0;
int[] PoleStranaA = new int[5];
int[] PoleStranaB = new int[5];

PoleStranaA[po­lePromenna2] = stranaA; // ukladani hodnoty osy x do pole
PoleStranaB[po­lePromenna2] = stranaB; ; // ukladani hodnoty osy y do pole
polePromenna2++;

PridejNabytek(osaX, osaY, stranaA, stranaB,vyska,sir­ka, 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.SetCur­sorPosition(120, 30);
Console.Backgrou­ndColor = ConsoleColor.Red;
Console.Foregrou­ndColor = ConsoleColor.Black;
Console.Write­Line("Stisknu­tím libovolného tlačítka vypnete program.");
Console.Backgrou­ndColor = ConsoleColor.Black;
Console.SetCur­sorPosition(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.SetCur­sorPosition(120, 25);
Console.Write("Chce­te zrušit nějaký nábytek? ano / ne");

Console.SetCur­sorPosition(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.SetCur­sorPosition(120, 27);
Console.Backgrou­ndColor = ConsoleColor.Dar­kBlue;
Console.Write­Line("Vyber si co chceš vymazat.");
Console.Backgrou­ndColor = ConsoleColor.Black;

Console.SetCur­sorPosition(120, 28);
Console.Write­Line("1 - Nábytek"); // vyber nábytku
Console.SetCur­sorPosition(120, 29);
Console.Write­Line("2 - Nábytek"); // vyber nábytku
Console.SetCur­sorPosition(120, 30);
Console.Write­Line("3 - Nábytek"); // vyber nábytku
Console.SetCur­sorPosition(120, 31);
Console.Write­Line("4 - Nábytek"); // vyber nábytku
Console.SetCur­sorPosition(120, 32);
Console.Write­Line("5 - Nábytek"); // vyber nábytku

Console.SetCur­sorPosition(120, 33);
int vyberNabZruseni = int.Parse(Con­sole.ReadLine()); // vyber uzivatele co chce zrusit

osaX = poleX[vyberNab­Zruseni-1]; // prevedni z pole na osu X
osaY = poleY[vyberNab­Zruseni-1]; // prevedni z pole na osu Y

stranaA = PoleStranaA[vy­berNabZruseni-1]; // prevedeni z pole na stranu A
stranaB = PoleStranaB[vy­berNabZruseni-1]; // prevedeni z pole na stranu B

Console.SetCur­sorPosition(o­saX, 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.Backgrou­ndColor = ConsoleColor.Black;
Console.Write(" ", i, j); // vykresleni
Console.Backgrou­ndColor = ConsoleColor.Black;
Console.SetCur­sorPosition(o­saX, osaY + 1); // nastaveni pozice
}
Console.Write(""); // Odradkovani
}

}
else
{
Console.SetCur­sorPosition(120, 27);
Console.Backgrou­ndColor = ConsoleColor.Red;
Console.Write­Line("Nevybral jste si nic na zrušení.");
Console.Backgrou­ndColor = 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.Dar­kBlue;
NabarviNabytek(ref barvaNabytku); // nabarveni nabytku

Console.SetCur­sorPosition(o­saX, 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.Backgrou­ndColor = barvaNabytku;
Console.Write(" ", i, j); // vykresleni
Console.Backgrou­ndColor = ConsoleColor.Black;
Console.SetCur­sorPosition(o­saX, osaY + 1); // nastaveni pozice
}
Console.Write(""); // Odradkovani
}
// vymazani obsahu textu pro cistou obrazovku
Console.SetCur­sorPosition(120, 4); Console.Write(" "); Console.SetCur­sorPosition(120, 5); Console.Write(" "); Console.SetCur­sorPosition(120, 6); Console.Write(" "); Console.SetCur­sorPosition(120, 7); Console.Write(" "); Console.SetCur­sorPosition(120, 8); Console.Write(" "); Console.SetCur­sorPosition(120, 9); Console.Write(" "); Console.SetCur­sorPosition(120, 10); Console.Write(" "); Console.SetCur­sorPosition(120, 11); Console.Write(" ");
Console.SetCur­sorPosition(120, 12); Console.Write(" "); Console.SetCur­sorPosition(120, 13); Console.Write(" "); Console.SetCur­sorPosition(120, 14); Console.Write(" "); Console.SetCur­sorPosition(120, 15); Console.Write(" "); Console.SetCur­sorPosition(120, 16); Console.Write(" "); Console.SetCur­sorPosition(120, 17); Console.Write(" ");
Console.SetCur­sorPosition(120, 18); Console.Write(" "); Console.SetCur­sorPosition(120, 19); Console.Write(" "); Console.SetCur­sorPosition(120, 20); Console.Write(" "); Console.SetCur­sorPosition(120, 21); Console.Write(" "); Console.SetCur­sorPosition(120, 22); Console.Write(" "); Console.SetCur­sorPosition(120, 23); Console.Write(" "); Console.SetCur­sorPosition(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.SetCur­sorPosition(120, 27); Console.Write(" "); Console.SetCur­sorPosition(120, 28); Console.Write(" "); Console.SetCur­sorPosition(120, 29); Console.Write(" "); Console.SetCur­sorPosition(120, 30); Console.Write(" ");
Console.SetCur­sorPosition(120, 31); Console.Write(" "); Console.SetCur­sorPosition(120, 32); Console.Write(" "); Console.SetCur­sorPosition(120, 33); Console.Write(" ");
NabytekGenero­vani(osaX, osaY,vyska,sirka); // spusteni znovu
}

private static void NabarviNabytek(ref System.ConsoleColor barvaNabytku)
{
Console.SetCur­sorPosition(120, 18);
Console.Write­Line("Vyberte si barvu nábytku.");
Console.SetCur­sorPosition(120, 19);
Console.Write­Line("1 - Modrá barva"); // vyber barvy
Console.SetCur­sorPosition(120, 20);
Console.Write­Line("2 - Zelená barva"); // vyber barvy
Console.SetCur­sorPosition(120, 21);
Console.Write­Line("3 - Žlutá barva"); // vyber barvy
Console.SetCur­sorPosition(120, 22);
Console.Write­Line("4 - Šedá barva"); // vyber barvy
Console.SetCur­sorPosition(120, 23);
Console.Write­Line("Vyberte si barvu pokoje podle čísla."); // vyber barvy
Console.SetCur­sorPosition(120, 24);
int vyberBarvy = int.Parse(Con­sole.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.Y­ellow;
break;
case 4: // vyber diky zadani z konzole
barvaNabytku = ConsoleColor.Gray;
break;
default: // pokud uzivatel zada neplatnou hodnotu
Console.SetCur­sorPosition(120, 8);
Console.Foregrou­ndColor = ConsoleColor.Red;
Console.Write­Line("Zadal jsi neplatnou hodnotu barva zůstala stejná.");
Console.Foregrou­ndColor = ConsoleColor.White;
break;
}
}

public static void PresunNabytek(ref int poziceA, ref int poziceB, int osaX, int osaY, int vyska, int sirka)
{
Console.SetCur­sorPosition(120, 13);
Console.Write­Line("Vyberte si kde chcete umístit nábytek.");
do
{
Console.SetCur­sorPosition(120, 15); // je tu zde pro vymazani obsahu pokud uzivatel zada moc velkou hodnotu
Console.Write(" ");
Console.SetCur­sorPosition(120, 14);
Console.Write­Line("Zadej osu X. Sirka byla {0}",sirka);
Console.SetCur­sorPosition(120, 15);
poziceA = int.Parse(Con­sole.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.SetCur­sorPosition(120, 17); // je tu zde pro vymazani obsahu pokud uzivatel zada moc velkou hodnotu
Console.Write(" ");
Console.SetCur­sorPosition(120, 16);
Console.Write­Line("Zadej osu Y. Vyska byla {0}",vyska);
Console.SetCur­sorPosition(120, 17);
poziceB = int.Parse(Con­sole.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(Sys­tem.ConsoleCo­lor barvaSteny, int osaX, int osaY, int vyska, int sirka) // metoda pro vykresleni pokoje
{
Console.Clear(); // vycisteni displeje
Console.Backgrou­ndColor = barvaSteny; // nastaveni barvy podle predchoziho vyberu a nebo podle zakladu
Console.SetCur­sorPosition(o­saX, osaY); // nastaveni kde se bude ramecek vykreslovat

for (int i = 0; i < sirka + 1; i++)
{
Console.SetCur­sorPosition(o­saX + i, osaY);
Console.Write(" "); // Vykresleni Horni strany obdelniku / ctverce
}
for (int i = 0; i < vyska + 1; i++)
{
Console.SetCur­sorPosition(o­saX, osaY + i);
Console.Write(" "); // Vykresleni Leve strany obdelniku / ctverce
}
for (int i = 0; i < sirka + 1; i++)
{
Console.SetCur­sorPosition(o­saX + i, osaY + vyska);
Console.Write(" "); // Vykresleni Dolni strany obdelniku / ctverce
}
for (int i = 0; i < vyska + 1; i++)
{
Console.SetCur­sorPosition(o­saX + sirka, osaY + i);
Console.Write(" "); // Vykresleni Prave strana obdelniku / ctverce
}
Vymalovat(bar­vaSteny, 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.

 
Odpovědět
7.4.2019 21:32
Avatar
Lako
Člen
Avatar
Lako:8.4.2019 7:18

Prosím zkrať kód na část potřebnou k vyřešení problému. Použij taky formátování kódu.

 
Nahoru Odpovědět
8.4.2019 7:18
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.

Zobrazeno 2 zpráv z 2.