You are on page 1of 23

Project 1: Game Puzzle Khoa CNTT H Bch Khoa H Ni

Page 1


Mc lc
CHNG 1. GII THIU GAME PUZZLE ................................................................................... 3
1.1. Gii thiu Game Puzzle ......................................................................................................... 3
CHNG 2. GII THIU V CNG NGH JAVA ....................................................................... 4
2.1. Gii thiu v gi AWT ......................................................................................................... 4
2.2. Container ............................................................................................................................ 5
2.2.1. Frame .......................................................................................................................... 5
2.2.2. Panel ........................................................................................................................... 5
2.2.3. Thnh phn (Component) ............................................................................................ 6
2.2.4. Nhn (Label) ................................................................................................................ 6
2.2.5. vn bn (TextField) .................................................................................................. 6
2.2.6. Nt nhn (Button) ........................................................................................................ 6
2.2.7. RadioButton, Checkbox ............................................................................................... 6
2.2.8. Danh sch la chn (ComboBox) ................................................................................ 6
2.2.9. GridLayout Manager .................................................................................................... 6
2.2.10. Thc n (Menu) ..................................................................................................... 6
2.3. X l cc s kin ................................................................................................................ 7
2.4. Gi Java Swing ..................................................................................................................... 8
2.4.1. c n pn wn v pn cp n ......................................................... 8
2.4.2. n n nn v n c c wn ........................................................... 9
2.4.3. dn e ......................................................................................................... 10
CHNG 3. PHN TCH THIT K ........................................................................................... 11
3.1. Phn tch Game Puzzle ........................................................................................................ 11
3.1.1. 8 Puzzle .................................................................................................................. 11
3.1.2. 15-puzzle ................................................................................................................... 12
3.2. Phn tch Project .............................................................................................................. 15
3.3. M v on code on cn n .............................................................................. 18
3.4. Giao din c c ...................................................................................................... 20
CHNG 4. KT LU V HNG PHT TRIN ................................................................... 22

Project 1: Game Puzzle Khoa CNTT H Bch Khoa H Ni

Page 2


LI NI U
Trong th gii cng ngh pht trin hin nay th Game l mt loi hnh gii tr c sc
ht v cng ln i vi nhng ngi s dng cng ngh ngy nay, c bit l gii tr. Do
ngy cng nhiu th loi game c hnh thnh nh game nhp vai, game hnh ng, game
tr tu,.
Vi s hnh thnh ca Internet dn n s xut hin ca Game Online. Vic kinh
doanh cc th loi Game Online ny gip cho nh kinh doanh c th kim c nhng doanh
thu khng l nu s lng ngi chi ng. V vy ngnh game c th ni l rt pht trin v
c nhiu ngi ngy cng a chung hn. Rt nhiu cng ty ln chuyn v sn xut game
c thnh lp. Hin nay c rt nhiu ngi theo ui ngnh Cng ngh thng tin mun theo
ui ngnh ny. Nhng trc ht lm c nhng tr chi vi quy m ln th chng ta
cn phi hc v lm nhng game nh v c bn trc dn nm chc nhng kin thc v
tch ly thm kinh nhim cho bn thn. cng l l do em chn ti lm tr chi Puzzle
v s dng ngn ng lp trnh Java. Do mi tip cn ngn ng lp trnh ny v lp trnh
game nn chng trnh cn nhiu thiu st, mong thy gip v gp em c th hon
thin tt hn.
hon thnh c tr chi ny ngoi s c gng ca bn thn em xin cm n.
Thy Nguyn Bnh Minh Ging vin trng i hc Bch Khoa H Ni
nhit tnh gip em hon thnh ti ny.
Cc bn trong lp gip em ln tng mi cho tr chi thm phong ph
hn.
Project 1: Game Puzzle Khoa CNTT H Bch Khoa H Ni

Page 3


CHNG 1. GII THIU GAME PUZZLE
1.1. Gii thiu Game Puzzle
Game Puzzle (cn gi l Gem Puzzle , Boss Puzzle , Game of Fifteen , Mystic Square
.) l tr chi thuc th loi game tr tu. Tr chi ny cng ging nh cc tr chi xp hnh
khc, u tin vi kch thc tr chi l 9 v c nh s ngu nhin t 1 n 8 v s 9
s c n i. Nhim v ca ngi chi l phi a chng v kiu lp ngi (ln dn t tri
qua phi v t trn xung di nh hnh bn di.


Hnh 1: Trng thi khi to ngu nhin

Hnh 2: Trng thi ch

Ngi chi s dng chut dch chuyn cc s hoc hnh nh khi cnh n l
trng i v tr vi . kh ca tr chi c gii hn bi thi gian chi hoc khng
c gii hn g c ty vo ngi chi la chn. i vi la chn chi theo thi gian, khi ht
thi gian m ngi chi cha hon thnh th s b x l thua cuc.
Ngi chi c gng xp cc v ng trng thi ch m dng cng t s ln dch
chuyn cng tt. Khi ngi chi c s ln dch chuyn t nht th s c ghi tn vo danh
sch ngi ng u tr chi.
Chng trnh c xy dng trn ngn ng lp trnh Java. Ch yu l s dng lp
trnh GUI s dng AWT v Swing trong Java.
Project 1: Game Puzzle Khoa CNTT H Bch Khoa H Ni

Page 4


CHNG 2. GII THIU V CNG NGH JAVA
2.1. Gii thiu v gi AWT
Cc ng dng phn mm hin nay v cng thn thin v c trnh by nhiu mn
hnh giao din ha p mt. Cc ngn ng lp trnh hin nay c cung cp cc i tng
ha, chng c th c iu khin bi ngi lp trnh vin, hay bi ngi s dng. Mt
trong s nhng kt qu quan trng nht chnh l cc ngn ng hin nay c da trn Giao
din ngi dng ha (Graphical User Interface GUI).
GUI cung cp chc nng nhp liu theo cch thn thin vi ngi dng. GUI bin i
t ng dng n ng dng v c th cha nhiu iu khin nh textbox, label, listbox,
combobox hay cc iu khin khc. Cc ngn ng lp trnh khc nhau cung cp nhiu cch
khc nhau to GUI. Cc phn mm ging nh VB hay VC++ c th cung cp chc nng
ko v th trong khi phn mm ging nh C++ yu cu ngi lp trnh phi vit ton b
m xy dng mt GUI.
Mt phn t (element) GUI c thit lp bng cch s dng th tc sau:
To element, instance, checkbox, label hay listbox
Xc nh s xut hin khi u ca cc phn t.
Quyt nh xem phn t c nn chm gi v tr c ch ra hay khng.
Thm phn t vo giao din trn mn hnh
Mt thnh phn (component) GUI l mt i tng trc quan. Ngi dng tng tc
vi i tng ny thng qua con tr chut hay bn phm. Cc thnh phn nh l button, label
v.vc th c nhn thy trn mn hnh. Bt k thao tc no p dng n tt c cc thnh
phn GUI u c tm thy trong lp i tng Component. to cc thnh phn GUI
ny, chng ta cn s dng cc lp tn ti trong gi java.awt.
AWT c ngha l Abstract Windowing Toolkit. AWT l mt b cc lp trong Java
cho php chng ta to ra mt GUI v chp nhn cc nhp liu ca ngi dng thng qua bn
phm v chut. AWT cung cp cc item khc nhau to mt GUI hiu qu v li cun
ngi s dng. Cc item ny c th l:
Thng cha (Container)
Thnh phn (Component)
Trnh qun l cc trnh by (Layout manager)
ha (Graphic)
Phng ch (Font)
Project 1: Game Puzzle Khoa CNTT H Bch Khoa H Ni

Page 5


S kin (Event)
Gi AWT cha cc lp, giao din v cc gi khc. Hnh sau y m t mt phn nh
ca h thng phn cp lp AWT.
2.2. Container
Container l vng m bn c th t cc thnh phn ca bn vo . Bt c vt g m
k tha t lp Container s l mt container. Applet l mt container, applet c dn xut
t panel, lp panel li c dn xut t lp Container.
Mt container c th cha nhiu phn t, cc phn t ny c th c v hay c t
mu ty thch. Bn hy xem container nh mt ca s. l ca s th phi c khung
(frame), pane, latch, hook v cc thnh phn c kch thc nh hn.
Gi java.awt cha mt lp gi l Container. Lp ny trc tip hay gin tip pht sinh
ra hai container c s dng ph bit nht l Frame v Panel.
Frame v Panel l cc container thng c s dng. Frame l cc ca s c tch
ring nhau nhng ngc li panel l cc vng c cha trong mt ca s. Panel khng c
cc ng vin, chng c trnh by trong mt ca s do trnh duyt hay appletviewer cung
cp. Appletviewer l mt cng c c JDK h tr xem cc applet. Frame l lp con ca
Window. Chng c trnh by trong mt ca s c lp, ca s ny c cc ng vin xung
quanh.
2.2.1. Frame
Frame khng ph thuc vo applet v trnh duyt. Frame c th hot ng nh mt
container hay nh mt thnh phn (component). Lp Frame c s dng cho php chng
ta c th nhn thy c thng qua phm vi lp. lm c iu cn phn s dng hai
phng thc nm trong phng thc main: setSize() v setVisible().
2.2.2. Panel
Panel c s dng nhm mt s cc thnh phn li vi nhau. Trong chng trnh
Panel c ng dng nhm cc thnh phn nh cc mnh ghp vo mt nhm, cc la
chn ty chnh vo mt nhm,..
cng vic nhm c d dng v p hn c th s dng phng thc
GridLayout() trnh by nh mt bng Table.
Panel khng th nhn thy trc tip nn cn phi thm panel n mt frame. V vy ta
cn to mt Frame mi v thm Panel mi c to vo Frame .
Project 1: Game Puzzle Khoa CNTT H Bch Khoa H Ni

Page 6


2.2.3. Thnh phn (Component)
Mt Component c th c t trn giao din ngi dng, c th thay i kch thc
hay lm cho nhn thy c. V d nh trong chng trnh c s dng cc component nh
Label, Button, TextField, RadioButton,.
2.2.4. Nhn (Label)
Lp ny c s dng trnh by mt dy cc k t.
2.2.5. vn bn (TextField)
Mt TextField l mt vng ch cha mt dng n, trong vn bn c th c trnh
by hay c nhp vo bi ngi dng.
2.2.6. Nt nhn (Button)
Nt nhn hay cn gi l nt lnh l mt phn nguyn ca bt k GUI no. S dng
button l cc d nht chn cc tc ng ca ngi dng.
x l cc lnh ca Button sau khi c nhn cn phi s dng s kin ca
Button l ActionEvent.
2.2.7. RadioButton, Checkbox
RadioButton c s dng khi ngi dng tin hnh chn mt hay nhiu ty chn.
Ngi dng phi click trn cc RadioButton chn hay b chn chng.
Sau khi cc RadioButton v Checkbox c chn cc lnh c thc hin thng qua
s kin ActionEvent.
2.2.8. Danh sch la chn (ComboBox)
Dng trnh by mt danh sch cc chn la n ngi dng trn mi GUI. Ngi
dng c th click vo mt hay nhiu item t danh sch. Ngi dng c th to ComboBox
bng lnh hoc c th to bng phng php ko th nu dng cc cng c c h tr.
2.2.9. GridLayout Manager
GridLayout tr gip vic chia container vo trong li. Cc thnh phn c t
trong cc dng v cc ct. Mi khung li nn cha t nht mt thnh phn. Mt khung li
c s dng khi tt c cc thnh phn c cng kch thc.
GridLayout c ng dng chia Panel cha cc mnh ghp thnh danh sch ma
trn vung.
2.2.10. Thc n (Menu)
Ngn ng Java c mt tp hp cc lp i tng to cc menu. C hai loi menu
pull down v pop up. Menu lm cho ng dng ta xy dng d s dng hn. Ch duy nht
mt thanh menubar c t trong mt Frame. Menubar l mt thanh nm ngang c t
ti nh ca Frame. N lit k cc mc c chn khc nhau hay menu. Mt Menu c lp
Project 1: Game Puzzle Khoa CNTT H Bch Khoa H Ni

Page 7


c th cha cc mc chn con, cc mc con ny c gi l minuitem. Java cung cp cc
checkbox menuitem, chng c th c bt hay m, ph thuc vo trng thi.
2.3. X l cc s kin
Cc h thng GUI x l cc tng tc ngi dng vi s tr gip ca m hnh event
driven. Tng tc ca ngi dng c th l di chuyn chut, nhn phm, nh phm v.v Tt
c cc thao tc ny thit lp mt s kin ca mt vi kiu no .
Vic x l nhng s kin ny ph thuc vo ng dng. Abstract Windowing Toolkit
(AWT) x l mt vi s kin. Mi trng m cc ng dng ny c thi hnh v d nh
trnh duyt cng c th x l cc iu khin khc. Ngi lp trnh vin cn phi vit mt
hm x l s kin.
ng dng cn ng k mt hm x l s kin vi mt i tng. Hm x l s kin
ny s c gi bt c khi nao s kin tng ng pht sinh. JDK 1.2 lm vic theo m hnh
x l s kin ny.
Trong tin trnh ny, ng dng cho php bn ng k cc handler, hay gi l listener
vi cc i tng. Nhng handler ny t c c gi khi mt s kin thch hp pht sinh.
Mt Event Listener lng nghe mt s kin no m mt i tng thit lp. Ngha l
s lun phin gi phng thc x l s kin. Mi event listener cung cp cc phng thc x
l nhng s kin ny. Lp thi hnh listener cn phi nh ngha nhng phng thc ny.
Trong chng trnh c s dng lp s kin ActionEvent x l cc s kin nh
click chut vo mnh ghp, bt u tr chi, la chn cc RadioButton,..
Lp s kin
M t
ActionEvent Pht sinh khi mt Button c nhn, mt item, menu c chn
hoc nhp i.
AdjustmentEvent Pht sinh khi mt thanh Scrollbar c s dng.
ComponentEvent Pht sinh khi mt thnh phn thay i kch thc, di chuyn, b n
hay lm cho hot ng c.
FocusEvent Pht sinh khi mt thnh phn mt hay nhn focus t bn phm.
ItemEvent Pht sinh khi mt menu item c chn hay b chn. Mt
checkbox hay item trong danh sch c click.
WindowEvent Pht sinh khi mt ca s c kch hot, c ng, m hay thot.
TextEvent Pht sinh khi gi tr trong thnh phn text field hay text area b thay
i.
MouseEvent Pht sinh khi chut c di chuyn, click, ko hay th ra.
KeyEvent Pht sinh khi input c nhp t bn phm
Project 1: Game Puzzle Khoa CNTT H Bch Khoa H Ni

Page 8



2.4. Gi Java Swing
2.4.1. Cc thnh phn win v s phn cp ii hn.
Swing cung cp rt nhiu thnh phn GUI chun nh: buttons, lists, menus, v text
areas, l nhng thnh phn m bn s phi hp to nn GUI cho chng trnh ca bn.
Ngoi ra, cn c cc i tng cha nh windows v tool bars.
SwingApplication to 4 thnh phn Swing thng dng nh sau:
Mt frame, hoc mt ca s lm vic chnh (JFrame)
Mt panel, thng thng gi l pane (JPanel)
Mt button (JButton)
Mt label (JLabel)
Frame l i tng cha mc nh. is a top-level container. S hin din ca frame
nhm cung cp mt vng cc thnh phn khc thit lp s c mt ca mnh trn vng .
Ngoi ra cn c cc thnh phn khc thng c s dng lm i tng cha mc nh
l dialogs (JDialog) v applets (JApplet).
Panel l i tng cha mc trung gian (intermediate container). Panel nhm mc
ch xc nh v tr ca button v label. Nhng i tng cha mc trung gian khc cn c
scroll panes (JScrollPane) v tabbed panes (JTabbedPane), chng c nh hng ln nhau,
tng tc vi nhau trong giao din ca mt chng trnh.
Button v Label l nhng thnh phn c bn (atomic components), nhng thnh phn
m khng th cha cc thnh phn Swing khc AWT thng thng, cc thnh phn c bn
ny s l ni nhn thng tin u vo t pha ngi dng. Swing API cung cp nhiu thnh
phn c bn, bao gm combo boxes (JComboBox), text fields (JTextField), v tables
(JTable).
ng dng cc thnh phn ca win tron chn trnh.
JLabel ng dng to cc dng ch thng bo nh s bc dch chuyn, thi gian
qua phng thc setFont() v cn c s dng lm cc mnh ghp hnh nh, vi mi
JLabel s c gn bng mt mnh ghp qua phng thc setIcon() .
JButton c s dng lm cc nt lnh bt u chy tr chi, ng vi cc thit
lp ty chnh hay hy b cc thit lp va sa i xong.
JTextField c ng dng trong chng trnh hin ln s bc di chuyn sau mi
ln i mnh ghp v thi gian chi. lm c cn phi s dng phng thc
Project 1: Game Puzzle Khoa CNTT H Bch Khoa H Ni

Page 9


setText() cho cc JTextField . Sau khi ngi chi ginh chin thng th dng phng thc
getText() ly cc gi tr trong JTextField hin ln thng bo cho ngi chi.
JRadioButton ng dng to cc ty chn ty chnh trong chng chnh nh kch
thc ca tr chi, bt tt m thanh, kiu chi
JComboBox c ng dng to danh sch la chn hnh nh ghp.
Pane contains, trc tip hoc gin tip cha tt c cc thnh phn s hin th trong
GUI. Ring i vi top-level container th c Menu bar, Menu bar s ng trong mt vng
c bit nm ngoi content pane.
Trong tr chi Menubar c ng dng lit k cc chc nng ca chng trnh nh
bt u tr chi, chn hnh nh, xem im cao, hng dn,
thm mt thnh phn vo i tng cha, c th dng nhiu cch khc nhau ca phng
thc add(). Phng thc add() c t nht 1 i s (argument)
2.4.2. Nhn tnh nn v khi nim khc ca win
Swing cung cp nhiu tnh nng. Rt nhiu tnh nng c cung cp bi JComponent
class.
Nhn tnh nn ca JComponent (Features that JComponent Provides)
Ngoi tr i tng cha mc nh, tt c cc thnh phn khc bt u bng k t J
u c tha k t lp Jcomponent. Hu ht cc thnh phn u c cc tnh nng chung nh
tooltips v cu hnh v giao din (look and feel). Ngoi ra, chng cn tha k nhiu phng
thc tin li khc na.
Icons
Nhiu thnh phn Swing, t bit l button v label, c th hin th hnh nh. Ta c th
ch nh cho cc hnh nh ny nh l cc i tng icon
Actions
Vi i tng Action, Swing API cung cp nhng h tr c bit cho vic chia x d
liu v trng thi gia hai hoc nhiu thnh phn pht ra cc s kin hnh ng. V d, khi ta
c mt button v mt menu item cng mt chc nng, lc os cn cn nhc vic s dng i
tng Action xc nh vn bn, icon v trng thi ca hai thnh phn.
Project 1: Game Puzzle Khoa CNTT H Bch Khoa H Ni

Page 10


Cch s dn cc n vin(order)
Borders s em li cho chng ta nhiu thun li trong vic v cc ng thng, tiu
hay cc vng trng ca mt thnh phn. Trong chng trnh c s dng cc Border k
ng vin cho cc mnh ghp
Cch s dn Icons
Nhiu thnh phn Swing c th hin th icons (JLabel v JButton). Thng th icons l
trng hp c bit ca ImageIcon class.
Mt vi thnh phn Swing nh JLabel v JButton, c th c trang tr bi mt icon.
Icon l mt i tng gn kt cht ch vi giao din Icon. Swing cung cp cho giao din Icon
cch thc hin rt t bit v hiu qu v mt Icon tg mt tp tin nh c dng thc GIF
hoc JPEG.
2.4.3. dn imers
Vi lp Timer, bn c th cho thc hin mt tin trnh ca vic thc thi mt hnh ng sau
mt khong thi gian xc nh v lp li hnh vi y.
C hai cch thc hin Timer:
Thc hin mt tc v, vi thi gian lp li c xc nh. V d, tool tip manager s
dng timers quyt nh khi no th hin th v khi no th tt n i.
Thc hin vic lp i lp li mt tc v.
chng trnh th Timers c ng dng tnh thi gian chi.
Project 1: Game Puzzle Khoa CNTT H Bch Khoa H Ni

Page 11


CHNG 3. PHN TCH THIT K
3.1. Phn tch Game Puzzle
3.1.1. 8 Puzzle
n gin trong cch tip cn gii bi ton, ngi ta gi nh ch c trng trong bng
l di chuyn n nhng v tr khc. Nh vy ti mt trng thi th ch c ti a 4 cch i
chuyn sang trng thi khc (tri, phi, ln, xung). Ngi ta cng nhn ra c rng c
th chuyn t 1 trng thi bt k v trng thi ch nh trn th trng thi u phi theo
mt quy lut trnh by sau y.
Cho trng thi u tin nh hnh di, duyt qua tng theo th t t tri qua v t trn
xung, mi s duyt n, bn hy m xem c bao nhiu s c gi tr b hn n.

nh 3: ng thi bt u 8 - Puzzle
u tin l s 4, ta thy c 3 s {1;3;2} nm pha sau v b hn n nn n1=3
Tip n l s 8 c 6 nh hn l {1; 6; 3; 2; 7; 5}, vy n2 = 6
s 1 l b nht nn n3=0
Tng t s 6, n4=3
s 3, n5=1
s 2, n6=0
s 7, n7=1
cui lun bng 0 nn c th b qua, n8=0

Hnh 3.1: Tnh N :8-puzzle
Project 1: Game Puzzle Khoa CNTT H Bch Khoa H Ni

Page 12


Tnh tng cc s t n1->n8 ta c:
N =3 +6 +0 +3 +1 +0 +1 +0 =14
Vi s N ny ta ch cn bit 1 thng tin l n c chia ht cho 2 hay khng (l hay chn).
Nu n l s chn th chc chn c th chuyn v trng thi ch t trng thi hin ti ny.
Bi v khi di chuyn trng vi hng i bt k th gi tr N mod 2 cng khng thay i. Tc
l t trng thi ch bn c th xo trn bng cch di chuyn trng nhiu ln th gi tr N
vn l s chn.
3.1.2. 15-puzzle

Kh n tha vi bi ton 8-puzzle, ta th phn tch tip bi ton 15-puzzle. V bt ng
bn gp phi vn khi kim tra theo cch tng t nh vi bi ton 8-puzzle: Khi di chuyn
trng trong bng gia cc dng v tnh ton gi tr N th bn nhn ra rng N s thay i gi
tr chn, l.

nh 4: 15 - Puzzle
V d nh cc bng pha trn bn tnh c N tng ng khi di chuyn trng gia
cc dng ln lt l 60, 59, 60, 61. Qua vi ln th bn c th nhn ra quy lut l N l l khi
trng nm cc dng l tnh t trn xung (dng u tin l 1), v N l chn khi trng
nm cc dng chn tnh t trn xung.
S khc bit ny so vi phin 8-puzzle l do di cnh (n) khc nhau. Tc l vi n l
th gi tr N mod 2 s ko thay i, vi n th th n s thay i tng ng vi v tr dng ca
trng trn bng.
Ta so snh v nhn thy l khng th p dng cng quy lut ca bi ton 8-puzzle
kim tra xem bi ton c th gii c khng. Phn tch li bi ton 8-puzzle bn c th
vn thc mc ti sao vic di chuyn trng gia hai dng li khng lm thay i tnh chn l
ca N.
Project 1: Game Puzzle Khoa CNTT H Bch Khoa H Ni

Page 13


Chuyn bng 33 ny dng mng 1 chiu ri hnh dung vic di chuyn trng gia
cc hng.

nh 5: 8 Puzzle dng mng mt chiu
Nh trong bng 33 khi di chuyn trng ln pha trn tc l hon v th 3 v th
6. Tm thi khng quan tm n trng, ta ch xt c gi tr 1, dy trn chuyn thnh.

nh 6
Gi tr N ban u c tng ln 2 l do hin ti c thm hai ln hn nm trc c
gi tr 1. Nu th vi ln bn c th thy khi di chuyn trng gia cc dng th gi tr N
mi s c 1 trong 3 trng hp: khng thay i, tng 2, gim 2. Ta c nhn xt: gi tr N
mi tn im 1 vi s ln chn.
Tng t vi n=4 ta c:

nh 7: i chun gia cc dng trong 15 Puzze
Project 1: Game Puzzle Khoa CNTT H Bch Khoa H Ni

Page 14


- L1: Vic di chun s 6 xung v t cui lm gim N i 2 n v (do ng sau 3 v
5) v tng N ln 1 n v (do ng sau s 9). a c N = N 1 1 + 1.
- L2: di chun s 4 xung v t 12 tng N ln 2 n v (ng sau 14 v 10) v gim
N 1 n v (do ng sau s 1). a c N = N +1 +1 1.
- L3: ng t N = N + 1 +1 1.
Tc l mi ln trng gia cc dng ta ch lm thay i gi tr N i 1 n v. Nu th
vi cc trng hp khc, gi tr N c th thay i 3 n v. Nhn xt gi tr N mi tn
im 1 vi s ln l.

Vi hai v d trn ta nhn ra mt quy lut l: Khi thay i v tr trn ia cc
dng th gi tr N s thay i tn n vi gi tr l s l hay s chn ty thuc vo n.
n qut ln chnh l n-1 cn l gi tr ti a m N c th thay i.
Cui cng ta suy ra phng php tng qut p dng cho mi n.
- Vi n l:
Ch cn N mod 2 = 0
- Vi n chn:
N mod 2 = 0 v trng nm trn dng chn tnh t trn xung.
N mod 2 = 1 v trng nm trn dng l tnh t trn xung.

Cui cng ta gii quyt c vn u tin l: xc nh c mt n-puzzle c th
chuyn v trn thi ch vi s ln di chuyn bt k hay khng. Vic bit iu ny rt
quan trng khi ta a ra mt trng thi bt u c th a v trng thi ch c hay khng.

Project 1: Game Puzzle Khoa CNTT H Bch Khoa H Ni

Page 15


3.2. Phn tch Project
cu trc ni dn chn trnh

Cu trc chn trnh

Project 1: Game Puzzle Khoa CNTT H Bch Khoa H Ni

Page 16



nh 8: Tng quan v cc lp c s dng tong chng tnh
Chng trnh xy dng ch yu lp FormMain v vy chng ta s i su v lp ny.
Danh sch cc bin c s dng trong lp FormMain

Project 1: Game Puzzle Khoa CNTT H Bch Khoa H Ni

Page 17


Cc phn thc v chc nn ca cc phn thc.
n cc phn thc Chc nn
creatGame() Khi to tr chi
resizeImage(final Image image, int width, int
height)
Cn chnh li kch thc hnh nh nu nh
hnh nh qu to hoc qu b sao cho va vi
khung hnh.
setPicture(JLabel label, int x, int y) Gn nh vo JLabel vi rng x v cao y
MoveCount() m s ln di chuyn cc mnh ghp
NewGameActionPerformed(ActionEvent evt) Bt u tr chi
addLabel() t li thi gian v s ln dch chuyn sau
s gn cc mnh hnh nh tng ng vo cc
JLabel c gi tr text tng ng vi mnh .
AddFileImageActionPerformed(ActionEvent
evt)
Dng chn n mt hnh nh bt k khi
khng mun s dng hnh nh c sn trong
tr chi.
CheckWin() Kim tra xem chin thng hay cha.
checkTop(int countMove) Kim tra xem c phi l ngi c s di
chuyn t nht hay khng.
writeTop(int countMove) Ghi tn vo TOP c s di chuyn t nht
SetImgLabel() Dng ly ra mnh ghp cui cng.
ThoiGian() Hm chy thi gian chi game.

Project 1: Game Puzzle Khoa CNTT H Bch Khoa H Ni

Page 18


3.3. Mt vi on code tron chn trnh
on Code xt xem c th a v trn thi ch hay khn


Phn thc chnh li kch thc hnh nh (Tham kho)


Project 1: Game Puzzle Khoa CNTT H Bch Khoa H Ni

Page 19


Phn thc chn hnh nh t bn noi chn trnh

Phn thc bt s kin click chut vo mnh hp


Project 1: Game Puzzle Khoa CNTT H Bch Khoa H Ni

Page 20


3.4. Giao din ca tr chi


nh 9: iao din mc nh khi ch t chi

nh 10: au hi t u t chi
Project 1: Game Puzzle Khoa CNTT H Bch Khoa H Ni

Page 21



nh 11: Giao din phn ty chnh ca ngi chi

nh 12: iao din op im cao
Project 1: Game Puzzle Khoa CNTT H Bch Khoa H Ni

Page 22


CHNG 4. KT LUN V HNG PHT TRIN
KT LUN
Trong qu trnh lm bi tp ln ny em nm vng c nhng phn c bn trong Java,
hiu c cch ci t cc thut ton cng nh cc giao din c trong Java. Bn cnh
cng bit cch x l cc s kin cho cc Button, Label,
u nhc im
u im.
- L mt chng trnh c vit bng Java nn dung lng tng i nh.
- p ng cho nhu cu chi game gii tr bnh thng cho mi ngi.
- C nhiu cp v hnh nh khc nhau cho ngi chi la chn
Nhc im.
- Ch hin th c danh sch ngi chi c im cao nht.
- Mt vi thut ton vn b lp i lp li.
- Khng s dng c bn phm di chuyn cc mnh ghp
Hng pht trin tr chi.
- Ti u ha thut ton sao.
- Hin th danh sch ngi chi ln 5 hoc 10 ngi.
- Thm s kin bm phm di chuyn.
Project 1: Game Puzzle Khoa CNTT H Bch Khoa H Ni

Page 23



TI LIU THAM KHO
[1] Core Java volume 1
Webside:
http://congdongjava.com Cng ng Java
http://yinyangit.wordpress.com YinYangs Programing Blog
https://www.youtube.com/watch?v=yignhiE6n3Q

You might also like