Diskuze: Open / Save souboru - >> SAVE HRY
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 38 zpráv z 38.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Tady na Devbooku je návod na uložení vlastního typu souboru mrkni tam třeba ti to pomůže.
Vezmem si to popřádku.
2)nebo (a to předpokládám) prostě si hra uloží data
Nejdříve te odkážu sem -> http://www.itnetwork.cz/csharp/zaklady - základy C#
A potom už sem http://www.itnetwork.cz/csharp/soubory -> práce se soubory
Potom akorát uložíš do textového soubrou všechny potřebná data hry
(např. životy, peníze, skore, jméno hráče,...). Můžeš si vybrat i
určitý formát
CSV se hodí pro jednoduchou strukturu savu her
XML se hodí pro složitější ukládání - například uložení inventáře
apod.
....
Když si nebudeš vědet rady napiš a my rádi poradíme . Pozor,jediné co neuděláme je,
že to napíšeme za tebe. Napiš dotaz, ukaž kus kódu a my tě navedem ke
správnému řešení.
Pokud neovládáš ani základy, doporučuju si projet celý seriál
základů C# a potom se vrhnout na soubory
Tak ukladat a cist ze souboru umim ale cestu mam uz nastavenou napevno. A
cist a ukladani umim do TXT a do nej ukladam slova a tak a zkousel jsem to
sam... ale neslo mi ukladani... Tak jsem se po tydnu utrap rozhodl napsat jsem.
.)
Jinak se neboj blbej nejsem
ale vzdy se mi neco pokazi ... minule se to vyresilo prepsanim programiu do
noveho...
Je to komplikovany ale co dnes
neni xD
ARIGATO (děkuji)
Použij XML elegantní řešení i když to pekelně zhnusí zdroják tak se to ukládá a načítá jedna báseň. TXT je pro blbečky tam to neukládej, nejlepší řešení je APPDATA. Tu je kousek z mýho kódu co jsem psal nedávno ( nejspíš to půjde i lépe co já vím o XML jsem se moc blíž nezajímal. Každopádně to dělá to co má tak snad si z toho něco vemeš.
/// <summary>
/// Metoda, která slouží pro uložení dat do *.XML souboru
/// v AppData. Ukládá servery a nastavení aplikace.
/// </summary>
public void SaveData()
{
XmlWriterSettings sett = new XmlWriterSettings();
sett.Indent = true;
using (XmlWriter xw = XmlWriter.Create(this.path, sett))
{
xw.WriteStartDocument();
xw.WriteStartElement("Servers");
foreach (string dat in this.serverData)
xw.WriteElementString("Server", dat);
xw.WriteStartElement("Settings");
xw.WriteElementString("info", mainform.getSettings());
xw.WriteEndElement();
xw.WriteEndElement();
xw.WriteEndDocument();
xw.Flush();
}
}
/// <summary>
/// Metoda, která načte *.XML soubor z AppData,
/// zpracuje ho a uloží hodnoty. Hodnoty jsou
/// servery a nastavení aplikace.
/// </summary>
public void loadData()
{
if (File.Exists(this.path))
{
using (XmlReader xr = XmlReader.Create(this.path))
{
while (xr.Read())
{
if (xr.NodeType == XmlNodeType.Element)
element = xr.Name;
else if (xr.NodeType == XmlNodeType.Text && element == "Server")
this.serverData.Add(xr.Value);
else if (xr.NodeType == XmlNodeType.Text && element == "info")
mainform.setSettings(xr.Value);
else if ((xr.NodeType == XmlNodeType.EndElement) && (xr.Name == "Servers"))
Console.WriteLine("exit");
}
}
}
Nejsou tam parametry protože path a jiný blbosti si bez hned z konstruktoru třídy.
Xml bych zrovna na uložení pozice ve hře nepoužil, může si to pak
kdokoliv lehce nacheatovat, tenhle typ dat bych radši ukládal binárně,
ideálně to třeba ještě prohnal přes DeflateStream (komprese), aby
případný cheater nic nepřečetl .
Já si vždycky na tohle vymyslím nějakou vlastní jednoduchou šifru ...pak to prostě uložim jako
text do souboru bez koncovky.
Však v hlavním dotazu není napsané nic o souřadnicích třeba ukládá
jen nastavení. Které je fuk že si někdo překódí. Myslím že není
takový problém to ukládát v binárce i do XML i když to asi nebude
nejštastnější, ale zas nemusí to být nejhorší protože toho může
ukládat elegantně víc do jednoho souboru. Pozice v binární podobně a
ještě klidně zašifrované a pod to nastavení celé aplikace. Já takhle
ukládám jména a adresy serverů + nastavení aplikace. To nikomu nevadí že
si to někdo upraví. Ale dobrá připomínka na souřadnice ten můj kód
nebude
Pokud jen souřadnice a nic jiného tak XML asi ani nepoužij. Ale tak aspoň pro příště až
budeš ukládat něco jiného.
"TXT je pro blbečky, ukládej to do AppData" - Nějak mi uniká smysl této rady. TXT je přípona souboru, AppData je složka. Hlavně, že je opět použita vulgarita.
Ono je vcelku jedno v čem, důležitý je aby to bylo správně zašifrované.
Myslel jsem to tak že pokud ukládá nastavení aplikace tak použít TXT
namísto XML je pěkná blbost. Pokud ukládá souřadnice tak TXT pro mě za
mě.
Tak textový soubor je i XML. Záleží jak je strukturovaný, pro jeho účely by se hodilo CSV, protože je jednoduché.
Souhlasím, jen abych to shrnul předtím jsem to nemyslel ve zlém, podle mě nejlepší řešení ukládání nastavení je do XML popřípadě do *.ini. Nevěděl jsem že se budou ukládat jen souřadnice. Potom to beru z5, jen jsem nechtěl aby hned ze začátku použil nevhodný formát nebo né nevhodný ale aby použil to lepší co mu C# nabízí a naučil se pracovat s tím.
ukladam to do CSV. zatím to jde uvidím při hlubším zkoumani
A jinak když jsme u toho jak funguje ten *.ini ? Jak se do nej uklada a co
presne a k cemu je lepsi Snad
moc neotravuji
INI se používá na ukládání konfigurace aplikace, není tam ani žádná struktura to záleží na tobě, jak si to vytvoříš.
Zdravím, do INI se ukládá vždy klíč=hodnota (tyto dvojce jsou odděleny novým řádkem). V praxi to znamená, že je jedno, v jakém pořadí jsou data uložena a soubor je taky lépe čitelný člověkem, který nezná strukturu souboru. Je to něco mezi CSV a XML.
To tolik záleží na programovacím jazyku? Myslel jsem si, že spíše záleží na struktuře a typu dat, která se ukládají. Jak je to myšleno? To protože se dá xml snaze převést na objekty?
INI a XML jsou konkurenční formáty. Řekl bych, že INI je staré a mrtvé, ale nekoho bych mohl pobouřit, proto řeknu, že XML umí to samé, co INI a jelikož je to univerzální formát, používá se XML. C# je jazyk navržený tak, aby používal balík knihoven .NET. A .NET podporuje jen XML a INI ne (což je logické, proč zbytečně spravovat 2 knihovny, které by uměly totéž, když mohou spravovat jednu univerzální na XML).
Aha, ale nicméně když si napíši vlastní parsování a ukládání ini a použiji tento formát pro přiměřeně velké (malé) množství dat je to v pořádku? Přece jen mi přijde poněkud jednodušší než xml.
Je to špatně, protože v C# se prostě používají XML knihovny z .NETu. Když si budeš to samé, co má standardně .NET, psát sám, je to pracné pro tebe a nepřehledné pro ostatní.
Dobře, díky za objasnění.
Jen se chci zeptat. Vím že to není k tématu ale mám statusStrip a jak mam udělat aby pod něj objevovali tlačítka? Totiž překrývá mi část tlačítek horních a jde nějak udělat aby to nedělal? A bylo to pod ním
XML umí víc než INI. Umí ukládat hierarchická data a má definováno zpracování non-ASCII znaků. Také jsou definovány postupy zpracování různými virtuálními procesory. Stačí je jen použít.
XML se hodí, pokud těch dat není moc a nevadí, že k nim má uživatel přístup, jinak je lepší ukládat binárně.
Kdysi si kamarád ukládal grafiku do nějaké hry hry v textové podobě -
takže po otevření souboru na mě vybafla zhruba takováhle posloupnost
znaků: "000255255000255255" - z 3MB velkého BMP souboru se mu povedlo
udělat 9 MB velký texťák
Tenhle formát občas používám pro automatické konverze obrázků, ale nikde to neukládám. Posílám to rourou přímo do další aplikace.
Na multimédia se XML nehodí. Na vektorovou grafiku nebo zvuk ještě jo.
XML se hodí hlavně u dat, která chceme načíst do aplikace celá nebo alespoň jejich podstatnou část. V tom případě velikost souboru tolik nerozhoduje. Mám tady i pár XML >100 MB.
Pokud ty XML > 100 MB nejsou jen textové informace, tak bych zauvažoval o vytáhnutí těch některých dat někam ven a odkazovat na ně třeba jen jménem souboru, ve kterém jsou uložena.
V mém případě to jsou jen textové informace, aplikace je vždy potřebuje všechny. XML je pro ně ideální. Kdyby nebylo, už dávno bych to předělal do databáze.
Zobrazeno 38 zpráv z 38.