# Zápočet 6. 2. 2009 v 14:00, archeolog

<{ForumPost(poster="Control", timestamp=2009-02-07 17:44:17)}>
Hlidal pan Tomas Knap (fakt v pohode chlapik).  
\[motivacni] Zadani jednou vetou: Maximalizovat pocet mrtvych v jednom tahu damou ve hre dama.   
  
Zadani strucne: umlatit (pruchodem do hloubky) primitivni hlavolam s velmi malym stavovym prostorem, udelat GUI pro zadani pocatecni konfigurace, vypis vysledku pomoci GUI + nejaka ta GUI bizuterie okolo (menu pro konec, restart)  
  
Zadani podrobne (bylo zadano jako kameny a archeolog, pro snazsi vysvetleni budu pouzivat terminologii hry Dáma (Checkers), ze ktere zadani vychazi):  
Hraci plocha napevno 10x10 totoznych policek.  
Na policku muze byt: volno, kamen, dama  
Dama je prave jedna.  
  
Predstavte si, ze hrajete damu. Jedina Vase figurka je dama. Mate jeden jediny tah a vasim ukolem je skocit(sebrat) maximalni mozne mnozstvi figur protivnika. Jeden tah se muze sestavat z nekolika skoku (sebrani cizich figurek).  
Dama se pohybuje jako dama v Dame - tedy pouze po diagonalach o libovolny pocet policek.   
  
Skocit figurku je mozne pouze pokud je za ni volne misto.

    Je tedy mozne skocit:
    O - figurka, 
    D - dama, 
    X - volno, 
    
    z:
    XDXXXX
    XXXXXX
    XXXXXX
    XXXOXX
    XXXXXX
    
    do:
    XXXXXX
    XXXXXX
    XXXXXX
    XXXXDX
    
    neni mozne skocit:
    XXO
    XDX
    XXX
    
    ani dve figurky za sebou:
    DXXX
    XOXX
    XXOX
    XXXX
    

Taktez v situaci kdy na jedne diagonale je dama a 2 souperovy figurky \[s dostatecnym mistem na skoceni te blizsi i vzdalenejsi], pak pokud chci skocit tu vzdalenejsi, musim nejprve skocit tu blizsi a pak az tu vzdalenejsi. \[Coz o trochu to zeslabuje vrazednou silu damy]. Preskocenim se figurka okamzite odstranuje z hraci plochy.  
  
Ukolem je vratit maximalni mozny pocet sebranych figurek + cestu, jakou proto musi dama absolvovat.  
Jak bylo receno, mame prave jeden tah.  
Tedy pro pripad:

    XXXXX
    XOXOX
    XXXXX
    XXDXX
    XXXXX
    

nesebereme nic.  
-----------------  
Ukolem bylo udelat GUI - reprezentujici hraci plochu, ve kterem muzeme naklikat pozice kamenu a damy.  
\[Bylo presne zadano, ze leve mysitko->kamen/volno, prave mystiko->dama/volno. Dale zajisteni ze dama bude prave jedna].  
Tlacitko Prepocitej, ktere overilo ze herni plocha obsahuje damu a vyhodilo v message dialogu vysledek.  
Horni menu umoznujici Konec a Restart.  
  
Oblibeny testovaci vstup byl:

    OXXXXXXXXX
    XXXXXXXXXX
    XXOXXXXXXX
    XXXXXXXXXX
    XXXXOXXXXX
    XXXXXXXXXX
    XXXXXXOXXX
    XXXXXXXXXX
    XXXXXXXXXX
    XXXXXXXXXD
    

Co povazuju za vhodne pouzit u teto ulohy\[postrehy me a kamaradu]:  
Hraci policko jako tlacitko jemuz menim Text .  
100 hracich tlacitek generovat ve for cyklu, ukladat do pole, vsem nastavit stejny listener \[ktery na zaklade Name tlacitka provede spravnou akci].  
Pro generovani tahu nepsat nepatrne odlisny kod pro smery 1,3,7,9 \[viz. numpad] ale udelat 3 for cykly:

     for( int i=-1; i<=1; i+=2 )	//for i in {-1, 1}	
    for( int j=-1; j<=1; j+=2 )	//for j in {-1, 1}
        for( x=x0 + i, y=y0 + j; 0<=x && x<VYSKA && 0<=y && y<SIRKA; x = x + i, y= y + j) { //x0,y0 je pozice damy
    ....}

	  
  
Zaver \[jez doufam poslouzi jako odstrasujici priklad]:  
Prisel jsem po jednom dni pripravy. Prvni setkani se Swingem.   
Naprasil 360 radek kodu, o kterem uz ted vim ze jde minimalne o 150 zkratit.  
Odchazel jako posledni po prodlouzeni \[30 min?]. p.Knapa jsem se ptal a 60-70% z nas nedalo.  
GUI chodilo jak melo, program pri nalezeni reseni vracel spatnou strukturu a umiral... jeho posledni slova byla NullPointerException
<{/ForumPost}>

<{ForumPost(poster="Control", timestamp=2009-02-07 17:56:30)}>
[http://img83.imageshack.us/img83/9199/zapocetbg1.th.png](http://img83.imageshack.us/my.php?image=zapocetbg1.png)
<{/ForumPost}>

<{ForumPost(poster="Ellrohir", timestamp=2009-02-07 20:09:01)}>
sakra eště že se mi povedle na poslední chvíli dát hledání min...tohle bych asi nedal taky  :shock:
<{/ForumPost}>

<{ForumPost(poster="Donarus", timestamp=2009-02-08 15:47:28)}>
nekde jsem delal chybýu v rekurzi ... A jak to dopadlo asi vsici tusite
<{/ForumPost}>

<{ForumPost(poster="Ellrohir", timestamp=2009-02-09 00:06:09)}>
tak tomu říkám slušně zabitej den  :shock:  pitty for u  :oops:
<{/ForumPost}>

