Kezdőoldal » Számítástechnika » Programozás » Hogyan volna a legjobb kivitel...

Hogyan volna a legjobb kivitelezni, megvalósítani ezt az algoritmust c# nyelvben?

Figyelt kérdés

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?


2014. aug. 7. 01:31
 1/9 A kérdező kommentje:
Bocsi a nem odavaló szavakért de erről a béna amerikából kellett,hogy írják.
2014. aug. 7. 01:33
 2/9 A kérdező kommentje:
Frameként hivogatni a sort metódust
2014. aug. 7. 01:35
 3/9 A kérdező kommentje:
Számontartott ez számontartsam akart lenni
2014. aug. 7. 01:36
 4/9 anonim ***** válasza:

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ó...

2014. aug. 7. 08:53
Hasznos számodra ez a válasz?
 5/9 anonim ***** válasza:

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.

2014. aug. 7. 08:55
Hasznos számodra ez a válasz?
 6/9 anonim ***** válasza:

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.

2014. aug. 7. 17:05
Hasznos számodra ez a válasz?
 7/9 anonim ***** válasza:

"frameként"


Szerintem ezt felejtsd el, rossz hozzáállás.

2014. aug. 7. 19:23
Hasznos számodra ez a válasz?
 8/9 A kérdező kommentje:

É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.

2014. aug. 7. 22:29
 9/9 anonim ***** válasza:

Neked gyakorlatilag egy bounding box kell.


[link]


Később ráérsz megköszönni.

2014. aug. 8. 09:44
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!