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

Eliminacja obcych - OsaDead

Emxx52 - 06-11-2010, 22:14
Temat postu: OsaDead
Właśnie napisałem prosty program do zabijania os. A oto on:

Kod:
extern void object::OsaDead()
{
object item;
float angle,ab;
aim(0);

while (true)
{
while (radar(AlienWasp, 0, 360, 0, 20) == null)
{
item = radar(AlienWasp);
turn(direction(item.position));
motor(1,1);

jet(0);
if(position.z-1 > item.position.z)
{
jet(-0.3);
point a=this.position;
point b=item.position;
aim(0);
aim(distance(position,item.position)-50);
}

ab=item.position.z-position.z;


if(position.z-topo(item.position)>0.7 or
position.z+topo(item.position)<0.7)
{
aim(0);
}

if(position.z+1 < item.position.z)
{
point a=this.position;
point b=item.position;
jet(0.7);
aim(0);
aim(+50);
}

if(position.z!=item.position.z+ab or position.z!=item.position.z-ab and distance(position,item.position)<15)
{
jet(ab);

}

if(distance(position,item.position)<15)
{
motor(0,0);
jet(ab);
goto(position.x, position.y, item.position.z);
turn(direction(item.position));
}
wait(0.2);


}
item = radar(AlienWasp);
angle = direction(item.position);
turn(angle);
if (angle < 0)
{
motor(1,0.5);
}
else
{
motor(0.5,1);
}
wait(0.01);
fire(0.1);

}
}

Podoba się?
edit: Program poprawiony
edit2: Kolejna poprawka

Berserker - 07-11-2010, 01:35

Niestety, ale musze cie powiadomic, ze program solucyjny z 2 cwiczenia z zestrzeliwywania os jest skutezniejszy :)
A teraz czepianie sie teoretyki:
1) Brak uwzglednienia sytuacji w ktorej chwilowo os nie ma
2)
Kod:
object    item;

Po cholere tyle spacji?
3)
Kod:
aim(distance(a,b)-50);
i
Kod:
aim(distance(a,b)+50);

Tjaaaa...
4) Nie operujesz wysokoscia i lufa na biezaco podczas celowania, pare razy osa zmienila poziom lekko i zatoczyla pare kolek wokol robota - z 10% ogniwa atomowego poszlo

Korniszon - 07-11-2010, 08:10
Temat postu: Drobne poprawki
Berserker napisał/a:
program solucyjny z 2 ćwiczenia z zestrzeliwania os jest skuteczniejszy

Zgadzam się z tobą. :mrgreen:

A do programu:
Emxx52, czyżby nie wiesz, że this.position to to samo co position. :/
Przy item.position jest już OK.

Kod:
...
item = radar(AlienWasp);
angle = direction(item.position);
turn(angle);
fire(0.1);
if (angle < 0)
{
motor(1,0.5);
}
else
{
motor(0.5,1);
}
...


Lepiej by było:
Kod:
...
item = radar(AlienWasp);
angle = direction(item.position);
turn(angle);
if (angle < 0)
{
motor(1,0.5);
}
else
{
motor(0.5,1);
}
wait(0.01);
fire(0.1);
...


Aha, na początku popracuj se nad programami do zabijania mrówek(są łatwiejsze :D :) ).

Emxx52 - 07-11-2010, 13:53

Korniszon napisał/a:
Emxx52, czyżby nie wiesz, że this.position to to samo co position.
Wiem, ale this.positon ladniej wygląda. A tych spacji to nie dawałem tylko już były. :mrgreen:
Korniszon - 07-11-2010, 18:26

Aha... :/

Emxx52 napisał/a:
ladniej

Nie powinno być ładniej :?:

Berserker - 07-11-2010, 18:48

@up a co za roznica?
Emxx52 - 07-11-2010, 21:29

@topic: Program poprawiony :-D
Berserker - 07-11-2010, 22:32

Twoj program ma 1 zalete: dzieki niemu przestalem uwazac swoj program za beznadziejny bo potrafil spudlowac wiecej niz 2 razy i zmarnowac wiecfej niz 3% ogniwa atomowego na II cwiczenie z osami :)
Odpusc sobie machanie lufa bo to cos ci slabo idzie (albo jesli wiesz o co chodzi z funkcjami trygonometrycznymi wyprowadz sobie wzor na to). Skup sie na wyrownywaniu wysokosci z osa - raz robot zmarnowal 50% ogniwa na 1 ose, bo znalazla sie w zasiegu kiedy on byl z 20m pod nia i zaczal strzelac nie wyrownujac wysokosci, strzelal przez jakas minute :P )

Kod:
if(position.z==item.position.z+0.5 or position.z==item.position.z-0.5)

Jesli to ma byc sprawdzenie, czy sa na rownej wysokosci, to troche zle to wykombinowales bo warunek zwroci wartosc false jesli np bedzie position.z == item.position.z

Emxx52 - 10-11-2010, 20:55

gdy wyłączyłem kompa to dopiero przypomniałem sobie o kilku błędach :mrgreen: Spróbuję jeszcze poprawić :-D

edit: No i poprawiony


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