Do uranu |
Jak oceniasz program? |
1-ŻAL.PL! |
|
60% |
[ 6 ] |
2-słaby |
|
20% |
[ 2 ] |
3-średni |
|
0% |
[ 0 ] |
4-dobry |
|
0% |
[ 0 ] |
5-bardzo dobry |
|
10% |
[ 1 ] |
6-ALE URWAŁ! |
|
10% |
[ 1 ] |
|
Głosowań: 10 |
Wszystkich Głosów: 10 |
|
|
|
Autor |
Wiadomość |
Apus
Twoja ulubiona misja: 2 pierwsze na Wulkanii
Pomógł: 3 razy Wiek: 19 Dołączył: 09 Kwi 2010 Posty: 246 Skąd: ze wsi
|
Wysłany: 26-01-2011, 15:08
|
|
|
W takim razie jak sprawdzić czy jest wolne miejsce o podanych parametrach? |
|
|
|
|
krzys_h
Twoja ulubiona misja: Wszystkie :)
Pomógł: 3 razy Wiek: 20 Dołączył: 12 Gru 2010 Posty: 255 Skąd: Łódź
|
Wysłany: 26-01-2011, 15:16
|
|
|
Mnie nie pytaj Popatrz jakie wartości x, y i z zwraca wtedy funkcja, może to cie naprowadzi. |
|
|
|
|
bbiidduull
Dołączył: 09 Lut 2009 Posty: 140
|
Wysłany: 26-01-2011, 15:52
|
|
|
Cytat: | W takim razie jak sprawdzić czy jest wolne miejsce o podanych parametrach? |
Chociażby tak:
Kod: |
point srodek;
srodek.x=0+2;// +2 to dlatego ze robot jest duży i akurat zakrywa ten punkt
srodek.y=0+2;// a sprawdzany punkt to srodek(0,0);
errmode(0);
if(goto(srodek)!=0)
{
message("Zajęte");
}
|
Do sprawdzenia czy jest wolne i nie ma np. Uranu czy Ogniwa, wystarczy skasowac "+2" z obu x i y. |
Ostatnio zmieniony przez bbiidduull 26-01-2011, 15:59, w całości zmieniany 3 razy |
|
|
|
|
Apus
Twoja ulubiona misja: 2 pierwsze na Wulkanii
Pomógł: 3 razy Wiek: 19 Dołączył: 09 Kwi 2010 Posty: 246 Skąd: ze wsi
|
Wysłany: 26-01-2011, 15:56
|
|
|
bbiidduull napisał/a: | Cytat: | W takim razie jak sprawdzić czy jest wolne miejsce o podanych parametrach? |
Chociażby tak:
Kod: |
point srodek;
srodek.x=0+2;// +2 to dlatego ze robot jest duży i akurat zakrywa ten punkt
srodek.y=0+2;// a sprawdzany punkt to srodek(0,0);
errmode(0);
if(goto(srodek)!=0)
{
message("Zajęte");
}
|
|
A jak to umieścić w tamtym programie? Bo ja tego co napisałeś kompletnie nie rozumiem. |
|
|
|
|
adiblol
Administrator forum FLOSS FTW!
Twoja ulubiona misja: porównywanie formatów audio
Pomógł: 18 razy Dołączył: 21 Kwi 2008 Posty: 1313 Skąd: pokój odsłuchowy
|
|
|
|
|
bbiidduull
Dołączył: 09 Lut 2009 Posty: 140
|
Wysłany: 26-01-2011, 16:04
|
|
|
Powiedzmy ze wyprodukowany Tytan chcesz przenieść w określone miejsce. Tym określonym miejscem w tym przypadku jest punkt "srodek(0,0);" (środek mapy), jeśli ten punkt "srodek" będzie zajęty, goto się wykrzaczy. I tu jest warunek ze jak się wykrzaczy to znaczy ze jest zajęte miejsce. |
|
|
|
|
krzys_h
Twoja ulubiona misja: Wszystkie :)
Pomógł: 3 razy Wiek: 20 Dołączył: 12 Gru 2010 Posty: 255 Skąd: Łódź
|
Wysłany: 26-01-2011, 16:08
|
|
|
Ale on nie chce sprawdzić "czy dany punkt jest wolnym miejscem" tylko "czy istnieje wolne miejsce o podanych parametrach" |
|
|
|
|
bbiidduull
Dołączył: 09 Lut 2009 Posty: 140
|
Wysłany: 26-01-2011, 16:12
|
|
|
A jak wolne miejsce o podanych parametrach nie istnieje.. to znaczy ze jest zajęte, czy nie istnieje? |
|
|
|
|
Apus
Twoja ulubiona misja: 2 pierwsze na Wulkanii
Pomógł: 3 razy Wiek: 19 Dołączył: 09 Kwi 2010 Posty: 246 Skąd: ze wsi
|
Wysłany: 26-01-2011, 16:36
|
|
|
Może sformułuję pytanie dokładniej.
Jak sprawdzić czy istnieje wolne miejsce o średnicy min 2 m i odległości od niebieskiej flagi max 15 m. |
|
|
|
|
bbiidduull
Dołączył: 09 Lut 2009 Posty: 140
|
Wysłany: 26-01-2011, 16:57
|
|
|
Spróbuj w praktyce to:
Kod: |
object flaga;
flaga=radar(BlueFlag);
point flag=flaga.position;
errmode(0);
if(goto(space(flag,0,15,2))!=0)
{
message("Zajęte");
}
|
|
|
|
|
|
Apus
Twoja ulubiona misja: 2 pierwsze na Wulkanii
Pomógł: 3 razy Wiek: 19 Dołączył: 09 Kwi 2010 Posty: 246 Skąd: ze wsi
|
Wysłany: 26-01-2011, 20:34
|
|
|
Ale nadal nie rozumiem tego:
bbiidduull napisał/a: | if(goto(space(flag,0,15,2))!=0)
|
|
|
|
|
|
bbiidduull
Dołączył: 09 Lut 2009 Posty: 140
|
Wysłany: 26-01-2011, 20:44
|
|
|
Jeżeli funkcja goto zwróci wartość rożną od zera to wykonaj ble ble... Ma iść czyli goto w miejsce space(flag,0,15,2) co oznacza ze ma iść w wolne znalezione miejsce max 15 metrów od flagi z minimalnym odstępem 2 metry.
Może to ci pomoże:
Kod: |
object flaga;
point flag,wolnemiejsce;
flaga=radar(BlueFlag);
flag=flaga.position;
wolnemiejsce=space(flag,0,1,2);
errmode(0);
if(goto(wolnemiejsce)!=0)
{
message("Zajęte");
}
|
|
|
|
|
|
Apus
Twoja ulubiona misja: 2 pierwsze na Wulkanii
Pomógł: 3 razy Wiek: 19 Dołączył: 09 Kwi 2010 Posty: 246 Skąd: ze wsi
|
Wysłany: 27-01-2011, 11:52
|
|
|
Nadal nie rozumiem dlaczego w warunku if'a jest goto. |
|
|
|
|
krzys_h
Twoja ulubiona misja: Wszystkie :)
Pomógł: 3 razy Wiek: 20 Dołączył: 12 Gru 2010 Posty: 255 Skąd: Łódź
|
Wysłany: 27-01-2011, 12:19
|
|
|
To goto oznacza, że jeśli nie można podejść do tej pozycji to wyświetli komunikat
PS. Po tym if powinno być jeszcze errmode(1); |
|
|
|
|
Berserker
Dark Ness
Twoja ulubiona misja: Ofrenia
Pomógł: 16 razy Wiek: 24 Dołączył: 24 Mar 2009 Posty: 496 Skąd: Bigos
|
Wysłany: 27-01-2011, 12:19
|
|
|
Moge poszatkowac ten temat na jeszcze 3 kolejne, ale sie powstrzymam
Apus, funkcja goto() jest typu int. Jest wiele takich funkcji w colobocie, wiekszosc (chyba wszystkie oprocz fire()) ma za zadanie doprowadzic robota do jakiegos stanu, np. funkcja aim() ma doprowadzic do tego, ze lufa bedzie w jakiejs pozycji, funkcja goto() ma doprowadzic do tego, ze robot znajdzie sie w jakims punkcie etc... Takie funkcje moga zwracac wartosci jesli wczesniej wrzucisz errmode(0). Wynik jaki zwracaja zalezy od tego, jak przebiegnie cala operacja i po tym wlasnie wyniku mozna napisac w programie dzialania adekwatne. Jesli goto() zwroci 0, to znaczy, ze robot doszedl do punktu i ogolnie funkcja zakonczyla sie sukcesem. Jesli goto() z kolei zwroci 212 to znaczy, ze punkt jest zajety i wtedy np mozesz szukac pozycji 5m obok.
Mam nadzieje, ze teraz rozumiesz dlaczego goto() wyladowalo w ifie |
_________________
|
|
|
|
|
|