Hirdetés
- gban: Ingyen kellene, de tegnapra
- Kalandor: „Ha engedtem volna a lelkiismeretemnek, az üzlet kevésbé lett volna jövedelmező”
- Cseppino: Windows 11 25H2 frissítés – Újdonságok, AI-funkciók és rejtett beállítások.
- Luck Dragon: Asszociációs játék. :)
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- SzDavid99: Van 20 perced? Akkor tanulj meg koreait olvasni!
- Elektromos rásegítésű kerékpárok
- GoodSpeed: Pillangóhatás: F billentyű meghibásodása -új gamer számítógépasztal
- sziku69: Fűzzük össze a szavakat :)
- sziku69: Szólánc.
Új hozzászólás Aktív témák
-
quailstorm
félisten
válasz
Tomi_78 #10229 üzenetére
Itt már esélyesebb hogy összehoztál egy not all paths return a value hibát. Gondolom a case-en belül az if-en belül volt a return, de ifen kívül nem volt csak jött a break és a függvény végén sem volt.
Azt az if valamit ki kéne szervezni, ha fix dolog akkor a függvény elejére, ha nem az akkor így hirtelen passz hogy hova, túl pszeudokód ahhoz hogy lássam.
-
quailstorm
félisten
válasz
Alexios #10226 üzenetére
Igaz, benéztem bocs. Annál több elágazás kéne (köztes else if) hogy ez előforduljon.
#10227Tomi_78:
Változtattál valamit a fejlesztőkörnyezeten? Vagy mégsem teljesen olyan ez a kód mint az előzőek?Olyasmi kódra mint a mintád, most az RCS1073-at adja vissza a VS2022.
Redundant else keyword hibát nem tudtam előhozni. -
quailstorm
félisten
válasz
Tomi_78 #10222 üzenetére
Ez nem hiba, csak kódstílus.
Early return esetén a függvény végére rakunk egy mindig konstans return false-t. Az első if után még lehetne kód a végső returnig, ami további feltételkiértékeléseket tartalmazhatna (és további returnokat).
Most nálad az else ág üres, az if után pedig nincs semmi így ugyan felesleges kiírni hogy else, de jelen esetben sem szintaktikai sem szemantikai hibát nem jelent.
Viszont ha bármit írnál az else után, az else alá, akkor az syntax error mert hirtelen nem minden ágnak lenne visszatérési értéke. Ezt megelőzendő (meg az átláthatóság miatt) nem kell az else ilyenkor. -
quailstorm
félisten
válasz
Tomi_78 #10219 üzenetére
Lehet, de nem érdemes.
Ugyanúgy meg lehet tanulni egy szerializálós libet mint a programozás alapjait.Abban amit csinálsz nagyon sok a munka, nagyon sok a hibalehetőség és nem tesz hozzá a játékhoz semennyit. Csak szaporodnak a kódsorok a semmiért.
Persze mindent fel lehet találni nulláról, de nem célszerű.
#10220martonx: ha jól számolom 5 éve csiszolja, de már akkor nagyon elavult alapokon kezdte.
-
quailstorm
félisten
válasz
martonx #10217 üzenetére
Milyen új projecten?
Egy 90-es évek szimulátorhoz ajánlottam ahol a kókányolásállóság és a kompatibilitás régi frameworkkel sokkal jobban számít.
Ráadásul ha visszakeresel a nevére:
SharpDevelopot használ. Az nem támogat 4.5.1-nél újabb .NET Frameworkot. Tehát valószínűleg nem tudja használni a System.Text.Json-t.Úgyhogy szerintem de, elegáns helyzetre szabva olyan libet ajánlani ami biztos működik nála. Ahhoz a pet project játékhoz óriási előrelépés lenne neki a Newtonsoft is.
-
quailstorm
félisten
válasz
Alexios #10215 üzenetére
Persze, teljesen másképp lett megoldva végül a probléma. Integrációs tesztek miatt mondtam a többieknek hogy felesleges custom resolvert meg normalizálást meg minden féle bonyolult dolgot implementálni. Deszerializálás helyett inkább a referencia is szerializálva van és a két szerializált json van összehasonlítva.
Előző projectemen is elég keményen van abuzálva a Newtonsoft plugin architektúrás workspace deszerializáláshoz, úgyhogy ott is azért nem éri meg váltani.
-
quailstorm
félisten
válasz
martonx #10212 üzenetére
Felhasználásfüggő. Nem teljes helyettesítő a System.Text.Json.
De persze, Tominak valószínű elég, meg az átlag projectbe is elég. Munkában előző projectemnél biztosan nem volt érdemes lecserélni a Newtonsoftot, mert csak a rengeteg szívást és kompatibilitási problémát kaptuk volna a nyakunkba, de mostani projectemen is volt olyan eset (bocs, elfelejtettem), ahol a megoldás egyszerűbb lett volna és jobban dokumentált volt Newtonsofttal.
Szóval én még nem temetném a Newtonsoftot, de nyilván új projecten nem azzal kell kezdeni feltétlen.
-
quailstorm
félisten
válasz
Tomi_78 #10210 üzenetére
Tegyél breakpointot a kiírás közben. Csak ez a kód ír ki pontot?
A for-t én Count - 1-ig futtatnám. A switchet kitenném helper methodba. A pontírás maradna a foron belül a helper method után. For végeztével meghívnám mégegyszer a helper methodot az utolsó elemre.
De igazából az egésznek nem sok értelme van. Miért szívatod magad saját szeralizátorral? Legyen rendes game state objected és használj valami XML vagy JSON szerializáló libraryt (Newtonsoft mondjuk).
Ez így 90-es évek szimulátor.
-
-
quailstorm
félisten
válasz
Tomi_78 #10027 üzenetére
Az osztály egy absztrakt fogalom, egy memóriaértelmezési térkép. Abból először példányokat kellene létrehozni hogy legyen mit foreachelni. A foreach nem típusokon tud iterálni hanem típuspéldányok felsorolásán.
Az általad említett könyvben benne van a C# és úgy egyáltalán a programozás elméleti alapjának összefoglalása, de nem a legérthetőbb és néhol pongyola. Inkább menj át a Ruzsinszki könyvön és utána csak a konkrét játékprogramozós részekkel folytasd.
-
quailstorm
félisten
válasz
Tomi_78 #10024 üzenetére
Mi alapján tanulsz? Eddigi kommentjeidből úgy néz ki, hogy nem vagy birtokában stabil tudásnak, nem érted a fogalmakat és eszközöket amiket próbálsz használni, csak másolsz és csavarsz rajta valamit.
Mielőtt nekiállsz egy grafikus játéknak, legalább egy programozás könyvön rágd át magad.#10025 Alexios: amúgy ki lehet gyűjteni reflectionnel egy assemblyben egy adott típus összes implementációját. Pl. arra jó, hogy a tesztpluginunkba így elég egy új osztályt behajítani és a lefordított plugin már ki is teszi az új osztályt a UI-ra mint választható test scenario.
-
quailstorm
félisten
Objektum-orientáltság, öröklődés erre jól ráhúzható.
Fegyver interfész, vagy absztrakt osztály virtuális függvényekkel és azt implementálod az egyes fegyvertípusok szerint.
-
quailstorm
félisten
A BackgroundWorker az egy jó pattern erre.
Ugyan ez WPF de itt is szépen el van magyarázva.Ha simán csak egy UI változót kell pörgetni akkor pedig az IProgress egy jó pattern. [link]
-
quailstorm
félisten
válasz
CPT.Pirk #9904 üzenetére
Igen, így van. A Peek üres stack esetén exceptiont dob. Szóval az utolsó pop után a következő feltételellenőrzés a while-ban exception, nem pedig false. A Count ellenőrzése jó lesz.
-
quailstorm
félisten
válasz
ReSeTer #9829 üzenetére
"Teljesen mindegy mi a method, az a lényeg, hogy nem UI-n belül lévő method-on belül akarom megváltoztatni az UI-n lévő feliratot."
Ilyet nem tudsz csinálni, amennyiben a számolás másik szálon történik. Ha csak egy változót akarsz pörgetni, arra tökéletes az IProgress. Egyébként pedig én callback eventet használnék és dispatcherrel vissza UI threadre (hogy a workerben ne legyen direkt UI kód).
Ha nincs több szál a dologban, akkor elég a sima event invoke és a callbackben meg UI elem setelés. De ha hosszabb számolás, és a UI-t nem szeretnéd fagyasztani, akkor jobban jársz a külön threaddel.
Eventek.
DispatcherFire/SOUL/CD mutatja a statikus elérését a UI elemnek, azt is lehet, viszont az nem szép és nem moduláris megoldás. Bedrótozod az egyik komponensbe a másik komponens struktúráját.
-
quailstorm
félisten
Ide egy gráf adatstruktúra kell.
Szerencsére megvan a lehetőséged, hogy kész függvénykönyvtárat használj:
[link] [link] [link]
Ha szeretnéd a hátterét kicsit elolvasni.Az össze vissza elnevezett változóid meg teljes tévút és felejtsd el. Objektumokban kéne gondolkozni és a relációk adattagként tárolásában.
-
quailstorm
félisten
válasz
ReSeTer #9761 üzenetére
YAML az van olyan egyszerű és letisztult, mint az INI, én azt javaslom ebben az esetben. De INI-hez is létezik library: például.
Én INI-vel úgy találkoztam, hogy GSD (PROFIBUS). Ahhoz képest a GSDML (PROFINET, XML alapú), az sokkal könnyebben használható programozás oldalról. INI-be nem tudsz szerializálni és deszerializálni sem (vagy kutatni kell olyan libet, ami tud).
-
quailstorm
félisten
Semmihez nem kell WCF. Az csak egy példakód DataContract szerializációra és deszerializációra. Linkelhettem volna ezt is.
Múlt héten kellett pont, ideiglenes megoldásként egy projektbe. Nem volt szabad berakni külső libet és régi .NET*, a DataContract-os szerializáció meg nagyon könnyen elérhető, mert csak a System.Runtime.Serialization reference kell hozzá.*Tehát Newtonsoft-ot nem szabad, de System.Text.Json meg még nincs.
-
quailstorm
félisten
Lehet én vagyok kocka, de nekem a json már bőven az ember által jól olvasható kategória, beautified formázással. Itt van rá NewtonSoft és System.Text.Json opció is.
Tény, hogy a DataContract az nem szép Json-t exportál, ahhoz a szövegszerkesztőben kell automata formázni (nálam Notepad++ és JSTools plugin, vagy Visual Studio Code).
TOML-t én elvetném, annyira nem tiszta annak sem a szintaxisa. YAML valóban megfelel az olvashatóság és az objektum konvertálás kritériumainak is, elsőre nem jutott eszembe, köszi, hogy bedobtad.
@ReSeTer: mennyire "kocka", aki szerkeszteni fogja azt a szöveges fájlt? Mennyire állandó a konfigurációs fájl struktúrája? Ha nagyon egyszerű, vagy állandó, akkor egy GUI-t sem nagy cucc összedobni hozzá.
-
quailstorm
félisten
válasz
ReSeTer #9754 üzenetére
Json, vagy XML.
INI egy rémálom, TXT meg 80-as évek.Találj ki valami jó kis objektumos reprezentációt, aztán szerializáció, deszerializáció.
DataContractTudom, hogy nem ez a legszebb megoldás, amit linkeltem, de ezt régi .NET-en is meg lehet oldani külső libek, NuGet és függőségek nélkül.
-
quailstorm
félisten
válasz
ReSeTer #9743 üzenetére
Van egy magyar könyv, Evosoft alkalmazott írta. Szerintem ez elég jó alap.
#9745 Victoryus : megjelenítés rétegben mindegy milyen DB van alatta, szóval inkább általános adatbáziskezelős tutorialokat nézz, meg az accdb driver API kézikönyvét.
-
quailstorm
félisten
válasz
robotjatek #9739 üzenetére
Ja igen, így már értem én is, hogy mit nem látott. Pedig észrevettem a commandot elsőre is...
A Binding (ICommand implementáció) amit néznie kell és F12-vel nyomkodnia. A Click handlert lehet hogy valaki véletlen hozzáadta, de az nem csinál semmit most, inkább törölni kellene.
Ha paraméter kell a Command-hoz, akkor a CommandParameter attribútummal megteheti.#9740 cigam
ICommand WPF MVVM
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- NFL és amerikai futball topik - Spoiler veszély!
- Suzuki topik
- One otthoni szolgáltatások (TV, internet, telefon)
- Android alkalmazások - szoftver kibeszélő topik
- Nintendo Switch 2
- Mikrokontrollerek Arduino környezetben (programozás, építés, tippek)
- Melyik tápegységet vegyem?
- exHWSW - Értünk mindenhez IS
- Béta iOS-t használók topikja
- Redmi Buds 5 és Buds 5 Pro - feláron vagy féláron?
- További aktív témák...
- iPhone 16 Pro Max 256GB Fekete Titán 96%-os Akksi
- Béreljen minikotró gépet már 24 órától, akár hosszabb időre is
- Bomba Ár! Lenovo ThinkPad E15 Gen2 AMD - Ryzen 5 I 8GB I 256SSD I 15,6" FHD I HDMI I W11 I Gari
- Bomba ár! Lenovo ThinkPad T14s G2 AL - i7-1185G7 I 16GB I 1TSSD I 14" FHD Touch I W11 I Cam I Gari!
- Bomba ár! HP ProBook 645 G4 - Ryzen 7 PRO I 8GB I 256SSD I HDMI I 14" FHD I Cam I W11 I Garancia!
- REFURBISHED és ÚJ - Lenovo ThinkPad Ultra Docking Station (40AJ)
- Google Pixel 10 Pro XL Moonstone Super Actua 120 Hz, Pro kamera 5 zoom 256 GB Használt,Gari
- Azonnali készpénzes nVidia RTX 5000 sorozat videokártya felvásárlás személyesen / csomagküldéssel
- ÁRGARANCIA!Épített KomPhone i9 14900KF 64GB RAM RTX 5080 16GB GAMER PC termékbeszámítással
- Felújított laptopok számlával, garanciával! Ingyen Foxpost!
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest