Hogyan volna a legjobb kivitelezni, megvalósítani ezt az algoritmust c# nyelvben?
Van egy alkalmazás ami egy oldalnézetes kettő a kettő elleni verekededős játék.A problémám pedig az,hogy nemtudom milyen algoritmust használják arra,hogy számontartott a négy karakter közül azt a kettőt ammelyek legtávolabb vannak egymástól vízszintesen és függőlegesen is eggyaránt.
Arra gondoltam,hogy ezeknek a pozíciójukat egy tömbbe tárolják és frameként higgadtan volna a sort metódus de ez erőforrás igényes feladat volna szerintem,tudjátok egy igazán hatékony módszert erre?
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
Ilyeneket még nem csináltam, szóval nézd el, ha rossz ötlet...
De én így csinálnám:
- a 4 karakterről úgyis tudom, hol vannak (mert ki kell rajzolni őket ugye)
- tegyük fel, hogy ez 4 darab pontot jelent (2-2 koordinátával mondjuk)
- két pont távolságára meg van képlet: négyzetgyök((x1-x2)^2 + (y1-y2)^2) // ha jól emlékszem, így néz ki
- 4 pont esetén ez 6 darab távolságot jelent (ha jól számolok), és ezeken kéne akkor maximum kiválasztást (ez egy programozási tétel) végezni
Ez így szerintem nem túl nagy számításigényű megoldás...
Feltéve, hogy jó...
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
Mondjuk így utólag gondolkoztam csak el azon, hogy mire kellhet.
Tipp: befoglaló/köré írható téglalaphoz?
Ebben az esetben inkább külön számolnám a vízszintes (abs(x1-x2)) és függőleges távolságokat (abs(y1-y2)), és azokon keresnék maximumot.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
4 karakter az (4*4-4) / 2 = 6 vizsgálat minden képkockánál.
Legyen dx = abs(x1-x2) vízszintes távolság és dy = abs(y1-y2) függőleges távolság. Sokféleképpen számolhatsz...
- Lehet elég a Manhattan távolságuk is: dM = dx + dy
- Lehet euklideszi távolság: dS = sqrt(dx^2 + dy^2), de mivel igazából csak maximumot keresel ezért nem kell gyököt vonni: dS2 = dx^2 + dy^2
- Ha oldalnézetes a játék lehet fontosabb az x távolság, így lehet: dW = dx * w + dy, ahol w (súly) egy tetszőleges skalár szám.
A sort arra való, hogy sorba rendezzen, nem azzal kell a világot megváltani. Ha nem akarod hogy valóban sorba legyenek akkor elég ha csak maximumot keresel és eltárolod az objektum referenciáját, vagy indexét ha tényleg tömbben akarod tárolni. Bár gondolom a karakterek külön osztályok és van egy Utility osztályod ami őket kezeli.
Nem akarok kételkedni, de ha maximum keresésre sort-ot akarsz használni, és nem vagy képben az euklideszi távolsággal, akkor, hogy fogsz verekedős játékot csinálni? Bár igazából az, hogy gyakorolsz nagyon sokat jelent.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
"frameként"
Szerintem ezt felejtsd el, rossz hozzáállás.
Én ezt megtudom csinálni egyébjént de a kérdést csak azért írtam ki,hogy hátha tudtok rá valami hatékony módszert.
Egyébként 4 értéket fog kapni a kamera a két legtávolabbi karakter pozícióját és még két értéket azt a kettőt ami a legmagasabban és legalacsonyabbat van.Ebből a négy értékből tidni fogom azt,hogy melyik irányba fog kellenem mozgatni a kamerát ahhoz,hogy ez benfoglalja magában a pálya azon részét ahol az összes karakter van.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, 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!