Moderní programování : pro začátečníky [2. vyd. ed.] 9788090395145, 8090395147, 9788090395152, 8090395155

261 79 133MB

Czech Pages [95] Year 2008

Report DMCA / Copyright

DOWNLOAD FILE

Polecaj historie

Moderní programování : pro začátečníky [2. vyd. ed.]
 9788090395145, 8090395147, 9788090395152, 8090395155

Citation preview

Mgr. l{trtlcli Vyslrrrrl, I'lr l) l,

.rl'.r,1

vcntcnr Mlilr (Jl( r' I'rvt' l l'l | Í\1./l l v Brně. Pfisotlí jltl Start WithouÍ Jlcbugginq, pŤípadně Build > Build solution (sestavení bez spuštění). PŤi studiu programování se do složky bin většinou ani nemusíte obtěžovat, ne-

|ltlt' vyvojové prostŤedí již poskytuje komfortní možnost spuštěníprogramu (již rtč.| Tab order čísílka t l)esignent zmizi. l*ť li

''Eťekty.....

Problém s podtrženímje, doufám, vyŤešen, je tu však problém další'Když zkusíte klávesové zkratky Alt+J, Alt+P, Alt+A, zŤejmě zjisÍíte,že nefungují nebo že fungují jen částečně.Spuštěny program zavÍete a pŤečtete si, v čem je zádrhel. Nefunkčnost souvisí s otázkou poíadítabuldtora, která vás bude zajímat pokaždé,když bude mít program více ovládacích prvkŮ a budete Ťešit jeho ovládání z klávesnice. Tabulátor je klávesa, která tradičně sloužík pohybu mezi jednotliqÍmi ovláda. cími prvky, jeŽ mohou pŤebírat vstup z klávesnice. K:dyž uživatel stiskne tabulátor,

Ííkáfokus) na dalšíovládací prvek. PoŤadí, ve kterém jsou jednotlivé ovládací prvky aktivovány, se nazyxá poiadím tabulátoru' Intemě to funguje tak, Že kaŽdy ovládací prvek má vlastnost TabTndex, podle jejíž hodnoty se poŤadítabu|átoru určuje' ProstŤedí Visual C# pŤiŤazuje ovládacím prvkŮm hodnoty Tablndex podle poŤadí, ve kterém jste je pŤetáhli na povrch Designeru. Pokud jste prvky vy.tváŤeli v poŤadí,ježjsemvám navrhl v pŤedchozím oddíle textu, budou hodnotyjejich vlastností TabTndex takové, jak je ukazuje prostŤední sloupec v Tab. 8. Všimněte si' že číslovánízačínánulou a ne jedničkou. To je v jazyce C# běŽná věc, v něm se od nuly čís|uievšechno.

i i

&z

|iIl'rvcslrlcc vlrlŽi|' tltlt|ívcile sc tllt kttttct'ttčt'Ilttit.e tIir l)rltIltlLtr

|}

lTtno: fEl

I

i i i i

pŤesune se zaměŤení klávesnice (někdy se

NcrIlrI"-í-li sc viiltt zttlt|i

nová hodnota

0

colz'TmÁnn

vvPfreJrar\J!uJq

Proveďte popsané změnyl a program spusťte. První písmena všech tňí popiskťl by měla bft podtržená. Pokud podtržená nejsou, není zŤejmě ztada ve vašem programu' ale v nastavení Windows. Ta b1|'vají mnohdy nastaveny tak, Že do stisknutí klávesy Alt podtrženíznakťr skr.fuají. Konkrétně ve Windows XP toto nastavení najdete, kdyŽ prav1;zm tlačítkemklepnete na p|ochu, z kontextové nabídky vyberete Vlastn,osti, v okně, jeŽ se objeví' klepnete na kartu ,,Vzhled.. a v ní na tlačítko

l

pťtvodní hodnota 't'aDJ,nae)
délkaoráhyje vložen konecHry tedy nabude hodnotyLrue,kdyždoběhlbíl:í/kuĚ,nebokdyždoběhlčern;fkriř,nebokdyždo-

operátor I

l , kte{.Í

běhli oba.

::jÍ:::Íi:";;il'""'ietoč...,Ý

nlimil:sii*;T::. po1erTménoBí1

po.LrcKolJl ry

II

tf (po1íčkoČernÝ> po1íčkoBí1) .MesSageBox.Show(,zuíta,il kťli,, + po1eJménoČerny.rext),

"'i3=

>

; ll

// z|t.stl., jest7l hra už neekoněila bool konecHry - políčkoBíl > dé1kaDráhy | políčkoČern > d'élkaDráhy; íf (konecHry)

., )

l\/

lr-cKoLerny

l!

t]-ačítkoHra j černy. Enab-Led. = false; .i;;;;k;il;;j;;í;:Enabled. = truoi

{

I r .k^H]

I

// Neehej hrái- d,ruhého.

",':lJJ]nJ".".Ér'.'i,

ll h^

{

:;'"""""::::' políČkočern!,+= hozenočern ; xčern1i += hozenoČern * šíĚkaPolíčk :a.. dráha.Refresh( ) ;

(( ,,;:ft,r"E?:,] ,

)oběhl někter! z koní

operátor

|

funguje jako

',alespoř

jeden... Proměnná

| (,,alespoř jeden..) se ttazyvá také operdtorem logického součtu.

Kromě něj existuje ještéoperdtor logického soačinu && (,,a současně..). Fungování obou těchto logick!,ch operuÍtor ,které ze dvou hodnot t1pu boo1 ,,vyrábějí..novou hodnotu typu bool, pŤibližuje obr' 94 aTab.33,Tab.34.

true/fa1se

true/false obr. 94 Binární logickf operátor jako ,'černá skŤířka..

164

I

a lÍb

b t-t

^^

F-t

^^

true true

{-t

^^

!afĎe

Erue F-t

^^

Ďe

!afĎe

true

a&&b

b !al

true

F-t

^^

Erue 4-f

()5

^^

true

false fa1 se fa1 se

Lrue

Tab. 33 Logickf součet (,,alespoř jeden..)

Tab.34 Logickf součin (,,a současně.|)

operátory logického součtu a logického součinu jsou tzv. bin rní operáÍoty, Novou hodnotu sestavují ze dvou hodnot qfchozích. Kromě nich existuje ještě jedon logick:/ operátor undrní,jenžpracuje sjedinou vstupní hodnotou (obr. 95). JednÁ r o operdtor negace !, kteď z hodnoty fa1se v1robí true a naopak (Tab. 35). a F-f LalĎe ^^

true obr. 95 Unární logickf operátor

(negace)

true LaaĎe

Tab. 35 Negace (,,není pravda, že..)

Podobně jako v pŤípadě aritmetick;Ích operátoru je i v pŤípadě operátorri logíc. hfch driležitá otázka priority operátorú. V aritmetice má násobení pŤednost pŤed

sčítáním,a stejně tak v logice má aa pŤednost pŤed | | . operátor negace je dokonco ještě ,,silnější..než&&. Pokud chcete poŤadí vyhodnocení nějakého logického vyrazu

Obr. 96 Hra Ruleta

Co se b-Íčev..fpočtu l her, platí, že pokud se sázka v konkétním poli ukáže jako pravdivá, dostane uživatel vsazeny obnos zpět a ještě navíc vfhru určenou násobe. ním vsazené částky koeficientem ze schématu na obr. 97. JestIiže se ale sázka ukáže jako nepravdivá, propadá vsazeny obnos ve prospěch kasina.

změnit' použijte závorky, jako je použiváte v aritmetice, když se má něco nejprve sečíst,a teprve potom vynásobit.

.H.nrn,Í..

Rulern Druhou hrou, kterou v této kapitole vytvoŤíme, bude zjednodušená podoba Rulety (obr. 96). Uživatel na počátku dostane pŤidělen obnos 10 000,- Kč, ze kterého čerpá prostŤedky k sázkám. Sázet m že jak na jednotlivá čísla0-6, tak na jejich kombinace (všechna lichá, všechna červená atd.). Sázku provede tak, že do pŤíslušnéhotexto. vého pole vepíše vsazeny obnos. Velké tlačítkosimuluje kolo rulety. Po svém stisku na vteŤinu zobrazí nápis ,,Točíse.. a poté jeďno z čísel0-6, na kterém se ,,kulička.. zastav1la' Na základě čísla,které padlo, je pak vyhodnocena uživatelova qihra a aktlallzován stav jeho írčtu. oproti skutečné ruletě je zde zredukován počet čísela také nejsou možnésázky

na dvojice, trojice a čtveŤice pŤilehlj'ch čísel.Varianta s pln]/m počtem čísel,tj. 0-36, bude studována v pokračovánítéto učebnice. V futo chvíli ještě nemáte v rukou pro. stŤedky, jak ji elegantně naprogramovat.

.

''

ffiffiffiffi ...'Lig'há.'',....

ffiffiffi ''&áv*ná.

ffiffiffi

obr.

97 PŤehled

v her

l(r

166

V]fpočet si ilustrujeme na pŤíkladu z Obr. 9 , kdy trŽivatcl vsat|i| .l(X)' lr't. Itit číslo2, 1000,- Kč na červená číslaa 200, Kč na číslaz dolní ptl|ovinv L Jak se vyhodnotí sázka 300,- Kč na dvojku? Pokud by ruleta ttkázit|lr trrr,; ku, uživateli by se těch 300,- Kč vrátilo a ještě by navíc získal vylrrrr 5 . ltttt : 1500, Kč. Na obr. 96 ale ruleta ukázalapětku' Částka 300. te.t|y 1rr'rl1rlrrlrr kasinu.

2.

3.

4.

Jak se vyhodnotí sázka l000,. Kč na červená čísla(v našem pŤípadčČ.islll '.' 5 a 6)? Padla pětka a ta je červená, L]živateli se tedy 1000,- Kč vrálí ir lc:'tr. navíc ziská vjuhru 1xl000 : 1000,- Kč.

1

Z textovÝch

polí do

V}poČet celkové sázky součtem Všech vsazenlch peněz

Celková

Jak se vyhodnotí sázka 200'- Kč na číslazdolní poloviny (čísla4, 5 lt (r;,, Padla pětka, která patŤído dolní poloviny. UŽivateli se tedy 200,- Kč vrlrll a ještě navíc získá v hru 1x200 : 200,- Kč. Celkem tedy uživatel pŤišel o 300,- Kč, ale získal 1000,- Kč a 200' Kt. Stav jeho Írčtuse tedy změní o -300 + 1000 + 2OO _900'- do plusu. Miizt,

oznámit uŽivateli, že

Na,,kole.. zobrazit nápis

musí sníŽítsázku

ToČíse.' a chvíli

Vylosovat azobrazit

čís|oz rozmezí o až 6

zase sázeÍ a zase roztočit kolo rulety'

V

hra

-

celková

sázka s minusem

ogsluHR''KoLA

RULETYíÍ

Jaké čís1opadlo?

Vprogramu bude víceméně jediná obslužná metoda, a to obsluha stisku tlačítlilr

nahrazujícího kolo rulety, ve které pújde pŤedevším o v]fpočet v]fhry. Její fungovlirrt zachycuje qivojoqf diagram na obr. 98. Všimněte si, že qfhry v diagrarttrr

neodpovídají koeficientum

z

Obr' 97' VŠimněte si, že jsou vriči nim

zvětŠcrry

jednonásobek vsazené částky. Jedná se o určity trik' kteq.f hned vysvětlím. Když padne napŤíklad jednička, tak bychom jako v]/hru měli určit pětinásobe li částky vsazené na jedničce a od ní odečístprohru jako součet částek na všech ostirl ních číslech.Podobně bychom měli postupovat,když padne dvojka, trojka a tak d1rlc' Snazším Ěešením je na začátku započitat veškerou vsazenou částku jako prohru a k rri pouze pŤidávat vyhry. Jelikož však částky vsazené na vyhrávajících textovych polí = 1 a padlo = +-t

^^

1

padTo = í padTc: