ˇ e vysok´e uˇcen´ı technick´e v Praze Cesk´ Fakulta elektrotechnick´a
Bakal´aˇrsk´a pr´ace
Vektorov´ y editor pro tvorbu taktick´ ych sch´ emat v basketbalu Zdenˇek Papeˇz
Vedouc´ı pr´ace: Ing. Zdenˇek M´ıkovec, Ph.D.
Studijn´ı program: Elektrotechnika a informatika strukturovan´y bakal´aˇrsk´y Obor: Informatika a v´ypoˇcetn´ı technika kvˇeten 2008
ii
Podˇ ekov´ an´ı Za poskytnut´ı cenn´ych rad a informac´ı pˇri ˇreˇsen´ı bakal´aˇrsk´e pr´ace, za podnˇetn´e pˇripom´ınky a ˇcas vˇenovan´y pˇri konzultac´ıch dˇekuji vedouc´ımu pr´ace panu Ing. Zdeˇ nku ˇ M´ıkovcovi, Ph.D. z katedry poˇc´ıtaˇc˚ u FEL CVUT. Dˇekuji tak´e tren´er˚ um, kteˇr´ı se z´ uˇcastnili uˇzivatelsk´ych konzultac´ı a test˚ u, za jejich postˇrehy z praxe. iii
iv
Prohl´ aˇsen´ı Prohlaˇsuji, ˇze jsem svou bakal´aˇrskou pr´aci vypracoval samostatnˇe a pouˇzil jsem pouze podklady uveden´e v pˇriloˇzen´em seznamu. Nem´am z´avaˇzn´y d˚ uvod proti uˇzit´ı tohoto ˇskoln´ıho d´ıla ve smyslu §60 Z´akona ˇc. 121/2000 Sb., o pr´avu autorsk´em, o pr´avech souvisej´ıc´ıch s pr´avem autorsk´ym a o zmˇenˇe nˇekter´ych z´akon˚ u (autorsk´y z´akon).
V Praze dne
.............................................................
v
vi
Abstract The work describes design and implementation of a graphic editor for drawing basketball tactical schemes. The design is oriented on a purposeful and easy-accessible user interface that is affected by the basketball specialities. The application itself is implemented in Java using Swing components and other basic libraries.
Abstrakt Pr´ace popisuje n´avrh a implementaci grafick´eho editoru pro tvorbu taktick´ych basketbalov´ych sch´emat. V n´avrhov´e ˇc´asti je kladen d˚ uraz na jednoduchost a funkˇcnost uˇzivatelsk´eho rozhran´ı, kter´e je pˇrizp˚ usobeno specifick´ym basketbalov´ym poˇzadavk˚ um. V´ysledn´a aplikace je implementov´ana v jazyce Java s vyuˇzit´ım Swing komponent a dalˇs´ıch z´akladn´ıch knihoven.
vii
viii
Obsah Seznam obr´ azk˚ u
xiii
Seznam tabulek
xv
´ 1 Uvod 1.1 Motivace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Pouˇz´ıvan´e term´ıny . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 1 1
2 Popis probl´ emu ˇ 2.1 Clovˇek, grafick´a sch´emata a vizualizace 2.2 Vizualizace a sch´emata ve sportu . . . 2.3 Basketbalov´a sch´emata . . . . . . . . . 2.3.1 Zp˚ usob zn´azorˇ nov´an´ı . . . . . . 2.3.2 Konvence pouˇz´ıvan´ych symbol˚ u 2.3.3 Souˇcasn´a praxe . . . . . . . . .
3 3 3 3 3 3 5
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
3 Anal´ yza a n´ avrh ˇ reˇ sen´ı 3.1 V´yhody a pˇr´ınos specializovan´eho grafick´eho editoru . . . . . . . . . . . . 3.2 Poˇzadavky na grafick´y editor . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 Anal´yza struktury sch´ematu . . . . . . . . . . . . . . . . . . . . . . . . . 3.4 Sn´ımek jako orientovan´y graf . . . . . . . . . . . . . . . . . . . . . . . . . 3.5 Kreslen´ı kˇrivek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6 Popis entit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6.1 Akce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6.2 Sn´ımek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6.3 Hr´aˇc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ´ cn´ık . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6.4 Utoˇ 3.6.5 Obr´ance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6.6 Pˇrihr´avka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6.7 Pohybov´a kˇrivka . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6.8 Kˇrivka pohybu bez m´ıˇce . . . . . . . . . . . . . . . . . . . . . . . 3.6.9 Kˇrivka driblinku . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6.10 Kˇrivka clony . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.7 Anal´yza a n´avrh uˇzivatelsk´eho rozhran´ı . . . . . . . . . . . . . . . . . . . ´ 3.7.1 Uvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.7.2 Standardn´ı panely grafick´eho editoru . . . . . . . . . . . . . . . . 3.7.3 Specifick´e panely grafick´eho editoru . . . . . . . . . . . . . . . . . 3.7.4 Anal´yza moˇzn´ych ˇreˇsen´ı kresl´ıc´ı plochy v kombinaci s ˇcasovou osou 3.7.5 V´ybˇer ˇreˇsen´ı pracovn´ı plochy v kombinaci s ˇcasovou osou . . . . .
7 7 7 7 8 8 8 8 8 9 9 9 9 9 10 10 10 10 10 10 10 11 12
4 Implementace 4.1 Z´akladn´ı koncepce 4.2 Struktura grafu . . 4.3 Tˇr´ıdy uˇzivatelsk´eho 4.4 Tˇr´ıdy ˇc´ast´ı model a
13 13 13 13 14
. . . . . . . . . . rozhran´ı view . .
. . . .
. . . .
. . . .
. . . . ix
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
4.5 4.6 4.7
Uloˇzen´ı a otevˇren´ı sch´ematu . . . . . Export sch´ematu . . . . . . . . . . . Kreslen´ı kˇrivek . . . . . . . . . . . . 4.7.1 B´ezierovy kˇrivky . . . . . . . 4.7.2 Kvadratick´e B´ezierovy kˇrivky 4.7.3 Kubick´e B´ezierovy kˇrivky . . 4.7.4 Podpora maticov´ych operac´ı .
. . . . . . .
14 14 15 15 15 15 16
5 Testov´ an´ı 5.1 Zp˚ usob testov´an´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Pr˚ ubˇeh testu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3 Vyhodnocen´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17 17 17 18
6 Z´ avˇ er
19
7 Literatura
21
A Seznam pouˇ zit´ ych term´ın˚ u a zkratek A.1 Pouˇzit´e term´ıny . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.2 Pouˇzit´e zkratky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23 23 23
B UML diagramy
25
C Uˇ zivatelsk´ a pˇ r´ıruˇ cka C.1 Instalace . . . . . . . . . . . . . . . . . C.2 Spuˇstˇen´ı programu . . . . . . . . . . . C.3 Hlavn´ı okno . . . . . . . . . . . . . . . C.4 Editace sn´ımku . . . . . . . . . . . . . C.4.1 Pˇrid´an´ı u ´ toˇcn´ıka . . . . . . . . C.4.2 Pˇrid´an´ı obr´ance . . . . . . . . . C.4.3 Pˇresun hr´aˇce . . . . . . . . . . C.4.4 Pˇrid´an´ı pˇrihr´avky . . . . . . . . C.4.5 Pˇrid´an´ı pohybu bez m´ıˇce . . . . C.4.6 Pˇrid´an´ı driblinku . . . . . . . . C.4.7 Pˇrid´an´ı clony . . . . . . . . . . C.4.8 M´ıˇc v drˇzen´ı . . . . . . . . . . . C.4.9 Stˇrela . . . . . . . . . . . . . . C.4.10 Oznaˇcen´ı hr´aˇcsk´e pozice . . . . C.4.11 Smaz´an´ı hr´aˇce . . . . . . . . . . C.4.12 Smaz´an´ı kˇrivky . . . . . . . . . C.4.13 Editace kˇrivky . . . . . . . . . . C.4.14 Natoˇcen´ı obr´ance . . . . . . . . C.5 Pˇrid´an´ı sn´ımku . . . . . . . . . . . . . C.6 Odebr´an´ı sn´ımku . . . . . . . . . . . . C.7 V´ybˇer aktu´aln´ıho sn´ımku . . . . . . . . C.8 Uloˇzen´ı akce . . . . . . . . . . . . . . . C.9 Otevˇren´ı uloˇzen´e akce . . . . . . . . . . C.10 Uloˇzit sn´ımky jako obr´azky (exportovat
29 29 29 29 29 29 30 30 30 31 31 31 31 31 31 32 32 32 32 32 33 33 33 33 34
x
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . akci) .
. . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
D Uk´ azky v´ ystupu programu
35
E Obsah pˇ riloˇ zen´ eho CD
37
xi
xii
Seznam obr´ azk˚ u 2.1 2.2 2.3 2.4
Zn´azornˇen´ı hr´aˇc˚ u . . . . . . . . . . . . . . . Zn´azornˇen´ı pˇrihr´avky a stˇrely . . . . . . . . Zn´azornˇen´ı pohybu hr´aˇce . . . . . . . . . . . Uk´azka cel´eho sch´ematu kreslen´eho od ruky
. . . .
4 4 4 5
3.1 3.2
Rozvrˇzen´ı tˇr´ı pracovn´ıch ploch a vztahy mezi nimi . . . . . . . . . . . . . Rozvrˇzen´ı s jednou pracovn´ı plochou . . . . . . . . . . . . . . . . . . . .
11 12
B.1 B.2 B.3 B.4
Use case diagram tren´era . . . . . . Use case diagram . . . . . . . . . . Stavov´y diagram objektu ve sn´ımku Diagram tˇr´ıd . . . . . . . . . . . .
. . . .
25 26 27 28
C.1 Hlavn´ı okno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.2 Dialog pro uloˇzen´ı sn´ımk˚ u ve formˇe obr´azk˚ u . . . . . . . . . . . . . . . .
30 33
D.1 D.2 D.3
35 36 36
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
Jednoduch´a u ´ toˇcn´a akce . . . . . . . . . . . . . . . . . . . . . . . . . . . Pˇrekon´an´ı n´atlakov´e obrany . . . . . . . . . . . . . . . . . . . . . . . . . ´ Utok proti z´onov´e obranˇe . . . . . . . . . . . . . . . . . . . . . . . . . . .
xiii
xiv
Seznam tabulek 5.1
Testovan´e osoby . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
xv
17
xvi
´ KAPITOLA 1. UVOD
1
´ 1 Uvod Tato bakal´aˇrsk´a pr´ace popisuje n´avrh a implementaci grafick´eho editoru specializovan´eho na tvorbu taktick´ych basketbalov´ych sch´emat, kter´a pouˇz´ıvaj´ı tren´eˇri k popisu hern´ıch strategi´ı a tr´eninkov´ych cviˇcen´ı. V prvn´ı ˇc´asti se pr´ace zab´yv´a rozborem probl´emu a nˇekter´ymi specifiky spojen´ymi s basketbalov´ymi sch´ematy. Pˇri anal´yze a n´avrhu ˇreˇsen´ı je kladen d˚ uraz na uˇzivatelsk´e rozhran´ı, jeho pˇrehlednost a funkˇcnost. O z´avˇery z analytick´e ˇc´asti, podpoˇren´e konzultacemi s tren´ery z praxe, se op´ır´a vlastn´ı implementace. Z´akladn´ı vlastnost´ı aplikace je nejen moˇznost sch´emata vytv´aˇret, ukl´adat a naˇc´ıtat, ale tak´e je exportovat. Exportem je myˇsleno vytvoˇren´ı v´ystup˚ u z programu, kter´e budou vhodn´e pro prezentaˇcn´ı u ´ˇcely. Nab´ızej´ı se napˇr´ıklad r˚ uzn´e rozˇs´ıˇren´e form´aty obr´azk˚ u nebo soubor PDF. Pˇri vypracov´an´ı pr´ace byly pouˇzity n´asleduj´ıc´ı volnˇe ˇsiˇriteln´e programy: • v´yvojov´e prostˇred´ı NetBeans IDE, verze 5.5.1 a 6.0.1; • LATEXeditor Texmaker 1.6. UML diagramy jsou vytvoˇreny pomoc´ı Visual Paradigm for UML Standard Edition, verze ˇ 6.2 v licenci pro studenty CVUT.
1.1
Motivace
Moj´ı motivac´ı pro vytvoˇren´ı t´eto pr´ace je dlouholet´ y vztah k basketbalu. V basketbalov´em prostˇred´ı se pohybuji jiˇz od m´eho ml´ad´ı, protoˇze jak m˚ uj otec, tak i starˇs´ı bratr se sportu vˇenovali. J´a s´am z´avodnˇe hraji od jeden´acti let. Ze sportovn´ıho prostˇred´ı je mnoho m´ych zn´am´ych a kamar´ad˚ u, jak z ˇrad hr´aˇc˚ u, tak tren´er˚ u. Pr´avˇe na z´akladˇe tˇechto vztah˚ u vzniklo t´ema pro tuto pr´aci. V´ysledkem vˇsech tˇechto fakt˚ u a m´e znalosti prostˇred´ı byl n´amˇet na vytvoˇren´ı grafick´eho editoru pro sch´ematick´e zn´azornˇen´ı basketbalov´ych strategi´ı a cviˇcen´ı, kter´y by ulehˇcil pr´aci basketbalov´ym tren´er˚ um.
1.2
Pouˇ z´ıvan´ e term´ıny
V n´asleduj´ıc´ı pr´aci jsou ˇcasto pouˇz´ıv´any nˇekter´e sportovn´ı term´ıny, kter´e nemusej´ı b´yt ˇcten´aˇri zn´amy. Nav´ıc jsou pouˇz´ıv´any v r˚ uzn´ych vz´ajemn´ych vazb´ach, kde by mohly jeˇstˇe v´ıce sn´ıˇzit pochopitelnost popisovan´e problematiky. Seznam tˇechto term´ın˚ u s jejich kr´atk´ym vysvˇetlen´ım je uveden v dodatku A.1.
2
´ KAPITOLA 1. UVOD
´ KAPITOLA 2. POPIS PROBLEMU
3
2 Popis probl´ emu 2.1
ˇ Clovˇ ek, grafick´ a sch´ emata a vizualizace
ˇ ek v dneˇsn´ı dobˇe je tvor, kter´y potˇrebuje ve velk´em m´ıˇre komunikovat, a to r˚ Clovˇ uzn´ymi zp˚ usoby. Pro ˇclovˇeka je podstatn´e si komunikaci co nejv´ıce zjednoduˇsit a zefektivnit. Jedn´ım ze zp˚ usob˚ u, jak ji dobˇre zefektivnit, je nahrazen´ı mluven´eho ˇci psan´eho slova r˚ uzn´ymi obr´azky, n´aˇcrtky a sch´ematy. Tento zp˚ usob komunikace je v mnoh´ych situac´ıch pˇrehlednˇejˇs´ı, v´ystiˇznˇejˇs´ı a rychleji pochopiteln´y. Vˇetˇsina lid´ı si vˇeci mnohem snadnˇeji zapamatuje, pokud je maj´ı spojen´e s vizu´aln´ım vjemem. Uveden´e argumenty jsou jedn´ım z hlavn´ıch d˚ uvod˚ u, proˇc v posledn´ı dobˇe roste popularita graficky zamˇeˇren´ych aplikac´ı, kter´e usnadˇ nuj´ı tvorbu a n´avrh takov´ychto sch´emat.
2.2
Vizualizace a sch´ emata ve sportu
Tak´e ve sportu se sch´emata s oblibou pouˇz´ıvaj´ı, a to pˇredevˇs´ım pro svoji v´ystiˇznost a rychlost, s jakou se daj´ı tvoˇrit. T´emˇeˇr v kaˇzd´em sportu existuje sch´ematick´y zp˚ usob, jak jednoduˇse vizualizovat strategii t´ymu a pl´anovat postaven´ı hr´aˇc˚ u. Vyuˇz´ıvaj´ı jej pˇredevˇs´ım tren´eˇri, jak pˇri zn´azorˇ nov´an´ı z´apasov´ych situac´ı a strategi´ı, tak i pro pˇr´ıpravu tr´eninkov´ych cviˇcen´ı. Vizu´aln´ı sch´ema je pro hr´aˇce pochopitelnˇejˇs´ı. Oproti slovn´ımu vysvˇetlen´ı tren´erem sch´ema minimalizuje nejednoznaˇcnosti a moˇznost nedorozumˇen´ı ˇci ˇspatn´eho pochopen´ı cel´eho sdˇelen´ı.
2.3 2.3.1
Basketbalov´ a sch´ emata Zp˚ usob zn´ azorˇ nov´ an´ı
Basketbalov´a sch´emata maj´ı za c´ıl zachytit v´yvoj pohybu hr´aˇc˚ u, jejich postaven´ı a vz´ajemnou spolupr´aci, bˇehem jedn´e napl´anovan´e akce. Protoˇze cel´e zobrazovan´e strategie ˇci cviˇcen´ı mohou b´yt dosti rozs´ahl´e a skl´adat se z mnoha pohyb˚ u, je obvykl´e celou akci rozkreslovat do nˇekolika jednoduˇsˇs´ıch f´az´ı, sn´ımk˚ u. Hlavn´ım d˚ uvodem je pˇredevˇs´ım pˇrehlednost, ale tak´e logick´e rozf´azov´an´ı akce na ˇcinnosti, kter´e mus´ı prob´ıhat z´aroveˇ n. Kaˇzd´a f´aze je pak kreslena jako samostatn´y obr´azek, kter´y je pˇr´ıpadnˇe doplnˇen kr´atk´ym koment´aˇrem. 2.3.2
Konvence pouˇ z´ıvan´ ych symbol˚ u
Sch´ematick´e zn´azornˇen´ı m´a za u ´ kol komunikaci zjednoduˇsit a urychlit, ale existuje probl´em s nutn´ym zaveden´ım konvence, kterou mus´ı ˇcten´aˇr“ zn´at a rozumˇet j´ı. Neji” nak je tomu u sch´emat basketbalov´ych. Budeme se drˇzet zaveden´e konvence tak, jak je pouˇz´ıv´ana v odborn´e tren´ersk´e literatuˇre. Vych´az´ıme napˇr´ıklad z knih [9] nebo [15], pˇrestoˇze uveden´a literatura pouˇz´ıv´a americkou konvenci, drobnˇe odliˇsnou od evropsk´e. Tato pr´ace bude pouˇz´ıvat evropskou variantu, kter´a je n´asleduj´ıc´ı: ´ cn´ık (Obr´azek 2.1(a)) - urˇcuje postaven´ı u • Utoˇ ´ toˇcn´ıka. ´ cn´ık s m´ıˇ • Utoˇ cem (Obr´azek 2.1(b)) - urˇcuje postaven´ı u ´ toˇcn´ıka, kter´ y m´a v drˇzen´ı m´ıˇc.
´ KAPITOLA 2. POPIS PROBLEMU
4
2 ´ cn´ık (a) Utoˇ
´ cn´ık s m´ıˇcem (b) Utoˇ
(c) Obr´ance
(d) Hr´aˇcsk´ y post
Obr´azek 2.1: Zn´azornˇen´ı hr´aˇc˚ u
(a) Pˇrihr´ avka
(b) Stˇrela
Obr´azek 2.2: Zn´azornˇen´ı pˇrihr´avky a stˇrely
• Obr´ ance (Obr´azek 2.1(c)) - urˇcuje postaven´ı obr´ance. • Oznaˇ cen´ı hr´ aˇ csk´ eho postu (Obr´azek 2.1(d)) - ˇcasto se pro jeˇstˇe vˇetˇs´ı pˇrehlednost pouˇz´ıv´a oznaˇcen´ı hr´aˇce ˇc´ıslem, kter´e vyjadˇruje jeho hr´aˇcsk´y post a umoˇzn ˇ uje l´epe sledovat pohyb hr´aˇce v r´amci strategie. • Pˇ rihr´ avka (Obr´azek 2.2(a)) - u ´ seˇcka zn´azorˇ nuj´ıc´ı pˇrihr´avku jednoho u ´ toˇcn´ıka jin´emu. • Stˇ rela (Obr´azek 2.2(b)) - kr´atk´a ˇsipka od u ´ toˇcn´ıka smˇerem na koˇs, kter´a vyznaˇcuje stˇreleck´e zakonˇcen´ı. • Pohyb obr´ ance nebo u ´toˇ cn´ıka bez m´ıˇ ce (pohyb) (Obr´azek 2.3(a)) - kˇrivka definuj´ıc´ı trajektorii pohybu hr´aˇce bez m´ıˇce. • Pohyb hr´ aˇ ce s m´ıˇ cem (driblink ) (Obr´azek 2.3(b)) - kˇrivka definuj´ıc´ı trajektorii pohybu u ´ toˇcn´ıka s m´ıˇcem. • Pohyb pro postaven´ı clony (clona) (Obr´azek 2.3(c)) - kˇrivka definuj´ıc´ı trajektorii pohybu u ´ toˇcn´ıka za u ´ˇcelem postaven´ı clony pro spoluhr´aˇce.
(a) Pohyb bez m´ıˇce
(b) Pohyb s m´ıˇcem
(c) Pohyb pro postaven´ı clony
Obr´azek 2.3: Zn´azornˇen´ı pohybu hr´aˇce
´ KAPITOLA 2. POPIS PROBLEMU
5
Obr´azek 2.4: Uk´azka cel´eho sch´ematu kreslen´eho od ruky
2.3.3
Souˇ casn´ a praxe
Nejˇcastˇeji je vyuˇzit´ı sch´emat ve sportu k vidˇen´ı o oddechov´ych ˇcasech, kdy tren´eˇri potˇrebuj´ı v rychlosti sdˇelit druˇzstvu strategii nebo zd˚ uraznit postaven´ı hr´aˇc˚ u. V t´eto situaci v ˇcasov´e t´ısni tren´eˇri pouˇz´ıvaj´ı ot´ıratelnou tabulku s fixem a kresl´ı rukou. Mimo z´apasov´e situace ale rovnˇeˇz existuje potˇreba sch´emata tvoˇrit. Mimo z´apasy tren´eˇri pˇripravuj´ı pro t´ym nov´e strategie pro vyuˇzit´ı v z´apase ale i nov´a tr´eninkov´a cviˇcen´ı, kter´a potˇrebuj´ı hr´aˇc˚ um pˇredloˇzit. Pro tuto pˇr´ıpravu se v souˇcasn´e dobˇe st´ale nejˇcastˇeji pouˇz´ıvaj´ı sch´emata kreslen´a ruˇcnˇe (viz Obr´azek 2.4), pˇrestoˇze nen´ı potˇreba vˇse navrhnout v rychlosti jako bˇehem z´apasu. D˚ uraz je naopak sp´ıˇse kladen na peˇclivost a pˇresnost n´avrhu, coˇz hovoˇr´ı pro pouˇzit´ı poˇc´ıtaˇcovˇe pˇripraven´e podoby sch´ematu. V souˇcasn´e dobˇe existuje jen minimum grafick´ych aplikac´ı specializovan´ych na n´avrh sch´emat pro basketbal a pˇr´ıstup ke vˇetˇsinˇe z nich je omezen´y. Jedna z aplikac´ı je napˇr´ıklad pˇr´ıstupn´a na internetov´e str´ance basketbalov´e asociace FIBA1 . Pˇr´ıstup k n´ı je ovˇsem pouze online ve flashov´e aplikaci a je omezen registrac´ı uˇzivatele na serveru federace. Mezi dalˇs´ı programy, kter´e jsem mˇel moˇznost vyzkouˇset patˇr´ı Jes-Soft2 a Basketball Blueprint3 . Tyto aplikace jsou placen´ym produktem. Jejich koncepce je ponˇekud odliˇsn´a, protoˇze vedle jednoduch´e editace se zamˇeˇruj´ı i na n´asledn´e rozpohybov´an´ı sch´ematu v animaci. Dle m´eho n´azoru byly tyto f´aze v obou pˇr´ıpadech dosti obt´ıˇzn´e na ovl´ad´an´ı.
1
http://coaching.fibaeurope.com http://www.jes-soft.com/ 3 http://www.basketballblueprint.com 2
6
´ KAPITOLA 2. POPIS PROBLEMU
´ ´ ˇ SEN ˇ ´I KAPITOLA 3. ANALYZA A NAVRH RE
7
3 Anal´ yza a n´ avrh ˇ reˇsen´ı 3.1
V´ yhody a pˇ r´ınos specializovan´ eho grafick´ eho editoru
ˇ Casto sch´emata kresl´ı tren´eˇri v rychlosti pˇri oddechov´em ˇcase ˇci pˇrest´avk´ach v pr˚ ubˇehu utk´an´ı. Pro tyto u ´ˇcely pod ˇcasov´ym tlakem je jednoznaˇcnˇe nejvhodnˇejˇs´ı pouˇzit´ı ot´ırateln´e tabulky. Aplikace si neklade za c´ıl nahradit tuto jednoduchou, provˇeˇrenou a s oblibou pouˇz´ıvanou metodu, ale m´a za c´ıl usnadnit tvorbu sch´emat v elektronick´e podobˇe, pˇri dom´ac´ı pˇr´ıpravˇe tren´er˚ u (viz pˇr´ıpad uˇzit´ı B.1). Pro navrhov´an´ı v elektronick´e formˇe hovoˇr´ı dalˇs´ı poˇzadavky, kter´ym m˚ uˇze aplikace oproti n´avrhu od ruky vyhovˇet. Pˇripraven´a sch´emata mohou b´yt pˇredloˇzena vˇsem hr´aˇc˚ um t´ymu bez nutnosti vytv´aˇret xeroxov´e kopie obr´azk˚ u kreslen´ych od ruky. Elektronick´a podoba nav´ıc umoˇzn ˇ uje tren´er˚ um l´epe si situace archivovat a udrˇzovat si v nich pˇrehled. Vytvoˇren´ı sch´ematu v elektronick´e podobˇe ale nen´ı trivi´aln´ı z´aleˇzitost´ı. V obr´azku se vyuˇz´ıvaj´ı r˚ uzn´e tvary objekt˚ u a r˚ uzn´e typy ˇcar (viz 2.3.2). Pˇri kreslen´ı na poˇc´ıtaˇci nem´a velk´y smysl uvaˇzovat o bitmapov´em kreslen´ı od ruky“. Sch´ema by bylo velice ” nepˇresn´e a mˇelo by nejsp´ıˇse jeˇstˇe horˇs´ı kvalitu, neˇz sch´ema nakreslen´e tuˇzkou na pap´ır. Lepˇs´ı je tak jednoznaˇcnˇe pouˇzit´ı editoru na vektorov´em principu, kde bychom vyuˇzili pˇreddefinovan´ych tvar˚ u, ze kter´ych by se sch´ema vz´ajemn´ym propojov´an´ım skl´adalo. Je zde ale probl´em specifick´ych tvar˚ u a kˇrivek, kter´e se v basketbale pouˇz´ıvaj´ı a kter´e nejsou snad v ˇz´adn´em snadno dostupn´em editoru. Jelikoˇz jsou tren´eˇri pˇrev´aˇznˇe klasick´ymi uˇzivateli poˇc´ıtaˇce, nikoliv grafick´ymi specialisty, nen´ı pro nˇe jednoduch´e se do podobn´eho n´avrhu na poˇc´ıtaˇci pustit. Specializovan´y grafick´y editor pro basketbal by mˇel elektronickou tvorbu sch´emat co nejv´ıce usnadnit a zpˇr´ıstupnit obyˇcejn´ym uˇzivatel˚ um, tren´er˚ um.
3.2
Poˇ zadavky na grafick´ y editor
Z rozbor˚ u uveden´ych v´yˇse vypl´yv´a nˇekolik souhrnn´ych poˇzadavk˚ u na z´akladn´ı vlastnosti aplikace. Za prv´e by mˇela b´yt aplikace a jej´ı ovl´ad´an´ı snadno pochopiteln´e a pˇr´ıstupn´e obyˇcejn´ym uˇzivatel˚ um. Editor by mˇel v maxim´aln´ı m´ıˇre zjednoduˇsit kreslen´ı z´akladn´ıch objekt˚ u, tvar˚ u a kˇrivek, pouˇz´ıvan´ych v basketbalov´ ych sch´ematech, ale z´aroveˇ n mus´ı dodrˇzet pouˇz´ıvanou konvenci. Nav´ıc by mˇel editor pˇrehlednˇe umoˇznit rozkreslen´ı cel´e akce na jej´ı jednotliv´e f´aze. F´aze mus´ı b´yt ˇrazeny do seznamu a dohromady tvoˇrit celou strategii. Aplikace by mˇela umoˇzn ˇ ovat nejen samotnou editaci sch´emat, ale tak´e jejich ukl´ad´an´ı a naˇc´ıt´an´ı ze souboru. Je myˇslen soubor, ve kter´em bude uloˇzena cel´a struktura akce vˇcetnˇe jej´ıch f´az´ı. Nav´ıc je tak´e potˇreba, aby editor umoˇzn ˇoval snadn´e prezentov´an´ı vytvoˇren´e strategie. Jako nejlepˇs´ı v´ystup pro koneˇcn´e prezentov´an´ı akce se jev´ı soubory klasick´ych grafick´ych form´at˚ u (bitmapov´ych nebo vektorov´ych) nebo soubor PDF.
3.3
Anal´ yza struktury sch´ ematu
Pokud se pod´ıv´ame na strukturu cel´eho sch´ematu akce, je moˇzn´e jej rozdˇelit hned v nˇekolika u ´ rovn´ıch na menˇs´ı celky. Jak jiˇz bylo ˇreˇceno, cel´e sch´ema akce se skl´ad´a z jednotliv´ych sn´ımk˚ u. Jednotliv´e sn´ımky vystihuj´ı postaven´ı hr´aˇc˚ u a nˇekolik jejich ˇcinnost´ı
´ ´ ˇ SEN ˇ ´I KAPITOLA 3. ANALYZA A NAVRH RE
8
v dan´em okamˇziku (pˇrihr´avka, bˇeh, stˇrela). Sn´ımky chronologicky v ˇradˇe za sebou pot´e popisuj´ı akci jako rozf´azovan´y celek. Na jednotliv´ych sn´ımc´ıch se vyskytuje nˇekolik objekt˚ u. Objekty lze rozdˇelit do dvou skupin: na tvary zn´azorˇ nuj´ıc´ı hr´aˇce a na kˇrivky, kter´e hr´aˇce spojuj´ı. Nab´ız´ı se tedy pohl´ıˇzet na sch´ema jako na graf. Jelikoˇz kˇrivky maj´ı formu ˇsipek, jedn´a se tedy o graf ´ cn´ıci a obr´anci budou vystupovat jako uzly grafu a kˇrivky (pˇrihr´avka, orientovan´y. Utoˇ pohyb, ...) budou orientovan´ymi hranami. Idea orientovan´eho grafu bude hlavn´ı kostrou pˇri n´avrhu jednotliv´ych objektov´ych tˇr´ıd a jejich implementaci.
3.4
Sn´ımek jako orientovan´ y graf
Kreslen´ı sn´ımku bude nejv´ıce ulehˇceno pr´avˇe zaveden´ım pˇr´ıstupu obdobn´eho jako u orientovan´eho grafu. Uzly grafu jsou reprezentov´any hr´aˇci a hrany pˇrihr´avkami a pohybov´ymi kˇrivkami. Oproti orientovan´emu grafu existuj´ı dva hlavn´ı rozd´ıly. Za prv´e je zvykem na konci pohybov´e kˇrivky hr´aˇce nevykreslovat. Pˇresto ale v tomto bodˇe hr´aˇc virtu´alnˇe stoj´ı a m˚ uˇze z nˇej pˇrihr´avat ˇci konat dalˇs´ı pohyb. Aplikace proto bude i k tomuto bodu pˇristupovat jako k hr´aˇci, neboli jako k uzlu grafu. Druhou odliˇsnost´ı od grafu je, ˇze hrany nejsou jen u ´ seˇckami, ale mohou b´yt i kˇrivkami. V´yhoda koncepce grafu se nejv´ıce projev´ı, pokud bude potˇreba zmˇenit postaven´ı hr´aˇce (i virtu´aln´ıho), bude staˇcit jej pˇresunout a zmˇena se bude projevovat i na vˇsech pˇrihr´avk´ach a pohybov´ych kˇrivk´ach sv´azan´ych s dan´ym hr´aˇcem.
3.5
Kreslen´ı kˇ rivek
Pro sch´ema je velice d˚ uleˇzit´e pˇresn´e definov´an´ı kˇrivek, protoˇze urˇcuj´ı pohyb hr´aˇce. Nejvˇetˇs´ıho usnadnˇen´ı pˇri kreslen´ı kˇrivek bude dosaˇzeno, pokud bude uˇzivatelem pouze nadefinov´ano nˇekolik bod˚ u, kter´ymi m´a kˇrivka proch´azet. Aplikace n´aslednˇe body interpoluje a vykresl´ı v´yslednou kˇrivku.
3.6
Popis entit
Cel´a logika a struktura strategie a sn´ımku vede na n´asleduj´ıc´ı popis entit. 3.6.1
Akce
• m´a n´azev • skl´ad´a se z nˇekolika za sebe ˇrazen´ych sn´ımk˚ u 3.6.2
Sn´ımek
• m´a poˇradov´e ˇc´ıslo • m´a struˇcn´y textov´y popisek • obsahuje hr´aˇce a pohybov´e kˇrivky mezi nimi
´ ´ ˇ SEN ˇ ´I KAPITOLA 3. ANALYZA A NAVRH RE 3.6.3
9
Hr´ aˇ c
• m´a souˇradnice x a y • m˚ uˇze m´ıt popis sv´eho hr´aˇcsk´eho postu (ˇc´ıslo postu nebo jeho zkratka) • mohou v jeho m´ıstˇe zaˇc´ınat a konˇcit pohybov´e kˇrivky 3.6.4
´ cn´ık Utoˇ
• je hr´aˇc • m˚ uˇze m´ıt v drˇzen´ı m´ıˇc • m˚ uˇze stˇr´ılet • mouhou v jeho m´ıstˇe zaˇc´ınat a konˇcit pˇrihr´avky • pohybov´e kˇrivky, kter´e u dan´eho u ´ toˇcn´ıka zaˇc´ınaj´ı, mohou b´yt kˇrivky pohybu bez m´ıˇce, driblinku a clony • pohybov´e kˇrivky, kter´e u dan´eho u ´ toˇcn´ıka konˇc´ı, mohou b´yt kˇrivky pohybu bez m´ıˇce, driblinku a clony 3.6.5
Obr´ ance
• je hr´aˇc • pohybov´e kˇrivky, kter´e u dan´eho obr´ance zaˇc´ınaj´ı, mohou b´yt pouze kˇrivky pohybu bez m´ıˇce • pohybov´e kˇrivky, kter´e u dan´eho obr´ance konˇc´ı, mohou b´yt pouze kˇrivky pohybu bez m´ıˇce 3.6.6
Pˇ rihr´ avka
• je orientovan´a u ´ seˇcka • poˇc´ateˇcn´ım bodem je u ´ toˇcn´ık • koncov´ym bodem je u ´ toˇcn´ık 3.6.7
Pohybov´ a kˇ rivka
• je orientovan´a kˇrivka • poˇc´ateˇcn´ım bodem je hr´aˇc • koncov´ym bodem je hr´aˇc • m´a seznam bod˚ u, kter´ymi proch´az´ı
´ ´ ˇ SEN ˇ ´I KAPITOLA 3. ANALYZA A NAVRH RE
10 3.6.8
Kˇ rivka pohybu bez m´ıˇ ce
• je pohybov´a kˇrivka 3.6.9
Kˇ rivka driblinku
• je pohybov´a kˇrivka • poˇc´ateˇcn´ım i koncov´ym bodem je u ´ toˇcn´ık 3.6.10
Kˇ rivka clony
• je pohybov´a kˇrivka • poˇc´ateˇcn´ım i koncov´ym bodem je u ´ toˇcn´ık
3.7 3.7.1
Anal´ yza a n´ avrh uˇ zivatelsk´ eho rozhran´ı ´ Uvod
Jelikoˇz se bude jednat o podobu grafick´eho editoru, bude rozvrˇzen´ı uˇzivatelsk´eho rozhran´ı inspirov´ano jin´ymi zn´am´ymi grafick´ymi editory. Uˇzivatelsk´e prostˇred´ı bude obsahovat tyto z´akladn´ı komponenty: kresl´ıc´ı plochu, panel n´astroj˚ u a panel pro editaci dalˇs´ıch vlastnost´ı. Kromˇe tˇechto standardn´ıch panel˚ u bude navrˇzen´y grafick´y editor vyˇzadovat nˇekter´e specifick´e panely. 3.7.2
Standardn´ı panely grafick´ eho editoru
• Kresl´ıc´ı plocha - Kresl´ıc´ı plocha bude hlavn´ım panelem v aplikaci. Na kresl´ıc´ı ploˇse bude uˇzivatel manipulovat s objekty (vkl´adat a editovat je) pomoc´ı n´astroje vybran´eho z panelu n´astroj˚ u. Jako pozad´ı kresl´ıc´ı plochy bude pouˇzit statick´y obr´azek basketbalov´eho hˇriˇstˇe. • Panel n´ astroj˚ u - V panelu n´astroj˚ u budou zobrazeny dostupn´e n´astroje pro vkl´ad´an´ı, editaci a propojov´an´ı objekt˚ u. • Panel pro editaci dalˇ s´ıch vlastnost´ı - V panelu bude moˇzn´e editovat n´azev cel´e akce a aktu´aln´ıho sn´ımku. Nav´ıc bude moˇzn´e doplnit ke sn´ımku kr´atk´y koment´aˇr. Pro koment´aˇr bude postaˇcuj´ıc´ı stroh´y text bez form´atov´an´ı. 3.7.3
Specifick´ e panely grafick´ eho editoru
ˇ • Casov´ a osa - Specifick´y doplˇ nuj´ıc´ı panel si vyˇzaduje kresl´ıc´ı plocha, protoˇze se oproti klasick´ym grafick´ym editor˚ um nebude editovat jen jeden obr´azek vytrˇzen´y z kontextu. P˚ ujde o editaci hned nˇekolika obr´azk˚ u, kter´e na sebe logicky navazuj´ı, tak jako napˇr´ıklad sn´ımky filmu. Je tedy tˇreba zaˇclenit ve spolupr´aci s kresl´ıc´ı plochou nˇejakou formu ˇcasov´e osy, kter´a bude chronologicky zobrazovat jiˇz hotov´e ˇ sn´ımky. Casov´ a osa m˚ uˇze b´yt orientov´ana vertik´alnˇe (shora dol˚ u) ˇci horizont´alnˇe (zleva doprava). Bylo by uˇziteˇcn´e, kdyby ˇcasov´a byla sloˇzena z n´ahled˚ u jiˇz hotov´ych sn´ımk˚ u pro snazˇs´ı orientaci.
´ ´ ˇ SEN ˇ ´I KAPITOLA 3. ANALYZA A NAVRH RE 3.7.4
11
Anal´ yza moˇ zn´ ych ˇ reˇ sen´ı kresl´ıc´ı plochy v kombinaci s ˇ casovou osou
Jak jiˇz bylo ˇreˇceno, jsou jednotliv´e editovan´e sn´ımky ˇcasovˇe seˇrazen´e a logicky na sebe navazuj´ı. Kaˇzd´y sn´ımek urˇcuje sv´ymi nadefinovan´ymi pohyby hr´aˇc˚ u, jak´e bude v´ychoz´ı postaven´ı hr´aˇc˚ u v dalˇs´ım sn´ımku. Existuje tedy mezi sn´ımky vazba jak na n´asleduj´ıc´ı sn´ımek (do budoucnosti), tak i na pˇredchoz´ı sn´ımek (do minulosti). Tyto vztahy je tˇreba uˇzivateli podat nˇejakou srozumitelnou formou. Nab´ız´ı se tato dvˇe ˇreˇsen´ı:
aktuální pĜedchozí
následujjící
Obr´azek 3.1: Rozvrˇzen´ı tˇr´ı pracovn´ıch ploch a vztahy mezi nimi
V´ıce pracovn´ıch ploch Prvn´ım ˇreˇsen´ım je nab´ıdnout uˇzivateli, aby vidˇel vedle sn´ımku, na kter´em aktu´alnˇe pracuje, tak´e jeho minulost“ nebo budoucnost“. Je tˇreba zv´aˇzit, zda jsou informace ” ” z okoln´ıch sn´ımk˚ u pro uˇzivatele natolik d˚ uleˇzit´e, ˇze by bylo vhodn´e je vidˇet z´aroveˇ n. Prvn´ı variantou je zobrazit vedle aktu´aln´ıho sn´ımku jeˇstˇe sn´ımek jemu pˇredch´azej´ıc´ı. V pˇr´ıpadˇe takto vznikl´ych dvou kresl´ıc´ıch ploch by ale mohlo b´yt pro uˇzivatele matouc´ı, kter´a z nich je aktu´aln´ı - zda ta vlevo a sn´ımek vpravo ukazuje budouc´ı v´yvoj, anebo ta vpravo a sn´ımek vlevo ukazuje pˇredchoz´ı v´yvoj. Tento probl´em by mohla odstranit druh´a varianta ˇreˇsen´ı - pouˇzit´ı tˇr´ı pracovn´ıch ploch vedle sebe (viz Obr´azek 3.1). Pracovn´ı plochy by byly chronologicky ˇrazeny zleva doprava. Aktu´aln´ı pracovn´ı plocha by byla v´yraznˇe odliˇsena - velikost´ı, pˇr´ıpadnˇe i barevnˇe - a vˇsechny plochy by byly opatˇreny popiskem, kter´y sn´ımek je na nich zobrazen. Tˇri pracovn´ı plochy by ale ve sv´em d˚ usledku mohly b´yt pro uˇzivatele jeˇstˇe v´ıce matouc´ı, obzvl´aˇstˇe pokud by na kaˇzdou jeho kresl´ıc´ı operaci reagoval nejen aktu´aln´ı sn´ımek, ale kv˚ uli zm´ınˇen´ym logick´ym vazb´am i sn´ımek vedlejˇs´ı. Napˇr´ıklad zakreslen´ı pohybov´e ˇc´ary by vyvolalo pˇrekreslen´ı hr´aˇce v n´asleduj´ıc´ım sn´ımku na m´ısto, kde ˇc´ara konˇc´ı.
´ ´ ˇ SEN ˇ ´I KAPITOLA 3. ANALYZA A NAVRH RE
12 þasová osa
Obr´azek 3.2: Rozvrˇzen´ı s jednou pracovn´ı plochou
Jedna pracovn´ı plocha Klasick´ym ˇreˇsen´ım by bylo jednoduch´e prostˇred´ı pouze s jednou plochou (viz Obr´azek 3.2). Probl´em prov´az´an´ı s n´asleduj´ıc´ım sn´ımkem by byl ˇreˇsen tak, ˇze uˇzivatel by po dokonˇcen´ı editace sn´ımku dal pokyn pro pˇrid´an´ı n´asleduj´ıc´ıho. Ten by jiˇz mohl b´yt vygenerov´an s v´ychoz´ımi pozicemi hr´aˇc˚ u, jak vypl´yvaj´ı z pr´avˇe nakreslen´eho sn´ımku. Orientace v ˇcasov´ych souvislostech by byla umoˇznˇena jen ˇcasovou osou, kde by se vyb´ıral aktu´aln´ı sn´ımek pro editaci na pl´atnˇe. 3.7.5
V´ ybˇ er ˇ reˇ sen´ı pracovn´ı plochy v kombinaci s ˇ casovou osou
Navrˇzen´a ˇreˇsen´ı byla pˇredstavena a konzultov´ana s nˇekolika vˇseobecn´ymi uˇzivateli poˇc´ıtaˇce, ale pˇredevˇs´ım tak´e s tren´ery1 , pro kter´e je aplikace urˇcena. Z konzultac´ı vyplynulo jako nejvhodnˇejˇs´ı ˇreˇsen´ı, kter´e je nˇekde na pomez´ı dvou navrˇzen´ych. Pˇri vlastn´ı editaci jednoho sn´ımku akce je pro lepˇs´ı orientaci velice uˇziteˇcn´e m´ıt na oˇc´ıch i sn´ımek pˇredchoz´ı. Sn´ımek by mˇel b´yt jasnˇe odliˇsen a nemˇel by b´yt editovateln´y. Editace aktu´aln´ıho sn´ımku nebude m´ıt ˇz´adn´y vliv na okoln´ı sn´ımky. Zvolen´e ˇreˇsen´ı bude zobrazovat i sn´ımek budouc´ı“. Existuje ovˇsem probl´em, ˇze n´asledu” j´ıc´ı sn´ımek nen´ı vˇzdy jednoznaˇcnˇe urˇcen sn´ımkem vytv´aˇren´ym, protoˇze v tom se m˚ uˇze v praxi vyskytovat nˇekolik moˇznost´ı pohybu pro jednoho hr´aˇce. Z nejednoznaˇcnosti vypl´yv´a, ˇze pˇri zah´ajen´ı pr´ace na dalˇs´ım sn´ımku nen´ı vˇzdy smyslupln´e generov´an´ı v´ychoz´ıch pozic hr´aˇc˚ u. Moˇznost generov´an´ı by mˇela proto z˚ ustat voliteln´a a uˇzivatel ji vyuˇzije jen v pˇr´ıpadech, kdy mu pr´aci skuteˇcnˇe ulehˇc´ı. Vazba mezi sn´ımky bude existovat jen pˇri vytv´aˇren´ı, pˇri dalˇs´ı pr´aci jiˇz ˇz´adn´e dva sn´ımky prov´az´any nebudou. 1
Jarom´ır Gerˇsl (hlavn´ı tren´er BA Sparta), Martin Chmel (asistent tren´era BK Drapa Prosek)
KAPITOLA 4. IMPLEMENTACE
13
4 Implementace 4.1
Z´ akladn´ı koncepce
Kostra cel´e implementace aplikace je zaloˇzena na n´avrhov´em vzoru MVC - Model View Controller. Jedn´a se o zp˚ usob ˇreˇsen´ı komunikace mezi uˇzivatelem, programem a vlastn´ımi daty, kdy je nejd˚ uleˇzitˇejˇs´ım prvkem oddˇelen´ı dat od jejich zobrazov´an´ı. Architektura MVC byla vhodn´a hned z nˇekolika d˚ uvod˚ u. Zejm´ena oddˇelen´ı vlastn´ıch dat a jejich zobrazov´an´ı bylo ve vyv´ıjen´e aplikaci ˇz´adouc´ı. Vlastn´ı objety sch´ematu jsou uloˇzeny jen jako modely s nutn´ymi atributy (tˇr´ıdy v bal´ıku basketballPlaybook.model) a nevˇed´ı nic o zp˚ usobu, jak´ym budou zobrazeny. O zobrazen´ı se postaraj´ı tˇr´ıdy v bal´ıku basketballPlaybook.view. Vhodnost t´eto separace spoˇc´ıv´a v pˇr´ıpadn´em upravov´an´ı vzhledu objekt˚ u. Zat´ımco se m˚ uˇze zmˇenit styl, jak budou napˇr´ıklad hr´aˇci zobrazov´ani, nen´ı potˇreba zasahovat do datov´eho modelu. Aplikace tak bude flexibilnˇejˇs´ı pˇri pˇr´ıpadn´ych zmˇen´ach. Dalˇs´ım faktem hovoˇr´ıc´ım pro MVC je jeho podpora v Javˇe. Pro vytv´aˇren´ı aplikac´ı zaloˇzen´ych na MVC jsou pˇrizp˚ usobeny Swing komponenty1 a technologie JavaBeans 2. Swing komponenty v sobˇe spojuj´ı funkce view a controller. JavaBeans jsou vhodn´e pro sdˇelov´an´ı si zmˇen mezi modelem a view za pomoci ud´alost´ı3 . V poˇc´atku byla jednou z uvaˇzovan´ych implementac´ı i implementace pomoc´ı framework˚ u Eclipse. Jedn´a se o frameworky EMF, GMF a GEF. Jejich popis a uk´azky jsou k vidˇen´ı na str´ank´ach [5], [4] a [3]. Pˇri bliˇzˇs´ım zkoum´an´ı bylo ale toto ˇreˇsen´ı zam´ıtnuto z d˚ uvodu pomˇernˇe velk´e sloˇzitosti vyvinut´e aplikace. V´ysledkem by byl sice robustn´ı grafick´y editor, ale s pˇr´ıliˇs sloˇzit´ym uˇzivatelsk´ym rozhran´ım. Nav´ıc by n´am frameworky nenab´ıdly takovou volnost pˇri n´avrhu uˇzivatelsk´eho rozhran´ı, kterou nab´ız´ı Swing.
4.2
Struktura grafu
Jak vyplynulo z anal´yzy (kapitoly 3.3 a 3.4) jsou objekty sch´ematu uloˇzeny jako orientovan´y graf. Z moˇznost´ı, jak strukturu grafu uloˇzit v pamˇeti, byla zvolena moˇznost zaloˇzen´a na uloˇzen´ı incidenc´ı. Kˇrivky propojuj´ıc´ı hr´aˇce maj´ı odkazy na hr´aˇce, ve kter´ych zaˇc´ınaj´ı a konˇc´ı. V opaˇcn´em smˇeru nen´ı vazba nijak ukl´ad´ana. Hr´aˇc tedy pˇr´ımo nev´ı o kˇrivk´ach, se kter´ymi je spojen. Pokud je nutn´e kˇrivky od hr´aˇce naj´ıt, proch´azej´ı se vˇsechny existuj´ıc´ı kˇrivky. Z tohoto pohledu nen´ı ˇreˇsen´ı ide´aln´ı, ale je dostaˇcuj´ıc´ı, pokud nav´ıc uv´aˇz´ıme, ˇze mnoˇzstv´ı kˇrivek neb´yv´a extr´emnˇe velk´e.
4.3
Tˇ r´ıdy uˇ zivatelsk´ eho rozhran´ı
Implementace uˇzivatelsk´eho rozhran´ı je zaloˇzena na Swing komponent´ach. Hlavn´ı ovl´aˇ d´an´ı je zajiˇstˇeno pomoc´ı JMenuBar, JToolBar a JPopupMenu. Casov´ a osa je horizont´alnˇe vykreslen´y JList, ve kter´em se zobrazuje seznam vytvoˇren´ych sn´ımk˚ u. Vykreslen´ı aktu´aln´ıho sn´ımku obstar´av´a novˇe implementovan´a tˇr´ıda PlaygroundCanvas, kter´a je potomkem tˇr´ıdy JPanel. Vyˇz´ıv´a se pˇreps´an´ı metody paint(Graphics g). Vy1
pˇri pouˇz´ıt´ı ˇcerp´ano z [11] pˇri pouˇz´ıt´ı ˇcerp´ano z [13] 3 pˇri pouˇz´ıt´ı ˇcerp´ano z [12] 2
14
KAPITOLA 4. IMPLEMENTACE
kreslen´ı pˇredchoz´ıho a n´asleduj´ıc´ıho sn´ımku je ˇreˇseno obdobnˇe, a to novˇe implementovanou tˇr´ıdou PlaygroundPreview, kter´a se od tˇr´ıdy PlaygroundCanvas liˇs´ı jen nepatrnˇe. K vykreslov´an´ı tvar˚ u jsou pouˇzity z´akladn´ı kresl´ıc´ı metody tˇr´ıdy Graphics jako jsou drawOval, fillPolygon, drawLine a nˇekter´e dalˇs´ı. Jednotliv´e typy ˇcar jsou implementov´any za pouˇzit´ı rozhran´ı Stroke. Pln´a a pˇreruˇsovan´a ˇc´ara jsou standardnˇe podporov´any d´ıky tˇr´ıdˇe BasicStroke. Probl´em tak nastal jen s vykreslen´ım vlnit´e kˇrivky, ˇ sen´ım je vlastn´ı tˇr´ıda kter´a je pouˇz´ıv´ana pro kreslen´ı pohybu u ´ toˇcn´ıka s m´ıˇcem. Reˇ DribbleStroke, kter´a implementuje rozhran´ı Stroke s metodou createStrokedShape. Vytvoˇren´ı tohoto vlastn´ıho typu ˇc´ary bylo inspirov´ano uk´azkami uveden´ymi v [6].
4.4
Tˇ r´ıdy ˇ c´ ast´ı model a view
Tˇr´ıdy jsou rozdˇeleny podle sv´ych u ´ kol˚ u do bal´ıˇck˚ u basketballPlaybook.model a basketballPlaybook.view. Hierarchie tˇr´ıd sleduje hierarchii cel´eho sch´ematu akce a vztahy mezi jednotliv´ymi objekty tak, jak vystihuje diagram tˇr´ıd B.4. Z´akladn´ımi tˇr´ıdami jsou ActionScheme, kter´a ukl´ad´a celou strukturu sch´ematu akce, a SchemeFrame, neboli jeden konkr´etn´ı sn´ımek akce. Sn´ımek v sobˇe ukl´ad´a vˇsechny objekty, kter´e se v nˇem vykytuj´ı a kter´e jsou zaobaleny interfacem SchemeObject. Jednotliv´e tˇr´ıdy objekt˚ u sn´ımku tento interface implementuj´ı. Patˇr´ı mezi nˇe tˇr´ıdy OffensivePlayer, DefensivePlayer, PassLine a dalˇs´ı, jejichˇz jm´ena jsou samovysvˇetluj´ıc´ı.
4.5
Uloˇ zen´ı a otevˇ ren´ı sch´ ematu
Ukl´ad´an´ı a otev´ır´an´ı cel´e pr´ace vyuˇz´ıv´a serializaci objekt˚ u v Javˇe. Do souboru, kter´emu je urˇcena pˇr´ıpona .ball je uloˇzen model akce, tedy instance tˇr´ıdy basketballPlaybook.model.ActionScheme, kter´a implementuje rozhran´ı Serializable. K ˇr´ızen´ı serializace objektu je pouˇzito kl´ıˇcov´e slovo transient u atributu pcs, kter´e zajist´ı, aby se tento atribut neserializoval. Pˇri naˇc´ıt´an´ı ze souboru je serialazece ˇr´ızena v metodˇe readObject. Pˇri uloˇzen´ı instance tˇr´ıdy basketballPlaybook.model.ActionScheme dojde k uloˇzen´ı cel´e struktury akce, protoˇze dojde i k serializace vˇsech atribut˚ u, ve kter´ych je pr´avˇe cel´a struktura schov´ana. Jednotliv´e sn´ımky a objekty akce tak´e implementuj´ı rozhran´ı Serializable a dojde k jejich uloˇzen´ı do souboru.
4.6
Export sch´ ematu
Pro export obr´azk˚ u je pouˇzita metoda write tˇr´ıdy ImageIO. Parametry metody jsou obr´azek Image, form´at obr´azku a v´ystupn´ı soubor. Jsou vyuˇzity form´aty obr´azk˚ u PNG, JPG a GIF, kter´e Java podporuje. Pˇri pr´aci s exportem obr´azk˚ u do soubor˚ u jsem vych´azel z uk´azky [7]. Cel´y export akce je proveden vyvol´an´ım metody export kaˇzd´eho sn´ımku. Metoda se postar´a o zavol´an´ı metod export na vˇsech objektech, kter´e sn´ımek obsahuje, a tak je vytvoˇren cel´y v´ysledn´y obr´azek. Od implementace exportu ve form´atu PDF bylo ve fin´ale upuˇstˇeno. Protoˇze editor ukl´ad´a i textov´e informace o akci, je pˇripraven pro tvorbu jednoduch´ych PDF report˚ u. K exportu PDF dokumentu by se nab´ızelo vyuˇz´ıt knihovnu iText 4 ˇs´ıˇrenou pod licenc´ı MPL. 4
http://www.lowagie.com/iText/
KAPITOLA 4. IMPLEMENTACE
4.7
15
Kreslen´ı kˇ rivek
Pro kreslen´ı kˇrivek byl jako uˇzivatelsky nejpˇr´ıjemnˇejˇs´ı vyhodnocen zp˚ usob, kdy se postupnˇe po sobˇe definuj´ı body, kter´ymi m´a b´yt v´ysledn´a kˇrivka proloˇzena. Uˇzivatelem nadefinovan´e body jsou pot´e interpolov´any do v´ysledn´e kˇrivky. Jako zp˚ usob interpolace byla zvolena interpolace s vyuˇzit´ım Bezi´erov´ych kˇrivek - kvadratick´ych a kubick´ych - jejichˇz podpora je v bal´ıku java.graphics. Z´akladn´ı sezn´amen´ı s problematikou kˇrivek mi poskytly pˇredn´aˇsky pˇredmˇetu X36ZPG (viz [8]) a d´ale tak´e dokumenty [14], [1] a [2]. 4.7.1
B´ ezierovy kˇ rivky
Pro vykreslov´an´ı B´ezierov´ych kˇrivek jsou vyuˇzity tˇr´ıdy java.graphics.QuadCurve a java.graphics.CubicCurve. Tˇr´ıdy jsou abstraktn´ı, takˇze jsou vol´any konstruktory jejich potomk˚ u, kter´e oˇcek´avaj´ı parametry ve formˇe double. Vol´an´ı se dˇeje v metodˇe evaluateControlPoints tˇr´ıdy MoveLine. 4.7.2
Kvadratick´ e B´ ezierovy kˇ rivky
Tˇr´ıda java.graphics.QuadCurve je vyuˇzita pˇri vykreslov´an´ı kˇrivky, kterou uˇzivatel nadefinuje pomoc´ı poˇc´ateˇcn´ıho a koncov´eho bodu a pouze jednoho opˇern´eho bodu, kter´ym m´a kˇrivka proj´ıt. Jelikoˇz jsou ale B´ezierovy kˇrivky definov´any jako aproximaˇcn´ı, je potˇreba z´ıskat ze souˇradnice opˇern´eho bodu souˇradnice ˇr´ıd´ıc´ıho bodu. Tuto skuteˇcnost reflektuje i konstruktor tˇr´ıdy java.graphics.QuadCurve, kter´y oˇcek´av´a jako parametry souˇradnice poˇc´ateˇcn´ıho, ˇr´ıd´ıc´ıho a koncov´eho bodu. Vych´az´ıme z rovnice kvadratick´e B´ezierovy kˇrivky: B(t) = (1 − t)2 P0 + 2t(1 − t)P1 + t2 P2 , t ∈ h0, 1i Pro n´aˇs pˇr´ıpad jsou zadan´e body P0 a P2 totoˇzn´e s poˇc´ateˇcn´ımi, respektive koncov´ymi, souˇradnicemi hr´aˇce, ke kter´emu je kˇrivka pˇriˇrazena. Zadan´y bod, pˇres kter´y m´a b´yt kˇrivka vedena, bude bodem B´ezierovy kˇrivky pro t = 0, 5, neboli bodem uprostˇred interpolace. Pro hledan´y ˇr´ıd´ıc´ı bod P1 kˇrivky tedy plat´ı: P1 =
B(t) − (1 − t)2 P0 − t2 P2 2t(1 − t)
kde t ≡ 0, 5. 4.7.3
Kubick´ e B´ ezierovy kˇ rivky
Tˇr´ıda java.graphics.CubicCurve je vyuˇzita pˇri vykreslov´an´ı kˇrivky, kterou uˇzivatel nadefinuje pomoc´ı poˇc´ateˇcn´ıho, koncov´eho a dvou ˇci v´ıce opˇern´ych bod˚ u, kter´ymi m´a kˇrivka proj´ıt. Pro interpolaci je vyuˇzita metoda interpolace pomoc´ı B-spline uniformn´ıch kˇrivek, kter´a je postavena na spojov´an´ı pr´avˇe kubick´ych B´ezierov´ych kˇrivek. Tato problematika byla dobˇre pops´ana v dokumentech [1] a [2] a implementace z nich ˇcerp´a. Vych´az´ıme z rovnice kubick´e B´ezierovy kˇrivky: B(t) = (1 − t)3 P0 + 3(1 − t)2 tP1 + 3(1 − t)t2 P2 + t3 P3 , t ∈ h0, 1i
16
KAPITOLA 4. IMPLEMENTACE
Uˇzivatelem zadan´e body, vˇcetnˇe poˇc´ateˇcn´ıho a koncov´eho, kter´e jsou totoˇzn´e s hr´aˇci, oznaˇcme S0 , ..., Sn . Tyto body jsou poˇc´ateˇcn´ımi a koncov´ymi body jednotliv´ych B´ezierov´ych segment˚ u, kter´e jsou na sebe napojeny. Pro urˇcen´ı segment˚ u je tˇreba zn´at jejich ˇr´ıd´ıc´ı body, kter´e oznaˇcme B0 , ..., Bn . Pˇrirozenˇe plat´ı, ˇze B0 = S0 a Bn = Sn . Zbyl´e body B1 , ..., Bn−1 je nutn´e dopoˇc´ıtat. ˇ ıd´ıc´ı body B´ezierov´ych segment˚ R´ u z v´ysledn´ych mnoˇzin bod˚ u budou n´asleduj´ıc´ı: pro i -t´y segment bude platit: 2 1 1 2 Si−1 , Bi−1 + Bi , Bi−1 + Bi , Si 3 3 3 3 Takto z´ıskan´e ˇctyˇri body jsou pˇred´any konstruktoru CubicCurve2D.Double a vytvoˇr´ı tak jeden segment kˇrivky. Souhrnnˇe body B a S splˇ nuj´ı n´asleduj´ıc´ı rovnici (pˇr´ıklad pro n = 5 a S0 = B0 a Sn = Bn ):
4 1 0 0
1 4 1 0
0 1 4 1
0 0 1 4
B1 B2 B3 B4
=
(6S1 − S0 ) 6S2 6S3 (6S4 − S5 )
Oznaˇcme M matici ”1 4 1”, B∗ matici s ˇr´adky B1 , ..., Bn−1 a C matici koeficient˚ u na prav´e stranˇe. Body B pot´e z´ısk´ame jako: B∗ = M −1 C 4.7.4
Podpora maticov´ ych operac´ı
Pˇri v´ypoˇctu ˇr´ıd´ıc´ıch bod˚ u kˇrivek jsou potˇreba operace s maticemi. Ty jsou ˇc´asteˇcnˇe zahrnuty pˇr´ımo v metodˇe evaluateControlPoints tˇr´ıdy MoveLine, kter´a reprezentuje kˇrivku. Zde je pˇr´ımo zaˇclenˇeno n´asoben´ı. D´ale je vytvoˇrena tˇr´ıda MatrixSupport, ze kter´e se z´ısk´avaj´ı matice M −1 vol´an´ım getInvertedMatrixM. Vlastn´ı matematickou operaci inverze matice prov´ad´ı statick´a metoda invert, pouˇzit´a z [10]. Tˇr´ıda MatrixSupport je pouˇzita z d˚ uvodu, ˇze matice M −1 m˚ uˇze b´yt pouˇz´ıv´ana opakovanˇe. Proto tˇr´ıda uchov´av´a jiˇz spoˇcten´e matice v Hashtable, ve kter´e je kl´ıˇcem rozmˇer matice.
´ ´I KAPITOLA 5. TESTOVAN
17
5 Testov´ an´ı 5.1
Zp˚ usob testov´ an´ı
Jako zp˚ usob testov´an´ı v´ysledn´e aplikace byla zvolena konzultace nad aplikac´ı s tren´ery. Testov´an´ı se z´ uˇcastnili tren´eˇri uveden´ı v tabulce 5.1. Na zaˇc´atku konzultace byla aplikace uˇzivateli kr´atce pops´ana a pˇredvedena. Z uk´azky mˇely b´yt patrn´e z´akladn´ı operace, kter´e aplikace poskytuje, a uˇzivatel mˇel z´ıskat prvn´ı pˇrehled o uˇzivatelsk´em prostˇred´ı a z´akladech ovl´ad´an´ı. V dalˇs´ı f´azi byla pr´ace s aplikac´ı pˇrenech´ana ˇcistˇe tren´erovi. Tren´er mˇel s programem prov´est u ´ koly, kter´e mˇely simulovat z´akladn´ı vyuˇzit´ı a funkce aplikace. Zad´an´ı u ´ kol˚ u znˇelo n´asledovnˇe: 1. Vytvoˇrte jednoduchou u ´ toˇcnou akci o nˇekolika sn´ımc´ıch (cca 4). (a) Rozestavte u ´ toˇcn´ıky. (b) Nakreslete jejich pohyb a pˇrihr´avky. (c) Pˇridejte sn´ımek a kroky opakujte. 2. Vytvoˇrenou akci uloˇzte na disk. 3. Sn´ımky akce vyexportujte jako obr´azky do zvolen´eho adres´aˇre. Testov´an´ı prob´ıhalo v podobˇe asi 30 minutov´e pr´ace s programem a n´asledn´e debaty o jeho funkc´ıch. Uˇzivatel T1 pracoval na sv´em notebooku s touchpadem a s n´ızk´ym rozliˇsen´ım obrazovky, coˇz zp˚ usobilo menˇs´ı probl´em s pˇrehlednost´ı aplikaˇcn´ıho okna. U testovan´ych T2 a T3 bylo testov´an´ı prov´adˇeno na dom´ac´ım poˇc´ıtaˇci testovan´eho. Poˇc´ıtaˇc byl standardn´ım kancel´aˇrsk´ym poˇc´ıtaˇcem s operaˇcn´ım syst´emem Windows XP. Testovan´y T1 T2 T3
Pohlav´ı Vˇek Tren´ersk´a odbornosta muˇz 41 hlavn´ı tren´er, licence A muˇz 52 asistent tren´era, licence B muˇz 26 tren´er ml´adeˇze, licence A
PC zdatnost z´akladn´ı n´ızk´a pokroˇcil´a
a Tˇr´ıdy tren´ersk´ ych licenc´ı jsou A, B a C ; A nejvyˇsˇs´ı (absolventi FTVS UK), C nejniˇzˇs´ı (absolventi tren´ersk´eho kurzu).
Tabulka 5.1: Testovan´e osoby
5.2
Pr˚ ubˇ eh testu
Testovan´y T1, pˇres zmiˇ novan´y probl´em s rozliˇsen´ım, kdy nebyla vidˇet ˇc´ast hlavn´ıho okna, z´ıskal pˇrehled o funkc´ıch aplikace. Rozvrˇzen´ı tˇr´ı pracovn´ıch ploch bylo pro nˇej praktick´e a nep˚ usobilo ˇz´adn´ym matouc´ım dojmem. Ovl´ad´an´ı i export obr´azk˚ u bylo pro testovan´eho srozumiteln´e a byl schopen samostatn´e pr´ace jiˇz po nˇekolika prvn´ıch rad´ach. Testovan´y T2 rychle pochopil z´akladn´ı rozvrˇzen´ı programu. Pˇri samostatn´e pr´aci mu ˇcinilo probl´emy rozliˇsit, pˇri kter´ych operac´ıch s myˇs´ı m´a vyuˇz´ıvat kliknut´ı a pˇri kter´ych
´ ´I KAPITOLA 5. TESTOVAN
18
drag&drop. Na vinˇe dle m´eho n´azoru byla niˇzˇs´ı zkuˇsenost pˇri pr´aci s PC. Bylo ale potˇeˇsuj´ıc´ı, ˇze probl´emy mizely s kreslen´ım dalˇs´ıch sn´ımk˚ u. Testovan´y s´am potvrdil, ˇze se rychle s ovl´ad´an´ım sˇz´ıval a ˇze by si bˇehem p´ar dalˇs´ıch pokus˚ u zcela zvykl. Pr˚ ubˇeh pr´ace s aplikac´ı u testovan´eho T3 byl o pozn´an´ı hladˇs´ı. Uˇzivatel t´emˇeˇr ihned pochopil funkce programu a rychle si zvykl na drobn´a specifika v ovl´ad´an´ı. Tren´era potˇeˇsila funkce, kdy se s hr´aˇcem pˇremist’uj´ı i jeho kˇrivky. Tak´e vyzdvihl dobr´e ovl´ad´an´ı pomoc´ı kontextov´e nab´ıdky pˇri stisku prav´eho tlaˇc´ıtka myˇsi.
5.3
Vyhodnocen´ı
Souhrnnˇe testov´an´ı probˇehlo u ´ spˇeˇsnˇe ke spokojenosti tren´er˚ u. Pˇrestoˇze prvn´ı sezn´amen´ı ˇ ım zkuˇsenˇejˇs´ı uˇzivatel, nebylo bez probl´em˚ u, uˇzivatel´e se s programem rychle sˇz´ıvali. C´ t´ım v´ıce prvk˚ u ovl´ad´an´ı mu pˇriˇslo intuitivn´ıch. Jednoznaˇcnˇe pozitivn´ı zpr´avou bylo, ˇze i uˇzivatel´e, kteˇr´ı jinak do styku s grafick´ymi editory nepˇrijdou, jsou schopni aplikaci pouˇz´ıvat a vytvoˇrit kompletn´ı sch´ema. Z diskuz´ı o editoru vyplynulo nˇekolik n´apad˚ u na dalˇs´ı uˇziteˇcn´e funkce. Tren´eˇri by vyuˇzili napˇr´ıklad moˇznost vepsat pˇr´ımo do kresby kr´atk´y text nebo um´ıstit na hˇriˇstˇe pevnou pˇrek´aˇzku, kter´a se vyuˇz´ıv´a v tr´eninkov´ych cviˇcen´ı. D´ale se v praxi ˇcasto kresl´ı akce, kter´a prob´ıh´a jen na polovinˇe hˇriˇstˇe, a tak by editor mohl podporovat export jen zvolen´e poloviny hˇriˇstˇe.
´ ER ˇ KAPITOLA 6. ZAV
19
6 Z´ avˇ er Bˇehem m´e pr´ace na tomto t´ematu jsem si vyzkouˇsel vˇsechny f´aze, kter´ymi mus´ı proj´ıt aplikace od prvn´ıho n´apadu aˇz po koneˇcnou implementaci a testov´an´ı s uˇzivateli. V nˇekter´ych ˇc´astech mi v´yraznˇe pomohly m´e osobn´ı znalosti prostˇred´ı. Pˇredevˇs´ım se jednalo o prvn´ı proniknut´ı do problematiky, protoˇze z m´e pozice hr´aˇce se se sch´ematy setk´av´am t´emˇeˇr dennˇe. Nebylo pro mˇe ale jednoduch´e nahl´ednout z role hr´aˇce a program´atora do role tren´era a uˇzivatele. V´ysledn´a aplikace splˇ nuje z´akladn´ı poˇzadavky, kter´e na ni zad´an´ı a vyuˇzit´ı v praxi kladly. Editor umoˇzn ˇ uje jednoduch´e kreslen´ı vˇsech specifick´ych objekt˚ u pouˇz´ıvan´ych v basketbale a nab´ız´ı z´akladn´ı funkce, kter´e by od n´ı mohl uˇzivatel oˇcek´avat. Patˇr´ı mezi nˇe vkl´ad´an´ı, maz´an´ı a editace jednotliv´ych objekt˚ u a tak´e uloˇzen´ı a otevˇren´ı cel´eho sch´ematu. Dalˇs´ı funkc´ı je export sch´ematu ve formˇe obr´azk˚ u, coˇz otev´ır´a moˇznost vyuˇzit´ı v´ysledk˚ u k dalˇs´ı pr´aci. Vloˇzen´e u ´ sil´ı do anal´yzy a n´avrhu uˇzivatelsk´eho prostˇred´ı mˇelo sv´e v´ysledky pˇri konzultac´ıch s uˇzivateli, kteˇr´ı se dok´azali s programem a jeho ovl´ad´an´ım rychle sezn´amit. Editor v souˇcasn´e verzi neumoˇzn ˇ uje export do souboru PDF. Jelikoˇz jsou ukl´ad´any k n´avrhu i textov´e informace jako n´azev akce a popis sn´ımk˚ u, je aplikace pˇripravena na moˇznost vytv´aˇren´ı PDF reportu, kter´y by popisoval akci nejen obr´azky, ale i pˇripojen´ym textem. V u ´ vahu by pˇripadala i varianta reportu jako HTML str´anky. Nyn´ı je tvorba takov´ehoto reportu ponech´ana ˇcistˇe na uˇzivateli, kter´ y m˚ uˇze vyuˇz´ıt pouze v´ystupn´ı obr´azky editoru. Zajist´e by se naˇslo mnoˇzstv´ı dalˇs´ıch funkc´ı, kter´e by uˇzivatel´e ocenili. Patˇrila by mezi nˇe napˇr´ıklad funkce Undo/Redo nebo moˇznost barevn´ych nastaven´ı jak v programu, tak i v exportovan´ych obr´azc´ıch. Pokud jde o dalˇs´ı specifick´e funkce pro basketbal, v praxi by bylo uˇziteˇcn´e napˇr´ıklad vkl´ad´an´ı kr´atk´eho textu pˇr´ımo do kresby nebo export pouze poloviny hˇriˇstˇe. Pˇri kreslen´ı tr´eninkov´ych cviˇcen´ı by naˇsel sv´e uplatnˇen´ı tak´e dalˇs´ı objekt, kuˇzel, reprezentuj´ıc´ı pevnou pˇrek´aˇzku.
20
´ ER ˇ KAPITOLA 6. ZAV
KAPITOLA 7. LITERATURA
21
7 Literatura [1] Cubic b´ezier curves , 2008. www.math.ucla.edu/~baker/149.1.02w/handouts/bb_bezier.pdf. [2] Cubic spline curves , 2008. www.math.ucla.edu/~baker/149.1.02w/handouts/dd_splines.pdf. [3] Eclipse graphical editing framework (gef) , 2008. http://www.eclipse.org/modeling/gef/. [4] Eclipse graphical modeling framework (gmf) , 2008. http://www.eclipse.org/modeling/gmf/. [5] Eclipse modeling framework project (emf) , 2008. http://www.eclipse.org/modeling/emf/. [6] Fun with java2d - strokes , 2008. http://www.jhlabs.com/java/java2d/strokes/. [7] T. J. D. Almanac. Saving a generated graphic to a png or jpeg file , 2008. http://exampledepot.com/egs/javax.imageio/Graphic2File.html. [8] B. Hudec and P. Felkel. X36zpg: Kˇrivky, plochy, evalu´atory (i + ii) , 2008. http://service.felk.cvut.cz/courses/X36ZPG/prednasky/. [9] E. Sacharski. Blackboard strategies: Over 200 favorite plays from successful coaches for nearly every possible situation. Lessiter Publications, Inc., P.O.Box 624, Brookfield, WI, 1st edition, 1999. [10] J. Squire. Matrix , 2008. http://www.cs.umbc.edu/~squire/download/Matrix.java. [11] T. J. Tutorials. Lesson: Using swing components , 2008. http://java.sun.com/docs/books/tutorial/uiswing/components. [12] T. J. Tutorials. Lesson: Writing event listeners , 2008. http://java.sun.com/docs/books/tutorial/uiswing/events/. [13] T. J. Tutorials. Trail: Javabeans(tm) , 2008. http://java.sun.com/docs/books/tutorial/javabeans/. [14] Wikipedia. B´ezier curve) , 2008. http://en.wikipedia.org/wiki/B´ ezier_curve. [15] J. Wooden and S. Nater. John Wooden’s UCLA offense. Human Kinetics, P.O.Box 5076, Champaign, IL, 1st edition, 2006.
22
KAPITOLA 7. LITERATURA
ˇ YCH ´ ˚ A ZKRATEK DODATEK A. SEZNAM POUZIT TERM´INU
23
A Seznam pouˇ zit´ ych term´ın˚ u a zkratek A.1
Pouˇ zit´ e term´ıny
• akce - viz strategie • clona - ˇcinnost u ´ toˇcn´ıka za u ´ˇcelem uvolnit spoluhr´aˇce; spoˇc´ıv´a v odblokov´an´ı obr´ance • cviˇ cen´ı - vyuˇz´ıv´a se pˇri tr´eninku a m´a za c´ıl pˇripravit hr´aˇce na situaci, kter´a se m˚ uˇze vyskytnout v z´apase; m˚ uˇze m´ıt pomˇernˇe sloˇzitou strukturu, kterou je tak´e potˇreba zachytit sch´ematem pro lepˇs´ı vysvˇetlen´ı • driblink - basketbalov´y pohyb u ´ toˇcn´ıka s m´ıˇcem • f´ aze - viz sn´ımek • sch´ ema - je zjednoduˇsen´ym zobrazen´ım cel´e strategie nebo cviˇcen´ı; skl´ad´a se z nˇekolika sn´ımk˚ u • sn´ımek - je statick´ym zobrazen´ım jedn´e ˇc´asti strategie a zobrazuje postaven´ı a ˇcinnosti hr´aˇc˚ u v dan´em okamˇziku • strategie - soustava napl´anovan´ych postaven´ı a pohyb˚ u hr´aˇc˚ u smˇeˇruj´ıc´ı k urˇcit´emu c´ıly; pˇri zobrazov´an´ı se rozˇcleˇ nuje na sn´ımky
A.2
Pouˇ zit´ e zkratky
• FIBA - International Basketball Federation; p˚ uvodnˇe F´ed´eration Internationale de Basketball Amateur • EMF - Eclipse Modeling Framework • GMF - Graphical Modeling Framework • GEF - Graphical Editing Framework
24
ˇ YCH ´ ˚ A ZKRATEK DODATEK A. SEZNAM POUZIT TERM´INU
25
DODATEK B. UML DIAGRAMY
B UML diagramy
9LVXDO3DUDGLJPIRU80/6WDQGDUG(GLWLRQ&]HFK7HFKQLFDO8QLYHUVLW\LQ3UDJXH
<
> ]DĜDGLWQRYpFYLþHQt
SUH]HQWRYDWQRYpFYLþHQtKUiþĤP
<>
<> SĜLSUDYLWWUpQLQN
]DĜDGLW]QiPpFYLþHQt
<>
<>
SURFYLþLW]QiPRXDNFL
Trenér
<> QDFYLþLWQRYRXDNFL SĜLSUDYLWQRYRXDNFL
XSUDYLWSRXåtYDQRXDNFL
Obr´azek B.1: Use case diagram tren´era
SUH]HQWRYDWQRYRXDNFLKUiþĤP
26
DODATEK B. UML DIAGRAMY
Visual Paradigm for UML Standard Edition(Czech Technical University in Prague)
Aplikace
Editovat snímek
<>
3ĜLGDWVQtPHN
Editovat schéma <>
<> 2WHYĜtWVFKpPD
Trenér 8ORåLWVFKpPD
Exportovat snímek
<> Exportovat schéma
Obr´azek B.2: Use case diagram
Smazat snímek
27
DODATEK B. UML DIAGRAMY
Visual Paradigm for UML Standard Edition(Czech Technical University in Prague)
new object
Basic
mouse exit
delete
mouse enter
Mouse Over (not selected)
mouse down
Dragged (not selected)
mouse up
click
delete
Mouse Over (selected)
mouse down
Dragged (selected)
mouse up
mouse enter
mouse exit
Selected
deselect
delete
Obr´azek B.3: Stavov´y diagram objektu ve sn´ımku
28
DODATEK B. UML DIAGRAMY
Visual Paradigm for UML Standard Edition(Czech Technical University in Prague)
ActionScheme -name : string -frames : SchemeFrame -currentFrame : int +addFrame(frame : SchemeFrame) : void +removeCurrentFrame() : void
SchemeFrame -name : string -offensivePlayers : OffensivePlayer -defensivePlayers : DefensivePlayer -moveLines : MoveLine -definedPoints : ConnectionDefinedPoint -comment : string +delete(object : SchemeObject) : void +addPassLine(passLine : PassLine) : void +addOffensivePlayer(player : OffensivePlayer) : void +addDefensivePlayer(player : DefensivePlayer) : void +addMoveLine(line : MoveLine) : void +addDefinedPoint(p : ConnectionDefinedPoint) : void
<> SchemeObject +moveTo(x : int, y : int) : void
ConnectionLine
Player
-isSelected : boolean -isMouseOver : boolean
-x : int -y : int -position : string -isSelected : boolean -rotation : double +rotate(angle : double) : void
PassLine
ConnectionDefinedPoint -x : int -y : int
Ball -player : OffensivePlayer
MoveLine
-start : OffensivePlayer -end : OffensivePlayer
-start : Player -end : Player -controlPoints : Point[] -definedPoints : ConnectionDefinedPoint +addDefinedPoint(p : ConnectionDefinedPoint) : void +evaluateControlPoints() : void
OffensivePlayer
DefensivePlayer
DribbleLine
-ball : Ball -isShooting : boolean -hasBall : boolean
Obr´azek B.4: Diagram tˇr´ıd
ScreenLine
ˇ ´ PR ˇ ´IRUCKA ˇ DODATEK C. UZIVATELSK A
29
C Uˇ zivatelsk´ a pˇ r´ıruˇ cka C.1
Instalace
Program nevyˇzaduje speci´aln´ı instalaci na V´aˇs poˇc´ıtaˇc. Na poˇc´ıtaˇci ovˇsem mus´ı b´yt nainstalov´ana podpora pro spouˇstˇen´ı aplikac´ı Java 1.6. Nutn´e vybaven´ı je ke staˇzen´ı na http://www.java.com/en/download/manual.jsp.
C.2
Spuˇ stˇ en´ı programu
Program spust´ıte souborem BasketballPlaybook.jar nebo run.bat.
C.3
Hlavn´ı okno
Z´akladn´ı vzhled hlavn´ıho okna vystihuje obr´azek C.1. Popis jeho hlavn´ıch ˇc´ast´ı oznaˇcen´ych ˇc´ısly je uveden n´ıˇze. 1. Menu programu - obsahuje hlavn´ı pˇr´ıkazy pro pr´aci s programem. 2. Panel n´ astroj˚ u - v panelu vol´ıte n´astroj, kter´y budete pouˇz´ıvat pˇri kreslen´ı. 3. Hlavn´ı pracovn´ı plocha - m´ısto pro vytv´aˇren´ı kresby sn´ımku. ˇ 4. Casov´ a osa - zobrazuje vytvoˇren´e sn´ımky chronologicky ˇrazen´e zleva doprava; aktu´aln´ı sn´ımek je zv´yraznˇen. 5. N´ ahled pˇ redchoz´ıho sn´ımku - zobrazuje n´ahled pˇredchoz´ıho sn´ımku, pokud existuje. 6. N´ ahled n´ asleduj´ıc´ıho sn´ımku - zobrazuje n´ahled n´asleduj´ıc´ıho sn´ımku, pokud existuje. 7. Panel vlastnost´ı - umoˇzn ˇ uje upravovat n´azev akce nebo n´azev aktu´aln´ıho sn´ımku nebo slovn´ı popis.
C.4
Editace sn´ımku
Pro u ´ˇcely tohoto n´avodu je hr´aˇcem myˇslena i oblast na konci pohybov´ych kˇrivek, kde hr´aˇc virtu´alnˇe stoj´ı po ukonˇcen´ı pohybu. C.4.1
Pˇ rid´ an´ı u ´toˇ cn´ıka
´ cn´ık. 1. V panelu n´astroj˚ u vyberte n´astroj Utoˇ 2. Kliknut´ım na kresl´ıc´ı ploˇse um´ıst´ıte u ´ toˇcn´ıka. nebo 1. Kliknˇete prav´ym tlaˇc´ıtkem na voln´e kresl´ıc´ı ploˇse. 2. Z nab´ıdky vyberte Pˇridat u ´toˇcn´ıka.
ˇ ´ PR ˇ ´IRUCKA ˇ DODATEK C. UZIVATELSK A
30
7 1 2 3
5 6
4
Obr´azek C.1: Hlavn´ı okno
C.4.2
Pˇ rid´ an´ı obr´ ance
1. V panelu n´astroj˚ u vyberte n´astroj Obr´ance. 2. Kliknut´ım na kresl´ıc´ı ploˇse um´ıst´ıte obr´ance. nebo 1. Kliknˇete prav´ym tlaˇc´ıtkem myˇsi na voln´e kresl´ıc´ı ploˇse. 2. Z nab´ıdky vyberte Pˇridat obr´ance. C.4.3
Pˇ resun hr´ aˇ ce
1. Najed’te myˇs´ı na hr´aˇce (hr´aˇc se obarv´ı) a taˇzen´ım myˇsi pˇri stisknut´em lev´em tlaˇc´ıtku jej pˇrem´ıstˇete. C.4.4
Pˇ rid´ an´ı pˇ rihr´ avky
1. V panelu n´astroj˚ u vyberte n´astroj Pˇrihr´avka. 2. Kliknut´ım lev´ym tlaˇc´ıtkem myˇsi vyberte u ´ toˇcn´ıka, kter´y pˇrihr´av´a. (Vybran´y hr´aˇc se oznaˇc´ı ˇcervenˇe.) 3. Kliknut´ım lev´ym tlaˇc´ıtkem myˇsi vyberte u ´ toˇcn´ıka, kter´y pˇrihr´avku pˇrij´ım´a.
ˇ ´ PR ˇ ´IRUCKA ˇ DODATEK C. UZIVATELSK A C.4.5
31
Pˇ rid´ an´ı pohybu bez m´ıˇ ce
1. V panelu n´astroj˚ u vyberte n´astroj Pohyb. 2. Kliknut´ım lev´ym tlaˇc´ıtkem myˇsi vyberte hr´aˇce. 3. Kliknut´ım lev´ym tlaˇc´ıtkem myˇsi pˇrid´ate bod, kter´ym m´a kˇrivka pohybu proj´ıt. (Pokud chcete pˇrid´an´ı kˇrivky zruˇsit, stisknˇete kl´avesu Esc.) 4. Kˇrivku ukonˇc´ıte dvojklikem lev´ym tlaˇc´ıtkem myˇsi. C.4.6
Pˇ rid´ an´ı driblinku
1. V panelu n´astroj˚ u vyberte n´astroj Driblink. 2. Kliknut´ım lev´ym tlaˇc´ıtkem myˇsi vyberte u ´ toˇcn´ıka. 3. Kliknut´ım lev´ym tlaˇc´ıtkem myˇsi pˇrid´ate bod, kter´ym m´a kˇrivka pohybu proj´ıt. (Pokud chcete pˇrid´an´ı kˇrivky zruˇsit, stisknˇete kl´avesu Esc.) 4. Kˇrivku ukonˇc´ıte dvojklikem lev´ym tlaˇc´ıtkem myˇsi. C.4.7
Pˇ rid´ an´ı clony
1. V panelu n´astroj˚ u vyberte n´astroj Clona 2. Kliknut´ım lev´ym tlaˇc´ıtkem myˇsi vyberte u ´ toˇcn´ıka. 3. Kliknut´ım lev´ym tlaˇc´ıtkem myˇsi pˇrid´ate bod, kter´ym m´a kˇrivka pohybu proj´ıt. (Pokud chcete pˇrid´an´ı kˇrivky zruˇsit, stisknˇete kl´avesu Esc.) 4. Kˇrivku ukonˇc´ıte dvojklikem lev´ym tlaˇc´ıtkem myˇsi. C.4.8
M´ıˇ c v drˇ zen´ı
1. Najed’te myˇs´ı na u ´ toˇcn´ıka a kliknˇete prav´ym tlaˇc´ıtkem myˇsi. 2. Z nab´ıdky vyberte M´ıˇc v drˇzen´ı. (Postup je stejn´y pro zobrazen´ı i vymaz´an´ı m´ıˇce.) C.4.9
Stˇ rela
1. Najed’te myˇs´ı na u ´ toˇcn´ıka a kliknˇete prav´ym tlaˇc´ıtkem myˇsi. 2. Z nab´ıdky vyberte Stˇrela. (Postup je stejn´y pro zobrazen´ı i vymaz´an´ı stˇrely.) C.4.10
Oznaˇ cen´ı hr´ aˇ csk´ e pozice
1. Najed’te myˇs´ı na hr´aˇce a kliknˇete prav´ym tlaˇc´ıtkem myˇsi. 2. Z nab´ıdky vyberte Pozice. 3. Z podnab´ıdky vyberte oznaˇcen´ı pozice.
ˇ ´ PR ˇ ´IRUCKA ˇ DODATEK C. UZIVATELSK A
32 C.4.11
Smaz´ an´ı hr´ aˇ ce
1. V panelu n´astroj˚ u vyberte n´astroj Editace. 2. Kliknut´ım lev´ym tlaˇc´ıtkem myˇsi oznaˇcte hr´aˇce. (Vybran´y hr´aˇc se oznaˇc´ı ˇcervenˇe.) 3. Stiskem kl´avesy Delete hr´aˇce odstran´ıte. (Pozor - odstran´ıte t´ım tak´e vˇsechny pˇrihr´avky a kˇrivky s hr´aˇcem spojen´e.) nebo 1. Najed’te myˇs´ı na hr´aˇce a kliknˇete prav´ym tlaˇc´ıtkem myˇsi. 2. Z nab´ıdky vyberte Vymazat. (Pozor - odstran´ıte t´ım tak´e vˇsechny pˇrihr´avky a kˇrivky s hr´aˇcem spojen´e.) C.4.12
Smaz´ an´ı kˇ rivky
1. V panelu n´astroj˚ u vyberte n´astroj Editace. 2. Kliknut´ım lev´ym tlaˇc´ıtkem myˇsi oznaˇcte kˇrivku. 3. Stiskem kl´avesy Delete kˇrivku odstran´ıte. C.4.13
Editace kˇ rivky
1. V panelu n´astroj˚ u vyberte n´astroj Editace. 2. Kliknut´ım lev´ym tlaˇc´ıtkem myˇsi oznaˇcte kˇrivku. 3. Najed’te myˇs´ı na kotevn´ı bod kˇrivky a taˇzen´ım myˇsi pˇri stisknut´em lev´em tlaˇc´ıtku jej pˇrem´ıstˇete. C.4.14
Natoˇ cen´ı obr´ ance
1. V panelu n´astroj˚ u vyberte n´astroj Otoˇcit. 2. Kliknut´ım lev´ym tlaˇc´ıtkem myˇsi oznaˇcte obr´ance. 3. Najed’te myˇs´ı na oznaˇcen´eho obr´ance a taˇzen´ım myˇsi ve vodorovn´em smˇeru pˇri stisknut´em lev´em tlaˇc´ıtku natoˇcte obr´ance.
C.5
Pˇ rid´ an´ı sn´ımku
1. V hlavn´ım menu zvolte Sn´ımek/Pˇridat sn´ımek. (Sn´ımek je vˇzdy pˇrid´an na konec.) nebo 1. Kliknˇete lev´ym tlaˇc´ıtkem myˇsi na panel dalˇsho sn´ımku, pokud je tento panel pr´azdn´y (sn´ımek dosud neexistuje). Pˇri pˇrid´an´ı sn´ımku jste dot´az´ani, zda se m´a vygenerovat postaven´ı hr´aˇc˚ u na dalˇs´ım sn´ımku. Program nemus´ı vyˇreˇsit spr´avnˇe vˇsechny situace, ale m˚ uˇze V´am pr´aci velmi ulehˇcit.
ˇ ´ PR ˇ ´IRUCKA ˇ DODATEK C. UZIVATELSK A
33
Obr´azek C.2: Dialog pro uloˇzen´ı sn´ımk˚ u ve formˇe obr´azk˚ u
C.6
Odebr´ an´ı sn´ımku
1. Oznaˇcte sn´ımek. 2. V hlavn´ım menu zvolte Sn´ımek/Smazat sn´ımek.
C.7
V´ ybˇ er aktu´ aln´ıho sn´ımku
1. Sn´ımek vyberte klinut´ım lev´ym tlaˇc´ıtkem myˇsi na ˇcasov´e ose. nebo 1. Klinˇete lev´ym tlaˇc´ıtkem myˇsi na n´ahledu pˇredchoz´ıho nebo n´asleduj´ıc´ı sn´ımku, podle smˇeru, kter´ym se chcete posunout.
C.8
Uloˇ zen´ı akce
1. V hlavn´ım menu zvolte Soubor/Uloˇzit.... 2. V otevˇren´em dialogov´em oknˇe zvolte m´ısto uloˇzen´ı souboru a jeho jm´eno.
C.9
Otevˇ ren´ı uloˇ zen´ e akce
1. V hlavn´ım menu zvolte Soubor/Otevˇr´ıt.... 2. V otevˇren´em dialogov´em oknˇe vyberte uloˇzen´y soubor.
ˇ ´ PR ˇ ´IRUCKA ˇ DODATEK C. UZIVATELSK A
34
C.10
Uloˇ zit sn´ımky jako obr´ azky (exportovat akci)
1. V hlavn´ım menu zvolte Soubor/Exportovat.... 2. V otevˇren´em dialogov´em oknˇe C.2 urˇcete v´ystupn´ı adres´aˇr, spoleˇcn´e jm´eno soubor˚ u, kter´e bude n´asledov´ano jm´eny sn´ımk˚ u, a form´at obr´azku. 3. Stisknˇete Export.
´ ´ DODATEK D. UKAZKY VYSTUPU PROGRAMU
D Uk´ azky v´ ystupu programu
Obr´azek D.1: Jednoduch´a u ´ toˇcn´a akce
35
36
´ ´ DODATEK D. UKAZKY VYSTUPU PROGRAMU
Obr´azek D.2: Pˇrekon´an´ı n´atlakov´e obrany
´ Obr´azek D.3: Utok proti z´onov´e obranˇe
ˇ ˇ EHO ´ DODATEK E. OBSAH PRILO ZEN CD
E Obsah pˇ riloˇ zen´ eho CD Pˇriloˇzen´e CD obsahuje soubory v n´asleduj´ıc´ı adres´aˇrov´e struktuˇre. • application - vlastn´ı aplikace v distribuˇcn´ı verzi • examples - pˇr´ıklady v´ystupn´ıch soubor˚ u aplikace – application files - pr´ace uloˇzen´e v aplikaci – export - editorem exportovan´e obr´azky • javadoc - dokumentace ke zdrojov´emu k´odu • jre - instalace JRE • prj - projektov´e soubory NET Beans a Visual Paradigm • src - zdrojov´y k´od programu • text - text bakal´aˇrsk´e pr´ace – TEX files - zdrojov´e TEX soubory – print - verze pro tisk
37