Резултати от 1 до 13 от общо 13

Prevod ot Paskal kam Delfi

Сподели във Facebook Сподели в Twitter Изпрати на Email Сподели в LinkedIn
  1. Junior Member
    Тук е от
    Feb 2007
    Мнения
    18
    #1

    Prevod ot Paskal kam Delfi

    Здравейте,

    един приятел ми препоръча този форум да получа малко помощ. Написал съм един алгоритам за калкулация на битки от една онлайн игра ... на Паскал (разбира се кода си има проблеми) ... може ли някой да преведе кода на Делфи в по-добър вид?

    Тази програмка е малко предизвикателство за мен, защото се опитвам да накарам компютъра да прекара 999 на степен 6 цикала с сметки и да изкара минимална стойност, един вид античен начин да изкарам минимум и максимум на сложна функция. Но как ще се отрази това на сметките, нямам идея. Един калкулатор на време да доварши сметките би бил от полза кам този калкулатор, че задачата за компа не е лесна

    Ако някой прояви желание да го направи, ще съм му много благодарен ...

    Филип

  2.  
     
  3. Banned
    Тук е от
    Sep 2004
    Мнения
    1,083
    #2

    Re: Prevod ot Paskal kam Delfi

    просто ползвай "copy-paste" в делфито и пробвай да компилираш ....

    после - само оправяш синтактичните грешки и voila

  4. Member
    Тук е от
    Jun 2002
    Мнения
    796
    #3

    Re: Prevod ot Paskal kam Delfi

    Драги neverman,
    999 на степен 6 е едно меко казано големичко число,а именно (10 на 18) - 1.
    Лично аз като знам че (10 на 9) цъкъла с извикване на празна функция се смята на semptron 2300+ за около 6 секунди бих се изненадал въпросната програма със (999 на ст 6) цикъла да се изпълни в обозримо време(спред мен при тази скорост ще се смята около 190,258751903 години ).
    Мисля че е добра идея още веднъж да се погледне какво точно прави кода на deplphi.

    Цитат Първоначално публикувано от Zaphod B
    просто ползвай "copy-paste" в делфито и пробвай да компилираш ....

    после - само оправяш синтактичните грешки и voila
    А това просто няма да го коментирам ...

  5. Senior Member Аватара на Bibi
    Тук е от
    Nov 2004
    Мнения
    2,757
    #4

    Re: Prevod ot Paskal kam Delfi

    Кажи каква е горе-долу задачата, за да оптимизираме първо самия алгоритъм.

  6. Banned
    Тук е от
    Sep 2004
    Мнения
    1,083
    #5

    Re: Prevod ot Paskal kam Delfi

    Цитат Първоначално публикувано от klamer
    А това просто няма да го коментирам ...
    аз нямам решение, но поне давам насока...

    ако си спец :

    - go, go !




  7. Member
    Тук е от
    Apr 2001
    Мнения
    226
    #6

    Re: Prevod ot Paskal kam Delfi

    играта е Ферион (Ferion.com), където България има сериозно присъствие

    задачата е, да се намери оптимален дизайн на боен космически кораб (или флота), при определено ниво на развити технологии - отделно се развиват двигатели, щит, оръжие, ремонт (repair).
    целта - флотата да стане по-силна от противниковата.
    тъй като цената и издръжката са определящи, не може просто да се трупа неограничено количество флота

    п.с. Филип е от Варна, може да посети следващата сбирка, надявам се и аз

  8.  
     
  9. Senior Member Аватара на Bibi
    Тук е от
    Nov 2004
    Мнения
    2,757
    #7

    Re: Prevod ot Paskal kam Delfi

    Нещо ми се губи все още модела на задачата, но ми звучи като стандартен проблем от Математическо оптимиране.
    Искам да кажа, че съм почти сигурна, че методът на пълното изчерпване е излишен в случая!
    Потърсете сорсове, реализиращи т.нар. задача MiniMax, подозирам, че това ще ви свърши работа (минимум пари и максимум ефективност).

  10. Junior Member
    Тук е от
    Feb 2007
    Мнения
    18
    #8

    Re: Prevod ot Paskal kam Delfi

    ще се опитам да обясня по-подробно задачата и ще гледам да ви дам линк към кода на програмката.

    В играта има 3 вида бойни единици: малки кораби (до 10 К унитс), големи кораби (над 10 унитс) и планети (сграда на планета представляваща планетарна защита).

    Против всеки вид единица има оражия (лазери против малки кораби, фазери, против големи кораби и бомби, против планети), всяка единица си има като характеристика и щит, унитс (демек колко е голяма бойната единица), респективно цена на кораба (малките са по-евтини, но по-неефективни, големите по-скъпи).

    един прост дизайн на кораб е горе долу това лазер/фазер/бомби-щит-унитс .. или пример 0/1500/0-200-9716 ... малак кораб.

    така, формулата за смятане на битките е направена като процедура, защото е много сложна, да не се повтаря. Дал съм като отделни процедури възможни варианти на дизайни на кораби и планети.

    Ето и примерна ситуация която трябва да смята програмата:

    имаме вражеска флота с сила 10 000/15 000/50 000-80 000-1 800 000 направена само от големи кораби. Аз искам да направя флота за да спра дадената с съотношение на сила минимум 2:1 за мен. Задачата на програмата е да ми изкара правилно съотношение на малки и големи кораби, така че да мога да спра тази флота с това съотношение, както и да е най-евтиния вариант. Програмата е направена да смята 2 вида битки, битка в защита на планета (включваща планетарна защита - голям бонус в много случаи) и директна атака по вражеската флота, т.е. без планета.

    Алгоритама въобще не е елементарен да се създаде ... но програмно, паскала не иска да ми подкара 6 вложени цикала до 999. Подкарва само 6 вложени цикала до 50. За улеснение съм направил това число 999 да е избираемо от потребитела за да се намали времето на смятане.

    Име 3 основни причини да искам това под Делфи:
    - графичния изглед за въвеждане на данни;
    - невъзможността да подкарам 6 вложени цикала над 50;
    - възможност за процедура която да пресмята остатъка от време за сметки на дадената ситуация.

    След последната поправка на кода, имам и проблеми с правилния препис на процедурите, за което също бил приел помощ ... позабравил съм ги и не съм убеден че е възможен вариант на вложени процедури.

    давам ви линк към кода, дано имате достъп:
    http://ferion-bg.hit.bg/optimizator-v1.1.pas

    Ако Ви трябват пояснения на кода, само кажете.

    Благодаря предварително за отзивчивостта,
    Филип

  11. Member
    Тук е от
    Dec 2004
    Мнения
    542
    #9

    Re: Prevod ot Paskal kam Delfi

    алгоритъмът си е чисто линейно програмиране мен ако питаш, никакви цикли не ти трябват.

  12. Member
    Тук е от
    Jun 2002
    Мнения
    796
    #10

    Re: Prevod ot Paskal kam Delfi

    Цитат Първоначално публикувано от neverman

    Име 3 основни причини да искам това под Делфи:
    - графичния изглед за въвеждане на данни;
    - невъзможността да подкарам 6 вложени цикала над 50;
    - възможност за процедура която да пресмята остатъка от време за сметки на дадената ситуация.
    - относно графичния изглед съм съгласен
    - не ми се вярва и Delphi да се справи (причините ги написах вече)
    - а това не го рабрах за съжаление


    Цитат Първоначално публикувано от neverman
    давам ви линк към кода, дано имате достъп:
    http://ferion-bg.hit.bg/optimizator-v1.1.pas

    Ако Ви трябват пояснения на кода, само кажете.
    По кода имам два въпроса :
    1. Това за какъв компилатор е (защото под fpc не се компилира по ред причини)
    2. къде е обявена променливата Battle и какъв тип е ?

  13. Junior Member
    Тук е от
    Feb 2007
    Мнения
    18
    #11

    Re: Prevod ot Paskal kam Delfi


    под fpc се опитвах да го компилирам.

    относно battle,имаш право, тип integer ... тази променлива получава стойност само от 1 до 4.

    Третото нещо което съм обяснил лошо, това е нуждата от таймер, който да показва оставащо време до приключване на сметките и до даване на крайния резултат. Нямам идея как да направя такава добавка.

  14.  
     
  15. Member Аватара на kamenf
    Тук е от
    Feb 2005
    Мнения
    799
    #12

    Re: Prevod ot Paskal kam Delfi

    Цитат Първоначално публикувано от neverman
    Третото нещо което съм обяснил лошо, това е нуждата от таймер, който да показва оставащо време до приключване на сметките и до даване на крайния резултат. Нямам идея как да направя такава добавка.
    Например нещо от рода на:

    Код:
    var
     TotalIterations: integer;
     CurrentIteration: integer;
    
     StartTime: TDateTime;
     TotalTimeEstimated: TDateTime;
     TimeLeftEstimated: TDateTime;
    
    begin
     ....
     StartTime:=Now;
     CurrentIteration:=0;
     for.... begin
      ...
      //следващото е по-добре да се прави от време на време - например през няколко цикъла или през известно време
      // например: if CurrentIteration mod 100 = 0 then...
      // или: if Now-LastCheckTime > 1/SecsPerDay then... ... LastCheckTime:=Now....
      if CurrentIteration/TotalIterations>0.01 then begin
       TotalTimeEstimated:= (Now-StartTime)*TotalIterations/CurrentIterration;
       TimeLeftEstimated:=TotalTimeEstimated-(Now-StartTime);
       DisplayTimes...
      end;
      Inc(CurrentIteration);
      ...
     end;
    end;
    Но ако искаш да може програмата да се "движи" все пак (т.е. да се опреснява екрана и ползващият я да може да я прекъсне, е по-добре цялата ти сметка да се извършва в отделна нишка, а показването на време, таймери и др. подобни да става в основната нишка на програмата, където разбира се сметките могат и да се прекъснат.

  16. Junior Member
    Тук е от
    Feb 2007
    Мнения
    18
    #13

    Re: Prevod ot Paskal kam Delfi

    Предполага, че недописаният FOR е цикала който ще минава със сметки (или вложените цикли със сметки) ?

Сподели във Facebook Сподели в Google Plus Сподели в Twitter Изпрати на Email Сподели в LinkedIn

Подобни теми

  1. Programa za prevod?
    От Stealth във форум Общ - хардуер
    Отговори: 1
    Последно: 09-10-01, 16:38

SetCombG.com
SetCombG.com е портален сайт и Форум за битова техника, телевизори, климатици, лаптопи и смартфони, създаден през 1999 година.
Заедно сме над 20 години!
Следвай ни
Горе