http://vitas.matfyz.cz/txt/pohadky/pohadka.cpp.html
// pohadka.cpp

int main(int args, char *argv[])
{
   if( args != 1 )
   {
       printf("usage: %s prokoho",argv[0]);
       exit(1);
   }

   if( String(argv[1]) != String("Lenka") )
   {
       printf("Az tu bude Lenka");
       exit(-1);
   }

   Osoba who(argv[1]);

   try
   {
       pohadka(who);
   }
   catch(Osoba::Expection::Spinka e)
   {
       who.celo.put_at(new Pusinka(Pusinka::Něžná));
       who.postylka.perinka.urovnat();
   }

   return 0;
}

int pohadka(Osoba &pro_koho = &OS_LENKA)
{
   // setup
   Osoba princ("Jason"), kral("Mojmir"), princezna("Jasnenka", kral);
   
   princ.sendto(kral, Message::PrinceznaRequest);

   princezna.set_nalada(Temperature::Abs_zero);
   prinzena.komnata.lock();

   Drak * drak_bill = new Drak(5);

   drak_bill->sendto(kral, Message::PrinceznaRequest);

   for(int i=100;i--;)
   {
      kral.move(Sem);
      kral.move(Tam);
   }

   kral.sendto( Osoba::Everyone,
                Message::KillDragonRequest | Message::PrinceznaOffer);

   princ.horse.add(princ);
   princ.horse.sendto(*drak_bill);

   try
   {
      princ.sendto(*drak_bill, Message::GoHome);
   }
   catch(ExtraheatExeption e) 
   {
      princ.set_nalada(e.temperature * 2);
      kill_bill(princ, *drak_bill);
      kill_bill2(princ, *drak_bill);
      delete(drak_bill);
   }

   princezna.komnata.unlock();

   while( princezna.vizual_object_analyze(princ) < 0 )
   {
       princezna.komnta.lock();
       princ.upgrade();
       princezna.komnata.unlock();
   }

   princ.kiss(princezna);

   return Pohadka::HappyEnd;

}

void kill_bill(Osoba &uma, Osoba &bill) 
{
   while( bill.heads() > 0) 
   {
      uma.sek(bill);
   }
}

void kill_bill2(Osoba &uma, Osoba &bill) 
{
   while( bill.size() > 0.1) 
   {
      uma.sek(bill);
   }
}


Zpět: http://vitas.matfyz.cz/txt/pohadky/pohadka.cpp.html