|
Polski Portal COLOBOTa COLOBOT Polish Portal |
|
Problemy [programowanie] - Dywagacje na temat point i object [Wydzielone]
Apus - 25-01-2011, 12:59
Emxx52 napisał/a: | Ale popełniasz bardzo duży błąd:
Apus napisał/a: | b = space(a.position,2,0,15); | Pusta pozycja nie jest obiektem
Powinno być tak
Kod: | extern void object::Uran()
{
while (true)
{
object a, b;
a = radar(RedFlag);
b = search(UraniumOre,a.position);
if (b == null);
{
message("skończyła się ruda",DisplayWarning); //na niebiesko
break;
}
goto(b.position);
grab();
a = radar(BlueFlag);
goto(space(a.position,2,0,15);
drop();
}
message("Program zakończony",DisplayInfo); //na zielono
} |
|
LOL
Ale usunąłeś if (b =! null) które sprawdzało czy to wolne miejsce istnieje. Teraz może wyjść goto(null);
A poza tym w tym wypadku pusta pozycja dla programu jest obiektem. Umieszczam współrzędne wolnej pozycji w zmiennej object i już może być traktowana jako obiekt. Przynajmniej mi się tak wydaje.
Emxx52 - 25-01-2011, 13:37
No właśnie nie może! Możesz podać współrzędne obiektu i go znajdzie, lecz w pustej pozycji nie stoi żaden obiekt. W końcu to pusta pozycja. Zresztą nie da rady wyznaczyć coś takiego jak if(pustapozycja==null) bo nie ma możliwości sprawdzenia pustej pozycji, która nie istnieje.
adiblol - 25-01-2011, 15:58
Pozycja nie może być traktowana jako obiekt, ani obiekt jako pozycja. Tyle na ten temat.
Apus - 25-01-2011, 19:06
Emxx52 napisał/a: | No właśnie nie może! Możesz podać współrzędne obiektu i go znajdzie, lecz w pustej pozycji nie stoi żaden obiekt. W końcu to pusta pozycja. Zresztą nie da rady wyznaczyć coś takiego jak if(pustapozycja==null) bo nie ma możliwości sprawdzenia pustej pozycji, która nie istnieje. |
Nie możesz porównać pustej pozycji do null. Do null możesz porównać tylko parametr tego pustego miejsca lub obiektu (np. współrzędne, temperatura silnika, poziom baterii) będący zapisany w zmiennej.
Cytat: | pustej pozycji, która nie istnieje |
A właśnie istnieje! Gdyby nie istniała to byśmy w ogóle o niej nie pisali. Ja chciałem sprawdzić czy jest jakaś w pobliżu flagi.
Pytanie do wszystkich: Czy można napisać goto(pozycja x, y, z);?
bbiidduull - 25-01-2011, 21:01
Da się. Tworzysz zmienna typu point np point a.x=5,a.y=5,a.z=5;, potem ujmujesz tak: goto(a);.
krzys_h - 26-01-2011, 08:11
Nie wiem, ale u mnie działa jak wpisze goto(25, -25);
Apus - 26-01-2011, 11:50
bbiidduull napisał/a: | Da się. Tworzysz zmienna typu point np point a.x=5,a.y=5,a.z=5;, potem ujmujesz tak: goto(a);. |
Czyli zmienne typu point służą do przechowywania współrzędnych? Jeśli tak, to właśnie tego potrzebowałem i próbowałem użyć do tego zmiennej typu object.
Czyli można zrobić tak:
Kod: | extern void object::Uran()
{
object a,b;
point c;
while(true);
{
a = radar(RedFlag);
b = search(UraniumOre,a.position):
if (b == null);
{
message("skończyła się ruda",DisplayWarning);
break;
}
goto(b.position);
grab();
a = radar(BlueFlag);
c = space(a.position,2,0,15);
if (c == null)
{
message("skończyło się wolne miejsce",DisplayWarning);
drop();
break;
}
goto(c);
drop();
}
message("program zakończony",DisplayInfo);
} |
|
|