Gra w rzutki

0

Witam. Próbuję zrobić prostą grę w rzutki i mam problem ponieważ nie mogę wymyślić funkcji która pozycje suwaków jako współrzędne będzie przerabiała na ilość punktów. Możecie mi jakoś pomóc?

0

Jeżeli masz taką tarczę: http://upload.wikimedia.org/wikipedia/commons/4/42/Dartboard.svg
To będzie trochę roboty; poczytaj o kolizji point in triangle (point triangle collision) oraz tej najprostszej, czyli point in circle (z tym, że też trochę roboty tutaj będzie - lecz wystarczy nieco bardziej matematycznie do tego podejść).

0

A możecie powiedzieć coś więcej o tej kolizji? Jak to zrealizowac?

0

http://www.polskaanglia.pl/kimet/17692_2.jpg Tu jest tarcza taką jak ja mam.

0
Function collision_check(const Point: TPoint; const CircleRadius: uint32): Boolean;
Begin
 { ... }
End;

{ .... }
if (collision_check(PozycjaRzutki, 10)) then
 IloscPunktow := 9 Else
if (collision_check(PozycjaRzutki, 30)) then
 IloscPunktow := 8 Else
if (collision_check(PozycjaRzutki, 40)) then
 IloscPunktow := 7 Else
if (collision_check(PozycjaRzutki, 50)) then
 IloscPunktow := 6 Else
 { ... } else
 IloscPunktow := 0;

Oczywiście lepszym wyjściem byłoby tutaj użycie tablicy, lecz chciałem przekazać główną ideę:
Na początku sprawdzasz, czy rzutka trafiła w 9 punktów (czyli, czy trafiła w koło na samym środku; przyjąłem, że promień tego koła ma 10 jakichś-tam-jednostek), potem czy trafiła w ósmy (o promieniu 30 jakichś-tam-jednostek), siódmy punkt i tak dalej...
Te promienie najłatwiej wyznaczyć doświadczalnie, tutaj tak tylko zgadywałem poglądowo.

0

Jeżeli promień każdego kółka jest o R pikseli większy od poprzedniego to:
Pkt:=Max(0,10-Round(Floor(sqrt(sqr(X-10*R)+sqr(Y-10*R))/10)));

0

A moglibyście mi jakoś podpowiedzieć jak to zrobić w tablicy? Wybaczcie ale nie bardzo się w tym orientuję.

0

No to najwyższy czas przeczytać kurs

1 użytkowników online, w tym zalogowanych: 0, gości: 1