Oryginalna strona colobot.cba.pl umarła, gdy cba.pl przestało oferować darmowy hosting. To jest statyczny mirror, pobrany w 2018. ~krzys_h
 Polski Portal COLOBOTa - COLOBOT Polish Portal
Forum - Polski Portal COLOBOTa
Strona głównaStrona główna UżytkownicyUżytkownicy GrupyGrupy StatystykiStatystyki


Poprzedni temat «» Następny temat
Do uranu

Jak oceniasz program?
1-ŻAL.PL!
60%
 60%  [ 6 ]
2-słaby
20%
 20%  [ 2 ]
3-średni
0%
 0%  [ 0 ]
4-dobry
0%
 0%  [ 0 ]
5-bardzo dobry
10%
 10%  [ 1 ]
6-ALE URWAŁ!
10%
 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
Wysłany: 26-01-2011, 16:03   

Lepiej funkcją radar, radar(0) zwraca dowolny obiekt.
_________________
1Tbps Project && Telecomix Network

 
 
     
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
_________________
 
 
     
Wyświetl posty z ostatnich:   
Nie możesz pisać nowych tematów
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum

Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Polski Portal COLOBOTa © 2008 - 2012