Sie sind auf Seite 1von 6

Ngy 24 thng 1 nm 2014

TRANG CH GII THIU LIN H

[Java] Vit tr chi Tic Tac Toe Tp ch Lp trnh


POSTS COMMENTS

TP CH LP TRNH
Agile Di ng Thit k Ch khc

Search this website

Search

[Java] Vit tr chi Tic Tac Toe


NOVEMBER 26, 2012 BY NGUYN KHC NHT 1 COMMENT

BI VIT GN Y
Th lnh ngh #18: Chm m chc (SMCRemote phn 8) M sch: Tn c ngha Th lnh ngh #20: Chng gng -1(SMCRemote phn 10) Th lnh ngh #19: Kin nhn (SMCRemote Phn 9) Th lnh ngh #17: Gi bo k (SMCRemote phn 7)

8 Votes

Gii thiu
Tic Tac Toe l mt tr chi kh ph bin dng vit trn bn c giy c 9 . Hai ngi chi, mt ngi dng k hiu O, ngi kia dng k hiu X, ln lt in k hiu ca mnh vo cc . Ngi thng cuc l ngi u tin to c mt dy 3 k hiu ca mnh theo cc chiu ngang, dc hay cho u c. Nu sau khi lp y cc trng m vn khng c ai t c mt dy 3 thng hng th s l ha. Hnh sau m t 3 trng hp v d:

BI VIT NG CH
To Layout n gin vi DIV v CSS M sch: Tn c ngha 7 bc m port 1433 cho MS SQL Server

(a) Ngi chi X thng (b) C ha (c) Ngi chi O thng Bi vit ny s gii thiu vi cc bn gii php thit k v trin khai tr chi ny trong Java. y l gii php c gii thiu bi Daniel Liang trong cun Introduction to Java Programming.

Ty bin ListView trong Android 10 cch hay tr thnh mt lp trnh vin gii

Phn tch v thit k


Nhng v d m bn va nhn thy trn ch th hin nhng hnh vi n gin v c th d dng m hnh ha bng cc lp, nhng ngoi ra th hnh vi ca tr chi Tic Tac Toe cn c mt s im khc phc tp hn th. c th to ra c cc lp m phng cc hnh vi ny, chng ta s cn phi nghin cu v hiu k hn v tr chi ny. Gi s rng ban u th tt c cc (cell) u trng, v ngi chi th nht dng k hiu X, ngi chi th hai dng k hiu O. thc hin mt bc i th ngi chi s tr chut n mt v nhn chut vo , nu cn trng th k hiu O (hoc X) s c in vo , nu khng cn trng th nc i ny s khng c ghi nhn. Vi nhng m t nh trn, ta thy rng mi c l mt i tng GUI (Graphic User Interface Giao din ha Ngi dng) m c th x l s kin nhn chut v hin th cc k hiu. i tng ny c th l mt nt (button) hoc l mt bng (panel). Vic v trn mt panel s l linh hot hn nhiu so vi vic v trn mt button, bi v trn mt panel th ta c th v cc k hin X v O vi bt k kch thc no m ta mong mun, cn trn mt button th ta ch c th hin th cc k hiu nh l mt nhn k t (text label). V l do chng ta s s dng mt panel m phng mt ca bn c. Lm th no chng ta c th bit c trng thi ca mi (trng, X, hay O)? Trong lp Cell chng ta s s dng mt thuc tnh c tn token vi kiu d liu l char. Lp Cell c nhim v v k hiu khi mt trng c nhn chut. V Follow vy chng ta cn phi vit mt on m lng nghe s kin MouseEvent v mt on m khc v cc k hiu X hoc O. Lp Cell ny c th Tp c nh Follow chngha Lpnh hnh sau:

PHN HI MI
hakisaman on JavaScript v lp trnh hng hakisaman on Gii thiu v cch ci t Yu Yu on Hello world trn Windows Phone Nha on To ng dng Web chy offline taincgc00760 on [Chia s] Con ng hc lp tr

LU TR
January 2014 December 2013 November 2013 October 2013

trnh

http://tapchilaptrinh.vn/2012/11/26/java-viet-tro-choi-tic-tac-toe/

1/6

Ngy 24 thng 1 nm 2014

[Java] Vit tr chi Tic Tac Toe Tp ch Lp trnh

Get every new post delivered to your Inbox.


Join 151 other followers

September 2013 August 2013 July 2013 June 2013 May 2013 April 2013 March 2013 February 2013 January 2013 December 2012 November 2012

Enter your email address


Sign me up
Pow ered by WordPress.com

Lp Cell v k hiu trong mt


October 2012

- token: K hiu c dng trong cc , mc nh l - getToken(): Tr v k hiu hin ti ca . - setToken(token: char): Nhp k hiu mi cho . - paintComponent(g: Graphics): V k hiu trong . - mouseClicked(e: MouseEvent): X l s kin nhn chut ca . Bn c ca tr chi Tic Tac Toe bao gm 9 , c to ra bng cu lnh new Cell[3][3]. xc nh c lt chi ca ngi chi th chng ta s s dng mt bin c tn l whoseTurn vi kiu d liu l char. Ban u th whoseTurn s c gi tr l X, sau chuyn thnh O v c thay i ln lt gia hai gi tr mi khi cc mi c nh. Khi tr chi kt thc th gi tr ca whoseTurn s chuyn thnh . Lm sao bit c tr chi kt thc hay cha? C ai thng cuc hay khng? V ai l ngi thng, nu c? Chng ta c th to mt phng thc c tn l isWon(char token) kim tra xem mt ngi chi vi k hiu token thng cuc hay cha, v mt phng thc khc l isFull() kim tra xem liu tt c cc u c nh hay cha. Vi nhng phn tch nh vy, chng ta thy l r ra 2 lp. Lp u tin l Cell, vi chc nng l iu khin cc thao tc cho mt . Lp th hai l TicTacToe c chc nng l thc hin ton b tr chi v x l tt c cc . Mi quan h gia hai lp ny c th hin trong hnh di y:

September 2012 August 2012 July 2012

MY TH

.NET Agile Android CMS


framework

coding dojo; collection

ci tin; m ngun; refactoring; code danh


Drupal giao din hello world HTML HTML5 hc lp trnh java javascript Joomla jquery
sch lin kt jtable

CSS CSS3 Cn gia DIV

kata; coding dojo; cocodojo; s la m; roman numeral kim


th k nng giao tip k nng mm
Layout Lean Manufacturing Lean Programming linh

hot LinkedList List

lp trnh Lp trnh tinh gn lp trnh vin


Metro Metro style MongoDB MySQL
mo Netbeans Netbeans Plugin ngh hot ngn ng lp trnh OOP

PHP Pht

trin hng kim th phn mm Responsive Web Design Sort() Swing tableless test testing Thit

k thread Th thut

tdd

tin ha typography ti s dng Tp Ch Lp Trnh unit test Visual Studio 2010 Web

Windows Phone Windows

Phone 8 WordPress WP8


ng lc hc tp
Lp TicTacToe cha 9 - whoseTurn: Ch ra lt chi ca ngi chi, ban u l X. - cell: Mt mng 2 chiu 3 x 3 cc . - jlblStatus : Mt nhn (label) hin th trng thi ca game.
http://tapchilaptrinh.vn/2012/11/26/java-viet-tro-choi-tic-tac-toe/

WPF XAML XAMPP xp c sch

THEO DI QUA EMAIL


Nhp a ch email ca bn nhn thng bo cc bi vit mi ca TCLT.

2/6

Ngy 24 thng 1 nm 2014

[Java] Vit tr chi Tic Tac Toe Tp ch Lp trnh


Join 151 other followers

- TicTacToe(): Khi to giao din ngi dng. - isFull(): Tr v gi tr true nu tt c cc u c nh. - isWon(token: char): Tr v gi tr true nu ngi chi c k hiu token thng. Vi l do l lp Cell ch c dng trong lp TicTacToe nn n c th c nh ngha bn trong lp TicTacToe (inner class). Chi tit ca chng trnh c th hin bn di:

Theo di

Tp Ch Lp Trnh

1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 4 0 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 5 0 5 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 6 0 6 1 6 2 6 3 6 4 6 5 6 6 6 7 6 8 6 9 7 0 7 1 7 2 7 3 7 4

i m p o r tj a v a . a w t . * ; i m p o r tj a v a . a w t . e v e n t . * ; i m p o r tj a v a x . s w i n g . * ; i m p o r tj a v a x . s w i n g . b o r d e r . L i n e B o r d e r ; p u b l i cc l a s sT i c T a c T o ee x t e n d sJ A p p l e t{ / /C h r al tc h ic an g ic h i ,g i t r b a n ul X p r i v a t ec h a rw h o s e T u r n=' X ' ; / /K h it oc c p r i v a t eC e l l [ ] [ ]c e l l s= n e wC e l l [ 3 ] [ 3 ] ; / /K h it ol a b e lt r n gt h ic at r c h i p r i v a t eJ L a b e lj l b l S t a t u s=n e wJ L a b e l ( " X ' st u r nt op l a y " ) ; / * *I n i t i a l i z eU I* / p u b l i cT i c T a c T o e ( ){ / /P a n e lpc h ac c J P a n e lp=n e wJ P a n e l ( n e wG r i d L a y o u t ( 3 ,3 ,0 ,0 ) ) ; f o r( i n ti=0 ;i<3 ;i + + ) f o r( i n tj=0 ;j<3 ;j + + ) p . a d d ( c e l l s [ i ] [ j ]=n e wC e l l ( ) ) ; / /T h a y i n gv i nc ac cv l a b e lt r n gt h i p . s e t B o r d e r ( n e wL i n e B o r d e r ( C o l o r . r e d ,1 ) ) ; j l b l S t a t u s . s e t B o r d e r ( n e wL i n e B o r d e r ( C o l o r . y e l l o w ,1 ) ) ; / / ap a n e lv l a b e lv ot r o n ga p p l e t a d d ( p ,B o r d e r L a y o u t . C E N T E R ) ; a d d ( j l b l S t a t u s ,B o r d e r L a y o u t . S O U T H ) ;

Thch

2.722 ngi thch Tp Ch Lp Trnh.

Plugin x hi ca Facebook

TRANG LIN KT
Hanoi Scrum Tn's Notes FU Agile DevMaster

/ * * X c n hx e ml i ut tc c c u c n hh a yc h a * / p u b l i cb o o l e a ni s F u l l ( ){ f o r( i n ti=0 ;i<3 ;i + + ) f o r( i n tj=0 ;j<3 ;j + + ) i f( c e l l s [ i ] [ j ] . g e t T o k e n ( )= ='' ) r e t u r nf a l s e ; } r e t u r nt r u e ;

/ * * X c n hx e ml i un g ic h iv ik h i nt o k e n t h n gh a yc h a * / p u b l i cb o o l e a ni s W o n ( c h a rt o k e n ){ f o r( i n ti=0 ;i<3 ;i + + ) i f( ( c e l l s [ i ] [ 0 ] . g e t T o k e n ( )= =t o k e n ) & &( c e l l s [ i ] [ 1 ] . g e t T o k e n ( )= =t o k e n ) & &( c e l l s [ i ] [ 2 ] . g e t T o k e n ( )= =t o k e n ) ){ r e t u r nt r u e ; } f o r( i n tj=0 ;j<3 ;j + + ) i f( ( c e l l s [ 0 ] [ j ] . g e t T o k e n ( )= = t o k e n ) & &( c e l l s [ 1 ] [ j ] . g e t T o k e n ( )= =t o k e n ) & &( c e l l s [ 2 ] [ j ] . g e t T o k e n ( )= =t o k e n ) ){ r e t u r nt r u e ; } i f( ( c e l l s [ 0 ] [ 0 ] . g e t T o k e n ( )= =t o k e n ) & &( c e l l s [ 1 ] [ 1 ] . g e t T o k e n ( )= =t o k e n ) & &( c e l l s [ 2 ] [ 2 ] . g e t T o k e n ( )= =t o k e n ) ){ r e t u r nt r u e ; } i f( ( c e l l s [ 0 ] [ 2 ] . g e t T o k e n ( )= =t o k e n ) & &( c e l l s [ 1 ] [ 1 ] . g e t T o k e n ( )= =t o k e n ) & &( c e l l s [ 2 ] [ 0 ] . g e t T o k e n ( )= =t o k e n ) ){ r e t u r nt r u e ; }
3/6

http://tapchilaptrinh.vn/2012/11/26/java-viet-tro-choi-tic-tac-toe/

Ngy 24 thng 1 nm 2014

[Java] Vit tr chi Tic Tac Toe Tp ch Lp trnh

7 5 7 6 7 7 7 8 7 9 8 0 8 1 8 2 8 3 8 4 8 5 8 6 8 7 8 8 8 9 9 0 9 1 9 2 9 3 9 4 9 5 9 6 9 7 9 8 9 9 1 0 0 1 0 1 1 0 2 1 0 3 1 0 4 1 0 5 1 0 6 1 0 7 1 0 8 1 0 9 1 1 0 1 1 1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 1 7 1 1 8 1 1 9 1 2 0 1 2 1 1 2 2 1 2 3 1 2 4 1 2 5 1 2 6 1 2 7 1 2 8 1 2 9 1 3 0 1 3 1 1 3 2 1 3 3 1 3 4 1 3 5 1 3 6 1 3 7 1 3 8 1 3 9 1 4 0 1 4 1 1 4 2 1 4 3 1 4 4 1 4 5 1 4 6 1 4 7 1 4 8 1 4 9 1 5 0 1 5 1 1 5 2 1 5 3 1 5 4 1 5 5 1 5 6 1 5 7 1 5 8

r e t u r nf a l s e ;

/ /M ti n n e rc l a s s id i nc h om t p u b l i cc l a s sC e l le x t e n d sJ P a n e l{ / /K h i uc an y p r i v a t ec h a rt o k e n='' ; p u b l i cC e l l ( ){ s e t B o r d e r ( n e wL i n e B o r d e r ( C o l o r . b l a c k ,1 ) ) ;/ /T h a y i n gv i nc a a d d M o u s e L i s t e n e r ( n e wM y M o u s e L i s t e n e r ( ) ) ; / / n gk l i s t e n e r } / * * T r v k h i uc a * / p u b l i cc h a rg e t T o k e n ( ){ r e t u r nt o k e n ; } / * * N h pm tk h i um ic h o * / p u b l i cv o i ds e t T o k e n ( c h a rc ){ t o k e n=c ; r e p a i n t ( ) ; } / * * V * / p r o t e c t e dv o i dp a i n t C o m p o n e n t ( G r a p h i c sg ){ s u p e r . p a i n t C o m p o n e n t ( g ) ; i f( t o k e n= =' X ' ){ g . d r a w L i n e ( 1 0 ,1 0 ,g e t W i d t h ( )-1 0 ,g e t H e i g h t ( )-1 0 ) ; g . d r a w L i n e ( g e t W i d t h ( )-1 0 ,1 0 ,1 0 ,g e t H e i g h t ( )-1 0 ) ; } e l s ei f( t o k e n= =' O ' ){ g . d r a w O v a l ( 1 0 ,1 0 ,g e t W i d t h ( )-2 0 ,g e t H e i g h t ( )-2 0 ) ; }

p r i v a t ec l a s sM y M o u s e L i s t e n e re x t e n d sM o u s e A d a p t e r{ / * *X l s k i nn h nc h u tt r o n gm t* / p u b l i cv o i dm o u s e C l i c k e d ( M o u s e E v e n te ){ / /N um tc nt r n gv t r c h iv nc h ak tt h c i f( t o k e n= =''& &w h o s e T u r n! ='' ){ s e t T o k e n ( w h o s e T u r n ) ;/ /T h a y ik h i uc h o / /K i mt r at r n gt h ic at r c h i i f( i s W o n ( w h o s e T u r n ) ){ j l b l S t a t u s . s e t T e x t ( w h o s e T u r n+"w o n !T h eg a m ei so v e r " ) ; w h o s e T u r n='' ;/ /T r c h ik tt h c } e l s ei f( i s F u l l ( ) ){ j l b l S t a t u s . s e t T e x t ( " D r a w !T h eg a m ei so v e r " ) ; w h o s e T u r n='' ;/ /T r c h ik tt h c } e l s e{ / /T h a y il tc h i w h o s e T u r n=( w h o s e T u r n= =' X ' )?' O ' :' X ' ; / /H i nt h l tc h i j l b l S t a t u s . s e t T e x t ( w h o s e T u r n+" ' st u r n " ) ; }

/ * * P h n gt h cm a i n ( )c h op h pa p p l e tn yc h yn h l m t n gd n g * / p u b l i cs t a t i cv o i dm a i n ( S t r i n g [ ]a r g s ){ / /T om tf r a m e J F r a m ef r a m e=n e wJ F r a m e ( " T i c T a c T o e " ) ; / /T om tt h h i nc aa p p l e t T i c T a c T o ea p p l e t=n e wT i c T a c T o e ( ) ; / /T h mt h h i nc aa p p l e tv ot r o n gf r a m e f r a m e . a d d ( a p p l e t ,B o r d e r L a y o u t . C E N T E R ) ; / /H i nt h f r a m e


4/6

http://tapchilaptrinh.vn/2012/11/26/java-viet-tro-choi-tic-tac-toe/

Ngy 24 thng 1 nm 2014

[Java] Vit tr chi Tic Tac Toe Tp ch Lp trnh

1 5 9 1 6 0 1 6 1 1 6 2 1 6 3

f r a m e . s e t S i z e ( 3 0 0 ,3 0 0 ) ; f r a m e . s e t D e f a u l t C l o s e O p e r a t i o n ( J F r a m e . E X I T _ O N _ C L O S E ) ; f r a m e . s e t V i s i b l e ( t r u e ) ;

Kt lun
Lp TicTacToe khi to giao din ngi dng vi 9 t trong mt panel vi GridLayout. Mt label c tn l jlblStatus c s dng hin th trng thi ca tr chi. Bin whoeTurn c s dng lu k hiu tip theo s c gn cho cc . Phng thc isFull() v isWon() c s dng kim tra trng thi ca tr chi. Bi v lp Cell l inner class ca lp TicTacToe nn bin whoseTurn v cc phng thc isFull() v isWon() ca lp TicTacToe u c th s dng c trong lp Cell. Inner class gip cho chng trnh tr nn n gin v ngn gn hn. Nu lp Cell khng c khai bo l inner class ca lp TicTacToe th chng ta cn phi truyn mt i tng ca TicTacToe vo trong lp Cell lp ny c th s dng c cc bin v phng thc ca lp TicTacToe . Bn c th th vit li chng trnh ny m khng s dng inner class. S kin MouseEvent c ng k cho tng , nu mt trng c nhn chut trong khi tr chi vn cha kt thc th k hiu hin ti s c t cho . Nu tr chi kt thc, bin whoseTurn s c gn gi tr , cn nu khng th whoseTurn s chuyn sang gi tr ca lt chi mi.

Mo:
Hy s dng phng php tip cn tng cng (incremental approach) trong vic pht trin v kim th mt d n Java thuc loi ny. Chng trnh trn c th c chia thnh 5 bc nh sau:
1. Dng giao din ngi dng v hin th k hiu X trong mt c nh. 2. To cho cc kh nng hin th k hiu X mi khi mt no c nhn chut. 3. Kt hp gia hai ngi chi sao cho cc k hiu X v O c hin th thay phin nhau. 4. Kim tra xem mt ngi chi thng hay cha, hoc l tt c cc u c

nh. 5. Hin th thng bo trn label trng thi sau mi nc i ca ngi chi.
Chia s:

Like this:

Like
One blogger likes this.

Related Vai tr ca nh pht trin i v In "Android"

Ngun gc cc c ch giao tip In "K nng giao tip"

C phi thit k cht? In "Agile"

FILED UNDER: JAVA

TAGGED WITH: C CA RO, C CA RO TRONG JAVA, GAME, GAME TRONG JAVA, THIT

K GAME, TIC TAC TOE, TR CHI

[Kata] PokerHands

Gii thiu ngn v Code Retreat

Comments
hien says: November 5, 2013 at 10:27 pm

Rate This

http://tapchilaptrinh.vn/2012/11/26/java-viet-tro-choi-tic-tac-toe/

5/6

Ngy 24 thng 1 nm 2014

[Java] Vit tr chi Tic Tac Toe Tp ch Lp trnh

bi vit ca a rt d hiu, nhm e lm game d mn.mong a c bi vit hng dn ! cm n a nhiu Reply

Leave a Reply
Enter your comment here...

DANH MC
Agile Android Windows Phone

TM KIM
Ni dung c pht hnh theo Search this website Search giy php CC BY-NC 3.0.

RETURN TO TOP OF PAGE

BLOG AT WORDPRESS.COM. CUSTOMIZED MAGAZINE THEME.

http://tapchilaptrinh.vn/2012/11/26/java-viet-tro-choi-tic-tac-toe/

6/6

Das könnte Ihnen auch gefallen