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

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); :lol:
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);
}


Powered by phpBB modified by Przemo & WRIM © 2003 phpBB Group