Milyen logika alapján lehetne 2D térképet generálni?
Ötletem van hogy fognék hozzá. Végül is mi van egy térképen? Első megközelítésbe (és egyszerűség kedvéért csak) utak/úthálózatok. Olyan utak melyek egyesülhetnek szétválhatnak melyek görbék általában. Ilyen görbéket kell előállítani és tárolni valahogy a memóriába, több féle képen lehet melyeknek "szép" matematikai elmélete van.(Beiser görbék,lánckód, gráfok ...) Hogy Mikor hogy görbüljön az út azt súlyozott véletlen döntések sorozatával döntené el a program. Itt még nem beszéltünk semmit a kirajzolásról, az majd a legutolsó fáziba kell.
Hasonlóan Bele lehet venni folyókat, tavakat, a szabályrendszert bővíteni kell, tavon keresztül kevesebb úthálózat halad át stb stb.
Amúgy mire kell?
Nem voltam elég konkrét.
C# Console alkalmazásban szeretnék írni egy primitív térkép generátort, igazából csak a határokat szeretném megjeleníteni, vagy játékos nyelven a falakat.
Próbálkozok vele, de nekem ez nem megy, a kódom nem szeretném megmutatni, szerintem említésre sem méltó.
Mégis kíváncsi lennék ezt, hogyan oldották meg mások, mert már láttam ilyeneket egyszerű programozó kezéből, de kódot még nem, bár egy magyarázatnak, rövid utasításnak jobban örülnék.
Csak úgy elfelejthetném, mert nem lenne belőle hasznom, de mégis fájdalommal tölt el, hogy nincs erre logikám.
Akkor ezek szerint csak a falakat kell eltárolnod, és máris kész a térképed.
C# objektum orientált, tehát szabadon írhatsz osztályokat, mely jelentősen megkönnyíti a feladatot. pl. célszerű egy Fal nevű osztályt létrehoznod:
class Fal {
kezdőpont
végpont
}
ez egész jól definiálja a falat
Ezek után létre kell hoznod csomó random falat a megfelelő rand() függvényt használva, ezeket a falakat eltárolhatod tömbben is, vagy list adatszerkezetben.
Ha ábrázolni kellene a térképedet, akkor elég végigmenni az összes falon (for ciklus, iterátor, stb), és kirajzolni egyenként őket
Ha ütközésvizsgálatot akarnál lefuttatni, akkor is alkalmazható az, hogy egyenként mindegyiket megvizsgálod. Ekkor ugye a fal koordinátáit kell összehasonlítani az objektum koordinátáival
Ha a generátoron van a hangsúly, tehát egy "egész jó" generátor lenne a cél, akkor létrehozhatsz objektumokat, melyek magasabb szintűek mint a fal, pl négyzet, és a random generátor csak ezeket fogja véletlen pozícióba elhelyezni, majd ha kész, akkor lebontod a négyzetet vonalakra (Falakra), és azt jeleníted meg.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!