• Welcome to TUKE FÓRUM - Fórum pre Å¡tudentov Technickej Univerzity v KoÅ¡iciach.
 

Programovanie

Started by esperian, 18.02.2011, 22:35:36

« predchádzajúce - ïal¹ie »

darktemplar999

asi len ta spirala bude davat zmysel, rozmyslal som, ci sa to nebude dat cez funkciu schodov urobit z rohu sveta, zeby nejak beepre obkladal z prveho rohu schody aj z opacneho rohu, ale netusim jak dalej s tym ked sa ta diagonala vyplni, este by mohlo byt nieco ako vybeeprovanie pismena x a tak najist stred :O

farkasdvd

tvoj napad je jednoduchsi (vykreslit x), ved sa opakuje len toto:
putBeeper();
turnLeft();
movek();
turnRight();
movek();
toto sa opakuje kym nenajde stenu, pototm to urobis aj z druhej strany a kde budu 2 beepre, tak tam bude stred. hned sa na to aj pozrem. diky

darktemplar999

no hej ale ked bude svet rozmerov 5 krat 7 tak to fungovat nebude napriklad :( preto som to nedaval ako riesenie :O

farkasdvd

#53
vyskusal som toto x-ko a funguje perfektne, koncova pozicia vizera tak ako na obrazku :)
mas pravdu, to funguje len pri svetoch ktore maju tvar stvorca a tie 2 middleearth.kw su take, ale ine by sa asi dali riesit len pomocou premennych.
zdrojak je dost dlhy, podla mna este sa to da zjednodusit, ale uz s tym nech babra iny :)
hned to dam sem

radsej som to upol, lebo je dost dlhy:
http://leteckaposta.cz/887819588

darktemplar999

vecer ked stihnem tak to nakodim jednoduchsie :)

hardest

tu siestu ulohu s tym hradom mate niekto spravenu ?

esperian

a stalo sa vam niekomu ze ste vyrobili "perpetum mobile " ?? xD myslim to tak ze ak dam zlu podmienku  ten program bude bezat do nekonecna , neviete niekto ako ten program vypnem ?? lebo sa mi nechce stale to puty vypinat a zase sa prihlasovat

darktemplar999

napis reset a daj enter :D aspon tak pisu na moodli :O

esperian

tak moje perpeta boli asi zlozitejsie, mne to tak nefungovalo xDDD

hardest

daj CTRL+C

Inak, ako ste robili tu tretiu ulohu, aby zozbieral vsetky znacky a potom ich dal do rohu ?

Lebo vedel by som to spravit ked viem dopredu kolko bude riadkov a stlpcov tak, ze by som ho nechal prejst vsetky pozicie zhora-nadol a ked skonci bude v pravom dolnom rohu a polozi tam vsetky beepre ktore zozbieral a potom ide znovu az kym sa nestane ze po prejdeni zhora-nadol nebude mat ziadne beepre vo vacku (cize svet je prazdny), ale ked neviem dopredu kolko je riadkov a stlpcov, tak nejak ma nenapada ako to spravit.

darktemplar999

tretia doplnkova uloha, tak to som navrhol ja a funguje

#include <karel.h>

void turnRight()
{
   setStepDelay(0);
   turnLeft();
   turnLeft();
   turnLeft();
   setStepDelay(1000);
}

void riadok()
{
   while(frontIsClear())
   {
      if (beepersPresent())
      {   
         while(beepersPresent())
         {
            pickBeeper();
         }
      }
      movek();
   }
   if (facingNorth())
      {
         turnRight();
      }
   else
      {
         turnLeft();
      }   
}

void vyloz()
{
   while(beepersInBag())
   {
      putBeeper();
   }
}      


int main()
{
   turnOn("collector2.kw");
   turnLeft();
   riadok();
   while((leftIsClear()||frontIsClear())&&(rightIsClear()||frontIsClear()))
   {
      if(beepersPresent())
      {
         while(beepersPresent())
         {
            pickBeeper();
         }
      }
      movek();
      if(leftIsBlocked())
      {
         turnRight();
         riadok();
      }
      else
      {
         turnLeft();
         riadok();
      }
   }   
   if(leftIsBlocked()||frontIsBlocked())
   {
      turnRight();
      while(frontIsClear())
      {
         movek();
      }
      vyloz();
   }
   if(rightIsBlocked()||frontIsBlocked())
      {
      vyloz();
      }
   turnRight();
   while(frontIsClear())
   {
   movek();
   }
   turnOff();
}


   

hardest

uz som na to prisiel aj sam, ale diky :)

hardest

este jedna vec, pri tych bludiskach ... zrejme ste to robili tak, ze ak je pred nim stena a zaroven napravo od neho stena tak pojde dolava ... a potom opacne, ked je pred nim stena a nalavo stena tak pojde doprava ... ale co ak je iba pred nim stena a moze ist aj doprava aj dolava ?

// nejak sa mi casto stava, ze sa vracia tam kde uz bol a donekonecna sa mota tam a naspät

darktemplar999

uz to tu niekto upol to bludisko :) tak pozri na predchadzajucu stranu :)

hardest

este tu 6. doplnujucu ulohu by nebol niekto ochotny sem dat ? ... nejak som to spravil ale mam velmi dlhy kod, ze ci to nema niekto jednoduchsie spravene

orsi

aj ja som si myslel ze nakodim jednoduchsie ako farkasdvd ten stred sveta, a nakoniec to skoncilo tiez asi 115 riadkami a pritom som robil elegantnejsie niektore veci. no a dako sa mi to nevydarilo lebo kód mám asi 2x zložitejší a robí aj o trochu viacej krokov ten karel. ale funguje a serem na to.  :D

esperian

no ved to je zaklad ze to aspon funguje , horsie by bolo keby to bolo 2x dlhsie a nefungovalo xD

venegur

Ja som za vami trosku pozadu :-), nemozte mi poradit s kodom pre ulohu c. 2, pre lubovolne vysoke respektive siroke prekazky, lebo neviem to spravit, aby to fungovalo pre lubovolnu mapu, cize to neviem spravit :D

hardest

#68
ale ajtak sem dajte prosim niekto ako ste robili ten hrad ... kus lamersky to mam az na prilis vela krokov :D

upnite niekam pls, ked je to dlhy kod

BuliWyf

#69
PREKAZKY:

#include <karel.h>

void turnRight()
{   
   setStepDelay(0);
   turnLeft();
   turnLeft();
   setStepDelay(500);
   turnLeft();
}

void jump()
{
   turnLeft();
   while (rightIsBlocked())
   {
      movek();
   }
   turnRight();
   movek();
   while (rightIsBlocked())
   {
      movek();
   }
   turnRight();
   while (frontIsClear())
   {
      movek();
   }
   turnLeft();
}

int main()
{
   setStepDelay(500);
   turnOn("olympics6.kw");
   while (noBeepersPresent())
   {   
      while (frontIsClear())
      {   
         movek();
         if (beepersPresent())
         {
            turnOff();
         }
      }
      jump();
   }
   turnOff();
   return 0;
}

edit: ten stred som urobil vyplnenim celej plochy ale mam to az na 106 riadkov...hrad ma dokonca 115 riadkov...
btw ake je heslo na druhu prednasku z asemblera?

darktemplar999

hentie prekazky:

#include <karel.h>

void turnRight()
{
   setStepDelay(0);
   turnLeft();
   turnLeft();
   turnLeft();
   setStepDelay(1000);
}


void jumpOver()
{
   turnLeft();
   while(rightIsBlocked())
   {
      movek();
   }
   turnRight();
   movek();
   while(rightIsBlocked())
   {
      movek();
   }
   turnRight();
   movek();
   while(frontIsClear())   
   {
      movek();
   }
   turnLeft();
      
}



int main()
{

   turnOn("olympics6.kw");
   while(noBeepersPresent())   
   {
   if(frontIsBlocked())
      jumpOver();
   else
   {   
      while(frontIsClear())
      {
         movek();
      }

   }
   }
   turnOff();

}

orsi

ten hrad mám na 40 riadkov :D

RiTChi

celkom fajna sluzba na zdielanie zdrojakov: http://www.sdilejkod.cz/ :)

hardest

#73
ja mam ten hrad na 56 riadkov, ale tak zalezi od toho ako rozkladas kod :D

// uz len tu spiralu nemam, aj ked viem ako by sa to dalo celkom jednoducho no nechce sa mi uz :D

// riadne vela casu nato treba .. a to som si chcel dnes este pozriet aj elektrotechniku ale uz nic z toho

darktemplar999

ten hrad vam ide aj ked su stlpy lubovolne vysoke?