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

Ciekawe programy - Pole minowe

Bartek c++ - 19-06-2010, 14:18
Temat postu: Pole minowe
Program służy do robienia pola minowego.
Kod:
extern void object::Pole Minowe()
{
 

produce(position,0,Mine,"");
move(2);
produce(position,0,Mine,"");
move(2);

produce(position,0,Mine,"");
move(2);
produce(position,0,Mine,"");
move(2);
produce(position,0,Mine,"");
move(2);
produce(position,0,Mine,"");
move(2);
turn(90);
move(2);
turn(90);
produce(position,0,Mine,"");
move(2);
produce(position,0,Mine,"");
move(2);

produce(position,0,Mine,"");
move(2);
produce(position,0,Mine,"");
move(2);
produce(position,0,Mine,"");
move(2);
produce(position,0,Mine,"");
move(2);
turn(-90);
move(2);
turn(-90);
produce(position,0,Mine,"");
move(2);
produce(position,0,Mine,"");
move(2);

produce(position,0,Mine,"");
move(2);
produce(position,0,Mine,"");
move(2);
produce(position,0,Mine,"");
move(2);
produce(position,0,Mine,"");
move(2);
turn(90);
move(2);
turn(90);
produce(position,0,Mine,"");
move(2);
produce(position,0,Mine,"");
move(2);

produce(position,0,Mine,"");
move(2);
produce(position,0,Mine,"");
move(2);
produce(position,0,Mine,"");
move(2);
produce(position,0,Mine,"");
move(2);
turn(-90);
move(2);
turn(-90);
produce(position,0,Mine,"");
move(2);
produce(position,0,Mine,"");
move(2);

produce(position,0,Mine,"");
move(2);
produce(position,0,Mine,"");
move(2);
produce(position,0,Mine,"");
move(2);
produce(position,0,Mine,"");
move(2);
turn(90);
move(2);
turn(90);
produce(position,0,Mine,"");
move(2);
produce(position,0,Mine,"");
move(2);

produce(position,0,Mine,"");
move(2);
produce(position,0,Mine,"");
move(2);
produce(position,0,Mine,"");
move(2);
produce(position,0,Mine,"");
move(2);
turn(-90);
move(2);
turn(-90);
produce(position,0,Mine,"");
move(2);
produce(position,0,Mine,"");
move(2);

produce(position,0,Mine,"");
move(2);
produce(position,0,Mine,"");
move(2);
produce(position,0,Mine,"");
move(2);
produce(position,0,Mine,"");
move(2);
turn(90);
move(2);
turn(90);
produce(position,0,Mine,"");
move(2);
produce(position,0,Mine,"");
move(2);

produce(position,0,Mine,"");
move(2);
produce(position,0,Mine,"");
move(2);
produce(position,0,Mine,"");
move(2);
produce(position,0,Mine,"");
move(2);
turn(-90);
move(2);
turn(-90);
}

Efekt:

adiblol - 19-06-2010, 16:40

Można szybciej.
Kod:

for (float y=0;y<6;y++) {
 for (float x=0;x<6;x++) {
  position p;
  p.x = this.position.x+x*2;
  p.y = this.position.y+y*2;
  produce(p, 0, Mine, "");
 }
}


A nawet tym Twoim sposobem mógłbyś użyć pętli.

Berserker - 19-06-2010, 21:32

@up twoj sposob ogranicza pole minowe do bokow rownoleglych do osi wspolrzednych :)
Kod:

int x, y;
point dest;
dest = position;
float angle = orientation;
dest.x += 2*cos(angle);
dest.y += 2*sin(angle);
for(y = 0; y <= 5; y++)
{
   for(x = 0; x <= 5; x++)
   {
   produce(dest, rand()*360, Mine, "");
   if(x < 5)
   {
      dest.x += 2*cos(angle);
      dest.y += 2*sin(angle);
   }
   }
   for(int i = 0; i < 2; ,i++)
   {
      angle += (y%2*2-1)*90;
      dest.x += 2*cos(angle);
      dest.y += 2*sin(angle);
   }
}


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