Download as pdf or txt
Download as pdf or txt
You are on page 1of 26

ti tt nghip:Tr chi Puzzle

Khoa CNTH-Vin H M HN

MC LC
Li ni u..2
Phn I.Gii thiu Game Puzzle.3
Phn II.Gii thiu cng ngh Java v nn tng J2SE...5
I.

Gii thiu chung v Java.5

II.

My o Java-JVM...7

III.

Gii thiu J2SE..11

IV.

Gii thiu gi javax.swing.*...11

Phn III.Phn tch thit k17


I.

S phn r cha nng17

II.

S lung d liu mc nh18

III.

Cu trc chng trnh.19

IV.

c t chng trinh25

Phn IV.Kt lun..27

Page 1 of 26

SV:Phm Cng Thnh-Lp 04B1

GVHD:Nguyn c Tun

ti tt nghip:Tr chi Puzzle

Khoa CNTH-Vin H M HN

LI NI U
Ni n game th chc phn ln mi ngi u ng l mt loi hnh
gii tr c sc thu ht rt ln,nht l vi gii tr hin nay.c bit sau s ra i ca
Internet,game online xut hin v nhanh chng gy c sc hp dn to ln.Chng
ta c th chi game online trn mng,cc game offline trn PC,cc game trn cc
dng my chuyn nh PS2,PS3..hin nay game cng ang c pht trin mnh
trn cc thit b di ng nh in thoi di ng,cc my Xbox..
cc nc pht trin nh Nht Bn,M..c rt nhiu cc cng ty chuyn v
sn xut game nh Nintendo,Sony,Sega..v mi nm cc cng ty ny t doanh thu
hng t USD.Hay vi cc nc i sau nh Hn Quc,Trung Quc cng c c
mt ngnh cng ngh game rt mnh nh c s u t ng n v chin lc pht
trin tt.
Mc d VINASA xp game l mt trong 3 nh hng cng ngh chin
lc ca hip hi ny trong giai on 2006-2010, bn cnh nh hng phn mm
nhng v ERP (b phn mm hoch nh ngun lc doanh nghip) nhng hin ti
th trng game Vit Nam cn rt yu.Cha c nhiu cng ty chuyn v lp trnh
game,nhng cng ty pht trin game online th ch yu l cung cp cc game nhp
t Hn Quc,Trung Quc..cc game ni hu nh vng bng trn th trng.ng
nh theo nhn nh ca mt chuyn gia pht trin game ca Hn Quc:ngnh
cng nghip game Vit Nam hin nay ging nh mt a tr s sinh, rt cn c
s gip v nui nng (ca Chnh ph) pht trin.Chc hn hin nay c rt
nhiu bn tr ang theo ui ngnh CNTT cng mun tham gia vo lnh vc ny
v h rt cn c c s gip v ng h t cc nh gio dc,t chnh sch,nh
hng pht trin ca chnh ph. ti tt nghip ny l lm tr chi Puzzle s
dng ngn ng lp trnh Java.Do mi tip cn v lp trnh game nn chng trnh
cn c nhiu thiu st,mong cc thy gip ,gp hon thin hn.
hon thnh bi tp ny ngoi s c gng ca bn thn cn c s tham gia
gp ,gip ca thy gio v bn b.Trc ht em xin gi li cm n chn thnh
n thy gio hng dn Nguyn c Tun nhit tnh gip em hon thnh
ti.Ngoi ra xin cm n cc bn trong lp,cc bn trong cng ng Java Vit
Nam ng gp kin trong qu trnh thc hin ti.
Page 2 of 26

SV:Phm Cng Thnh-Lp 04B1

GVHD:Nguyn c Tun

ti tt nghip:Tr chi Puzzle

Khoa CNTH-Vin H M HN

PHN I:GII THIU V

TI

TR CHI PUZZLE.
Bn thn t Puzzle c ngha l cu ,y l tr chi thuc th loi
game tr tu. Tr chi ny cng ging nh cc tr chi xp hnh,u tin vi kch
thc tr chi l 9 ,trng thi ban u c khi to ngu nhin.Nhim v ca
ngi chi l xp 8 ch s sao cho t c trng thi win cho nh sau:

Ngi chi s dch chuyn cc s theo cc hng ln xung,sang tri phi


khi cnh n l trng. kh ca tr chi c qui nh bng gii hn thi gian
chi v s ln dch chuyn.Ngha l nu ngi chi chi ht thi gian gii hn hay
s ln dch chuyn gii hn s b thua.
Ngi chi c gng xp 8 v trng thi win cng nhanh cng tt v
cng dng t ln dch chuyn cng tt,khi win ngi chi s c mt s im tnh
theo cng thc:
S giy t hn so vi giy gii hn*3+S ln dch chuyn t hn s ln cho
php*5
Nu s im ca bn nm trong top 5 ngi c im cao nht th bn
s c ghi danh vo top.

Page 3 of 26

SV:Phm Cng Thnh-Lp 04B1

GVHD:Nguyn c Tun

ti tt nghip:Tr chi Puzzle

Khoa CNTH-Vin H M HN

Cch thc chi c v rt n gin.Khi tm hiu game ny c mt vn


kh th v. l c phi bao gi bn cng c th a game v trng thi win
nh trn khng?Trong game c mt trng thi m khng c ai c th gii quyt,
l trng thi sau:
1

c rt nhiu ngi tham gia gii quyt tnh hung ny nhng n


nay cha ai c th thnh cng. bit r hn v tnh hung th v ny bn c th
xem them ti a ch sau:http://www.holotronix.com/samlloyd15.php
Chng trnh c xy dng trn nn tng J2SE ca Java.Ch yu l
lp trnh GUI s dng Swing trong Java-s c gii thiu trong phn II di y.

Page 4 of 26

SV:Phm Cng Thnh-Lp 04B1

GVHD:Nguyn c Tun

ti tt nghip:Tr chi Puzzle

Khoa CNTH-Vin H M HN

PHN II.GII THIU V

JAVA V NN TNG J2SE

I.Gii thiu chung v Java.


1.S pht trin.
Java c xy dng vo cui nm 1990 bi James Gosling v khi
n c tn l Oak(Oak:cy si,v ca s phng lm vic ca Gosling nhn ra mt
gc si).Gosling c cng ty Sun Microsystems giao nhim v xy dng mt
phn mm lp trnh cho cc mt hng in dn dng vi mc tiu l nh gn v
tng thch c vi nhiu loi thit b phn cng khc nhau.u tin Oak c
dung trong D n Xanh.
Sau mt chuyn du lch ca nhm pht trin Oak n o Java ca
Indonesia ni ting v c ph,Oak c i tn thnh Java t .Sau ny chng
ta c th thy nhiu khi nim v hnh tng lin quan n c ph(nh bean l
ht c ph).
Sun, cng ty pht minh ra ngn ng Java, chnh thc ban hnh bn
Java Development Kit (JDK) 1.0 vo nm 1995 hon ton min ph cc nh
pht trin c th ti v, hc Java, xy dng cc ng dng Java v trin khai chng
trn cc h iu hnh c h tr Java. Ban u, Java ch yu dng pht trin cc
Applet, cc ng dng nhng vo trnh duyt, gp phn lm sinh ng cc trang
Web tnh vn ht sc t nht hi d. Tuy nhin, cng vi s pht trin ca cng
ngh thng tin v nhu cu ca x hi, Java applet dn mt i v tr ca n v
thay vo , cc cng ty, cng ng ng h Java pht trin n theo mt hng
khc. Hin nay, cng ngh Java c chia lm ba b phn:
J2SE
Page 5 of 26

SV:Phm Cng Thnh-Lp 04B1

GVHD:Nguyn c Tun

ti tt nghip:Tr chi Puzzle

Khoa CNTH-Vin H M HN

Gm cc c t, cng c, API ca nhn Java gip pht trin cc ng dng


trn desktop v nh ngha cc phn thuc nhn ca Java.
J2EE
Gm cc c t, cng c, API m rng J2SE pht trin cc ng dng qui
m x nghip, ch yu chy trn my ch (server). B phn hay c
nhc n nht ca cng ngh ny l cng ngh Servlet/JSP: s dng Java
lm cc ng dng web.
J2ME
Gm cc c t, cng c, API m rng pht trin cc ng dng Java chy
trn in thoi di ng, th thng minh, thit b in t cm tay, robo v nhng ng
dng in t khc.
Java tri qua 3 bc pht trin quan trng: Java 1.0 gn lin vi bn
JDK u tin, Java 2 gn vi JDK 1.2 v Java 5 gn vi J2SDK 1.5
Ngy nay, khi nhc n Java ngi ta khng cn ch nhc n Java nh l
mt ngn ng m nhc n Java nh l mt cng ngh hay mt nn tng pht
trin. N bao gm cc b phn:
My o Java: JVM
B cng c pht trin: J2SDK
Cc c t chi tit k thut (specifications)
Ngn ng lp trnh (programming language)

2.Mt s c im.
Java l mt nn tng pht trin cc ng dng phn mm c v tr rt ln
trong nhng nm cui th k 20 u th k 21 .nh du s trng thnh ca m
hnh hng i tng , n c coi l mt nn tng mang tnh cht cch mng
trong ngnh phn mm . M hnh my o Virtual Machine cho php cc ng
dng vit bng Java c th chy trn nhiu h iu hnh khc nhau.Khu hiu ni
ting ca Java l Write one,Run anywhere c th hiu l Vit mt ln,chy khp
mi ni
Java nhanh chng c nhiu nh lp trnh cng nhn . Cc cu lnh v cc
biu din tng t trong mt s ngn ng nh C , C++ . Mc d Java b sung
kh nhiu im mi , nt phn bit nht ca Java li l nhng c im m n b
qua :
Page 6 of 26

SV:Phm Cng Thnh-Lp 04B1

GVHD:Nguyn c Tun

ti tt nghip:Tr chi Puzzle

Khoa CNTH-Vin H M HN

Nh so vi C th Java khng c : S hc a ch b nh (Con tr) , B tin


x l, Cu lnh goto , chuyn i kiu t ng , cc bin v hm tng th , cc
nh danh xc nh kiu.
So vi C++ thi Java khng c : a tha k , a ABI (Application Binary
Interface Giao din nh phn ng dng)
II. My

o Java : Java Virtual Machine (JVM) :

M ngun Java c bin dch sinh ra m i tng gi la ByteCode (M


byte ). ByteCode y khng phi l m nh phn ca my tnh ang tn ti thc
t no m n l mt loi m my kin to trung gian c th d dng dch sang
chy trn bt k my tnh c th no . Thng thng trong hu ht cc mi trng
hin ti (H iu hnh ) JVM c gi thc thi bng mt chng trnh c tn l
Java .JVM c chng trnh bng ByteCode v thng dich hoc bin dch n ra
theo h lnhk thc t .
y l mt c im c ngha rt ln. Chy bytecode trn mt JVM l l do v
sao cc phn mm Java l "vit mt ln, chy khp ni". Cc chng trnh chy
c Java (Java executable) cung cp mt b m nh phn chy trn mi b x l.
Ni cch khc, mt ng dng bng Java ca bn chng hn l chng trnh xyz
no bng Java s chy trn mi h thng h tr Java m khng cn phi c
ring "xyz cho DOS", "xyz cho Windows 3.1", "xyz cho Windows 95"...
Bi v JVM c th ci t trn hu ht cc h iu hnh(HDH) khc nhau (Window
, Linux, Mac OS ,) nn cng mt tp tin class c th chy trn cc h iu hnh
khc nhau . iu ny ngha l vi mt file Java c th chy trn nhiu HDH
khc nhau :

Page 7 of 26

SV:Phm Cng Thnh-Lp 04B1

GVHD:Nguyn c Tun

ti tt nghip:Tr chi Puzzle

Khoa CNTH-Vin H M HN

Tnh d chuyn mang v tnh nng ca phn mm


Tnh d chuyn mang ca phn mm l khuynh hng l tng ca ngnh
cng ngh phn mm. N c nghin cu, tm kim t lu nay nhng cha
bao gi thc s t c. Java lm cho ngnh cng ngh ny tin li gn tnh d
chuyn mang ca phn mm nhiu hn tt c cc h thng trc . Ti cc ca
hng bn phn mm hin nay, c l bn s thy ch yu l cc phn mm dng cho
Windows (mt s ch cho Windows 3.1, mt s cho c Windows 95 v Windows
3.1), mt s t cho Mac v mt s rt t (c th l khng c) cho Unix. Khi Java tr
thnh ngn ng ph bin th bn c th chn t tt c cc phn mm c trong ca
hng v phn mm bn chn mua s chy trn tt c cc h thng my tnh m bn
c. Lc mi ngi c c s la chn rng ri hn v gi phn mm cng s
h do cc nh cung ng phn mm c th phn b chi ph pht trin trn mt th
trng rng ln 250 triu my tnh ch khng phi ch cho 91 triu h thng
Windows 3.1 hoc cho 20 triu h thng Macintosh hoc cho 8 triu h thng
Unix.
My o Java phi c trin khai cho mi h thng my tnh v sau mi
bytecode s chy c trn h thng . im quan trng y l bytecode c kh
nng chuyn mang tng hp. ng nhin vn t ra l lm sao c cc JVM
thch hp cho tng mi trng. C l vn ny cng tng t nh qu trnh
cho cc my tnh c nhn (PC) l tng thch DOS trc y.
Page 8 of 26

SV:Phm Cng Thnh-Lp 04B1

GVHD:Nguyn c Tun

ti tt nghip:Tr chi Puzzle

Khoa CNTH-Vin H M HN

Mt iu l th l bytecode khng phi ch dnh ring cho Java. Nu sa i


mt chng trnh dch i vi mt s ngn ng khc nh Ada hay Visual Basic
n sinh ra c bytecode th cng c th chy bytecode "ngon lnh" trn JVM
trn bt k my tnh no. y l mt hng m cc nh cung ng phn mm ang
quan tm. Kh nng chy c m trn mi h thng my tnh trn hnh tinh l l
do mnh m ci cch. tng v JVM h tr c lc cho hng ci cch ny.
Java c nhng m bo tnh d chuyn mang, bao gm vic cung cp cng
mt giao din ngi lp trnh ng dng (API, Application Programmer Interface)
trn mi loi nn; cng mt giao din nh phn ng dng (ABI, Application Binary
Interface), c th l my o Java, trn mi loi nn. Ngoi ra ngn ng Java cn c
qui nh bt buc mt s im lu nay vn tu thuc vo s c th ho ca
ngi vit chng trnh dch. Bng cch yu cu rng cc ton hng c nh gi
theo th t nghim ngt t tri qua phi v qui nh kch thc ca tt c cc kiu
c bn (kiu nguyn l 32 bit, kiu chnh xc gp i l 64 bit v.v) Java p ng
khng nhng tnh d chuyn mang m cn c cch x l ng nht ca chng
trnh trn cc h thng khc nhau. Java dng Unicode l tp k t chun c th
biu din cc k hiu, k t trong hu ht cc bng ch ci trn th gii, k c cc
k t ting Vit cng nh cc loi ch tng hnh ca chu A'. Trong thi gian sp
ti, nu chun ting Vit cho cng ngh thng tin ca Vit nam da trn Unicode
th chc chn Java d dng h tr cho chun .
Mt iu c th d nhn thy rng vic bo m tnh d chuyn mang c th
nh hng ti tnh nng thc hin ca phn mm. Tuy nhin, ta c mt s cn nhc
ng gi. Bn hy hnh dung xem, nu tt c cc h thng c xy dng trong
nhiu nm qua khng c gng tit kim chi ph ca hai byte "tha" v lu gi cc
con s nm bng 4 byte ch khng phi l 2 byte th chng ta khng gp phi s
c au u "vn nm 2000" . Vi Java, c th thy mt s im l hi "cng
knh" hoc "d tha". Tuy nhin, nhng qui nh cht ch v chun ho ca Java
chnh l m bo tnh d chuyn mang v tnh nng ca n trong mt tng lai
di lu.

Java vi vic qun l b nh


Trong lp trnh, mt vn rt nng n c t ra l vic qun l b nh
ng, trong c vic "dn dp b nh" - tc l vic gii phng nhng phn b
nh m chng trnh dng xong dnh cho nhng mc ch khc. Khi mt
chng trnh chy, n s phn b b nh lu gi cc i tng mi. Khi s tn
ti ca cc i tng ny kt thc th khng gian b nh dnh cho chng cn
c gii phng v dng li cho cc i tng khc. Nu b nh khng c gii
Page 9 of 26

SV:Phm Cng Thnh-Lp 04B1

GVHD:Nguyn c Tun

ti tt nghip:Tr chi Puzzle

Khoa CNTH-Vin H M HN

phng th qu trnh (chng trnh) s ngy cng ln ln v s c th chim ht tt


c khng gian nh, gy trn. Mt s ngn ng nh COBOL-74 khng trang b kh
nng qun l b nh ng (do vy mt s chng trnh ht sc kh vit hoc
khng th vit c). Mt s ngn ng khc nh Pascal, C, C++ li trt gnh nng
qun l b nh ln vai ngi lp trnh. Thm ch ngi lp trnh cn phi quan tm
xem phn no ca b nh ang c s dng v phi gii phng phn no ca b
nh khi cn thit. Nhng chuyn ny dn n nhiu loi li khc nhau ca cc
chng trnh, ph bin l li khng gii phng c b nh gy ra cc "l hng"
khng bao gi c khai bo li trong b nh. Cn t hn l cc li gy ra do vic
c gii phng nhng phn b nh cn ang s dng dn n hng hoc mt d
liu.
Cc chng trnh Java c qun l v b nh mc h thng v ngi lp
trnh khng bao gi phi lo lng v chuyn . Th vin thi gian chy ca Java s
gim st cc cu trc d liu. Khi khng cn mt tham chiu no ti mt cu trc
d liu th n khng th l ang c s dng v chng trnh khng c cch g
c hoc ghi n. Lc n s l i tng ca vic dn dp b nh.
Java hng ti vic dn dp b nh t ng. Vic dn dp b nh t ng
nh hng ti tnh nng v n lin quan n cc qu trnh khc chy trong nn sau
gim st vic s dng b nh. Tuy nhin thc t ch ra rng, y cng c
mt s cn nhc ng gi. Mt h thng nh thc hin dn dp b nh t ng
dn ti s ci thin rt ln thng qua vic g b mt lot cc li ca cc chng
trnh Java. C th so snh, cc chng trnh C++ chu trch nhim qun l cc
ng (heap) b nh ca ring chng do vy chng phi c m di hn, mt nhiu
thi gian g ri hn v cc chng trnh ln thng dn ti cc li rt kh pht
hin v x l v vic dn dp b nh.

III.Gii thiu nn tng J2SE


J2SE : l vit tt ca Java 2 Standard Edition - Va l mt c t , va l
mt nn tng thc thi (bao gm c pht trin v trin khai) cho cc ng dng Java.
J2SE cung cp cc API , cc kin trc chun , cc th vin v cc cng c ct li
nht xy dng cc ng dng Java .
Mc d J2SE l nn tng thin v pht trin cc sn phm chy trn my tnh
bn nhng nhng tnh nng ca n, bao gm phn trin khai ngn ng Java lp
gc, cc cng ngh nn nh JDBC truy vn d liu... chnh l ch da Java
tip tc m rng v h tr cc thnh phn mnh m hn dng cho cc ng dng h
thng quy m x nghip v cc thit b nh.
Page 10 of 26

SV:Phm Cng Thnh-Lp 04B1

GVHD:Nguyn c Tun

ti tt nghip:Tr chi Puzzle

Khoa CNTH-Vin H M HN

J2SE gm 2 b phn chnh l: Java 2 Runtime Environment, Standard


Edition (JRE) v Java 2 Software Development Kit, Standard Edition (SDK). Mi
trng thc thi hay JRE cung cp cc Java API, my o Java v cc thnh phn cn
thit khc chy cc Applet v ng dng vit bng ngn ng lp trnh Java. Mi
trng thc thi Java khng c cc cng c v tin ch nh l cc trnh bin dch
hay cc trnh g li pht trin cc applet v cc ng dng.
Java 2 SDK l mt tp m ca JRE, v cha mi th nm trong JRE, b
sung thm cc cng c nh l trnh bin dch v cc trnh g li cn pht trin
applet v cc ng dng.
Phin bn J2SE mi nht tnh n thi im hin ti l J2SE 1.5 hay cn gi
l J2SE 5.0 theo nh cch t tn phin bn ca Sun Microsystems.

IV. Gii thiu v gi javax.swing.*;


1. Gii thiu JFC (Java Foundation Class):
-

L th vin lp trnh ha c thit k v ng gi theo m hnh


hng i tng
JFC c kh nng to nn cc giao din uyn chuyn linh hot.N khng
ch cho php chng trnh chy tng thch trn nhiu h iu hnh khc
nhau m cn cho php giao din ca chng trnh thay i cch nhn
ngay trn mt h iu hnh Windows duy nht.C ngha l trn mi
trng Windows ca Microsoft chng hn,chng trnh ca ta vn c th
mang dng dp ca giao din trn my Macsintosh hay my Unix,ngoi
giao din chun ca Windows m ta thng thy. lm c iu ny
th vin JFC a ra mt khi nim gi l cm quan(Look and Feel) cc
thnh phn ha xy dng bng JFC c kh nng bin i theo dng
dp ca giao din do lp trnh vin ch nh.
C sn trong th vin chun JDK t bn 1.2 tr ln.

2. javax.swing :
- L mt gi nm trong th vin JFC gm nhiu Class v giao din

(Interfaces) h tr mnh cho vic lp trnh giao din ha trn JDK.


Cc thnh phn ca Swing thng c bt u bng ch J : Jbutton,
JTextField , Jlabel , JcheckBox , JRadioButton,.

3.Mt s gi in hnh ca Lp Swing :


Page 11 of 26

SV:Phm Cng Thnh-Lp 04B1

GVHD:Nguyn c Tun

ti tt nghip:Tr chi Puzzle

Khoa CNTH-Vin H M HN

1. javax.accessbility
Cha cc lp v cc giao tip m c th c s dng cho php cng
ngh tr gip tng tc vi cc thnh phn ca Swing. Cc cng ngh tr gip
cp : mt dy Item , t b c vn bn n phng i mn hnh ,
2. javax.swing :
Cha cc thnh phn ct li ca Swing, bao gm hu ht cc m hnh
giao tip v cc lp h tr
3. javax.swing.border
Cha nh ngha cc lp ng vin tru tng cng nh 8 ng
vin c nh ngha. Border khng phi l nhng thnh phn, thay v th, chng
l nhng yu t ha c bit m Swing s dng nh nhng thuc tnh v t
chng xung quanh cc thnh phn. Nu nh bn mun to ra border ca ring bn,
bn c th to lp con t nhng border c sn trong gi ny, hoc bn c th vit
m cho mt lp mi.
4. javax.swing.colorchooser
H tr cho thnh phn JColorChooser
5. javax.swing.event
nh ngha nhng listener mi v nhng event m nhng thnh phn
Swing s dng giao tip thng tin vi cc class.
6. javax.swing.filechooser
H tr cho thnh phn JFileChooser
7. javax.swing.plaf
nh ngha nhng yu t duy nht to nn L&F cho mi thnh phn
Swing. Trong gi ny cha cc gi con l javax.swing.plaf.basic,
Page 12 of 26

SV:Phm Cng Thnh-Lp 04B1

GVHD:Nguyn c Tun

ti tt nghip:Tr chi Puzzle

Khoa CNTH-Vin H M HN

javax.swing.plaf.metal v javax.swing.plaf.multi
8.javax.swing.table
Cung cp cc m hnh v quan st cho thnh phn table, cho php bn
sp xp thng ring bit trong nh dng li vi s xut hin tng t nh bng
tnh.
9. javax.swing.text
Cung cp cc im ca cc lp v giao tip da trn vn bn h tr
thit k thng dng c bit n nh document/view.
10. javax.swing.text.html
S dng k thut c v nh dang vn bn HTML
11.javax.swing.text.html.parser
H tr vic phn tch HTML
12.javax.swing.text.rtf
S dng k thut c v nh dng Rich Text Format
13.javax.swing.tree
nh ngha cc m hnh v quan st thnh phn mt cy phn cp , c
th thay th mt cu trc file hoc mt dy cc thuc tnh.
14.javax.swing.undo
Cha nhng chc nng cn thit cho vic b sung chc nng undo.

Page 13 of 26

SV:Phm Cng Thnh-Lp 04B1

GVHD:Nguyn c Tun

ti tt nghip:Tr chi Puzzle

Khoa CNTH-Vin H M HN

4. Mt s cu trc swing c bn:


a.Cu trc GUI tng qut:

Page 14 of 26

SV:Phm Cng Thnh-Lp 04B1

GVHD:Nguyn c Tun

ti tt nghip:Tr chi Puzzle

Khoa CNTH-Vin H M HN

b.Cu trc Tree ca swing:

Page 15 of 26

SV:Phm Cng Thnh-Lp 04B1

GVHD:Nguyn c Tun

ti tt nghip:Tr chi Puzzle

Khoa CNTH-Vin H M HN

PHN III.PHN TCH THIT

I.S phn r chc nng:

Page 16 of 26

SV:Phm Cng Thnh-Lp 04B1

GVHD:Nguyn c Tun

ti tt nghip:Tr chi Puzzle

Khoa CNTH-Vin H M HN

-Chng trnh c 4 chc nng chnh,trong quan trng nht l chc nng

X l kt thc.N bao gm cc cng vic:


+ X l cc hot ng chnh ca tr chi nh dch chuyn cc
cnh trng.
+So snh vi trng thi cn t c xt chin thng.
+So snh im vi im trong file danh sch ngi chi c im s
cao nht ghi k lc
+Xt thi gian v s ln dch chuyn gii hn x thua.

II.S dng d liu mc nh:

Page 17 of 26

SV:Phm Cng Thnh-Lp 04B1

GVHD:Nguyn c Tun

ti tt nghip:Tr chi Puzzle

Khoa CNTH-Vin H M HN

III.Cu trc chng trnh

Chng trnh bao gm 4 lp vi cc thnh phn v chc nng nh sau:

1.Lp gamer:

Page 18 of 26

SV:Phm Cng Thnh-Lp 04B1

GVHD:Nguyn c Tun

ti tt nghip:Tr chi Puzzle

Khoa CNTH-Vin H M HN

-Lp ny c ci t giao din Serializable to ra i tng phc v ghi


v c file vi lp ObjectOutputStream v ObjectInputStream:
class gamer implements Serializable
-i tng ngi chi c ghi vo file gm 2 thuc tnh l tn ngi
chi,im ca ngi chi:
gamer(String strName,int iDiem)

2.Lp writeFile:
-Phng thc void writeFile() ghi vo tp tin top.txt 5 i tng ngi chi
c to ra t lp gamer.y l 5 i tng khi to trong danh sch ngi chi
c im s cao nht.
-Phng thc void writeList(gamer[] g) ghi vo tp tin top.txt 1 mng i
tng gamer.
-Phng thc gamer[] readList() c ra tt c cc i tng gamer trong file
top.txt .Tr gi tr v cho mng gamer g.

3.Lp puzzle:
-y l lp quan trng nht ca chng trnh.N to ra mt JPanel l bn c
gm 9 nh hnh trn.Bao gm cc thnh phn chnh:
Tn bin

Chc nng

JButton btn[]

Mt mng gm 9 JButton tng ng vi 9 bn


c

String lbBtn=12345678

Nhn gn cho ln lt 9 bn c.y cng l


ch xc nh chin thng.

String lbBtns=12345687

ch so snh xc nh trng thi cht

String names

Lu tn ngi chi
Page 19 of 26

SV:Phm Cng Thnh-Lp 04B1

GVHD:Nguyn c Tun

ti tt nghip:Tr chi Puzzle

Khoa CNTH-Vin H M HN

int btnX,btnY

Gi tr xc nh v tr ca cc trn bn c khi
c click.btn[i] c btnX=i%3,btnY=i/3.

int btnOX,btnOY

Lu v tr trng.btnOX=i%3,btnOY=i/3

int diem

Gi tr lu im ca ngi chi

int move

Tnh s ln dch chuyn

int timeMax,moveMax

Gii hn v thi gian v s ln dch chuyn ca


tr chi

Boolean boSta

Xc nh game c bt u.Gi tr ca n c
ly khi ngi chi click vo nt Start Game

writeFile write

i tng c to ra t lp writeFile phc v


vic ghi v c k lc im ra file text.

gamer gms[],newGamer,tg

i tng c to ra t lp gamer lu vo
file vi thong tin im v tn ngi chi.

File f

Kim tra file text ghi danh sch ngi chi c


tn ti khng.
-Cc JOptionPane:

+Hin thng bo im ,thi gian v s ln dch chuyn cn li.Hi ngi


chi c ghi tn khng :
JOptionPane.showConfirmDialog(this,"LeftMove:"+leftMove+line+"
LeftTime:+timeMax+line+ "Your Score:" +diem + line + "Do you save
your Score?", "Congretulation", JOptionPane. YES_NO_OPTION);
+Thng bo chin thng nhng im s khng c vo top 5:
JOptionPane.showMessageDialog(this, "You Win!Try again to Top
Score!")
+Thng bo ri vo trng thi cht khng th chin thng:
JOptionPane.showMessageDialog(this, "You can't Win!Try again");
Page 20 of 26

SV:Phm Cng Thnh-Lp 04B1

GVHD:Nguyn c Tun

ti tt nghip:Tr chi Puzzle

Khoa CNTH-Vin H M HN

+Thng bo ht gi chi:
JOptionPane.showMessageDialog(this, "Het gio!You Lost!")
+Thng bo ht move:
JOptionPane.showMessageDialog(this, "Het move!You Lost!")

Tn hm

Chc nng

void emptyLabel()

Dng vng for xc nh v tr


trng,lu v tr qua btnOX,btnOY

void createBoard()

To bn c vi trng thi cc ngu


nhin

void actionPerformed

X l s kin khi cc s b click

void gameAction()

X l cc hnh ng ca game nh
kim tra cho php dch chuyn;xt gii
hn v thi gian,s ln dch chuyn;Xc
nh trng thi cui cng ;so snh danh
sch ngi chi c im s cao nht
ghi k lc mi

JLabel setText(JLabel lb,String s)

Ly ra JLabel hin th s ln dch


chuyn

void setMax(int i)

Xc nh gi tr thi gian v s ln dch


chuyn gii hn tng ng vi cc mc
kh,d.

4.Lp startGame
-y l lp chnh ca chng trnh.Ch yu tng tc vi ngi chi thng
qua 1 JMenu khi to mt game mi,thit lp kh cho tr chi.Gm cc
thnh phn v chc nng:
Page 21 of 26

SV:Phm Cng Thnh-Lp 04B1

GVHD:Nguyn c Tun

ti tt nghip:Tr chi Puzzle

Khoa CNTH-Vin H M HN

Tn bin

Chc nng

JMenuBar menuBar

Cung cp cc la chn cho ngi chi nh to


game mi,xem danh sch ngi chi c im cao
nht,thit lp kh..

JLabel lbm,lbt

Hin th s ln dch chuyn v thi gian

JButton sta

Khi ngi chi click vo nt ny th bt u tnh


thi gian v s ln dch chuyn ca game mi.

JPanel subPanel

Khung cha sta,lbm,lbt.c trnh by theo kiu


FlowLayout

Puzzle puz

i tng bn c

JPanel mainPanel

Khung cha puz v subpanel.c trnh by theo


kiu BorderLayout

int iMax

Gi tr xc nh kh no c chn m ly
ra 2 gi tr time v move hin th

Thread thrTime

Lung chy thi gian cho chng trnh

gamer gamer[]

Mng i tng ngi chi lu cc i tng


ngi chi c c t file top.txt

String top[]

Mng lu danh sch ngi chi c im s cao


nht xut ra JOptionPane

-Cc JOptionPanel:
+Hin ra danh sch ngi chi c im s cao nht:
Page 22 of 26

SV:Phm Cng Thnh-Lp 04B1

GVHD:Nguyn c Tun

ti tt nghip:Tr chi Puzzle

Khoa CNTH-Vin H M HN

JOptionPane.showMessageDialog(this,top);
+Hin thng bo hng dn v game:
JOptionPane.showMessageDialog(this, "Puzzle Game!");
-JMenuBar c cu trc nh sau:

-JMenu game gm JMenuItem new:To mt vn game mi

JMenuItem High Score:Xem danh sch top score


JMenuItem Exit:Thot khi tr chi
-JMenu Hard gm JRadioButtonMenuItem Easy:chn mc d
JRadioButtonMenuItem Normal:Mc trung bnh
JRadioButtonMenuItem Hard:Cp kh.
-JMenu Helps gm JMenuItem Author:gii thiu tc gi
JMenuItem About Game:Gii thiu v game.

Tn hm
JMenuBar createMenuBar()
void actionPerformed
class Class1 implements
Runnable

Chc nng
To menu
X l cc s kin khi ngi chi chn Menu hay
click vo nt Start Game
Lp ci t giao din Runable chy lung to
thi gian cho tr chi

IV.Tin trnh tr chi:


Page 23 of 26

SV:Phm Cng Thnh-Lp 04B1

GVHD:Nguyn c Tun

ti tt nghip:Tr chi Puzzle

Khoa CNTH-Vin H M HN

1.

Khi ng tr chi.

2.

La chn menu\Hard thit lp kh:


2.1 If chn Easy(mc nh):timeMax=120,moveMax=100
2.2 If chn Normal:timeMax=60,moveMax=50
2.3 If chn Hard:timeMax=20,moveMax=20

3. La chn menu\Game:
3.1 If chn High Score:hin danh sch ngi chi c im cao nht.
3.2 If chn Exit:thot khi tr chi.
3.3 If chn New gi createBoard() to bn c random
3.3.1 While cha click nt Start Game m click vo cnh trng
th hin thng bo yu cu click nt Start Game bt u chi.
3.3.2 Click nt Start Game:-boSta=true
-timeMax bt u gim
-Mi ln dch chuyn move+1
3.3.3 If move>=moveMax:thng bo ht move->end
3.3.4 If timeMax=0:thng bo ht gi->end
3.3.5 Sau mi ln dch chuyn kim tra chui s thu c vi lbBtn:
a.If bng nhau th tnh:diem=timeMax*3+(moveMax-move)*5.
b.Ghi danh sch ngi chi c im s cao nht vo mng gms.
c.for(i=0;i<9;i++) if diem=gms[i].txtdiem th hin thng bo cho
php ngi chi c th nhp tn.->end
3.3.6 Nu chui s thu c sau khi dch chuyn = vi lbBtns th
thng bo trng thi khng th chin thng.->end

Page 24 of 26

SV:Phm Cng Thnh-Lp 04B1

GVHD:Nguyn c Tun

ti tt nghip:Tr chi Puzzle

Khoa CNTH-Vin H M HN

4. La chn menu\Hepls:
4.1 If la chn Author hin bng gii thiu tc gi.
4.2 If chn About Game hin thng bo gii thiu v game.

PHN IV.TNG

KT

*Kt thc ti thu c mt s kt qu nh sau:


-Trnh by c mt s kin thc c bn v cng ngh Java v nn tng
J2SE.
-Lm quen v s dng th vin lp trnh JFC.
-Xy dng thnh cng tr chi Puzzle vi chc nng chnh nh sau:
Page 25 of 26

SV:Phm Cng Thnh-Lp 04B1

GVHD:Nguyn c Tun

ti tt nghip:Tr chi Puzzle

Khoa CNTH-Vin H M HN

+Cho php ngi chi dch chuyn cc s a v trng thi win.


+Cho php ngi chi lu tn v im s nu ri vo top 5.
+Thit lp kh tr chi.
+Hin ra danh sch top 5 ngi chi c im s cao nht.
*Mt s vn tn ti:
-Cha gii quyt c vn khi to random bn c,ngi chi xp v
trng thi cht,khng c chin thng.
-Cha lu k lc ngi chi theo cc cp kh khc nhau.
*Hng pht trin them:
-a thm cc hnh nh cho game sinh ng.
Ti liu tham kho

Website :
+ http://java.sun.com : Trang ch ca Sun
+ http://javavietnam.org : Din n

Page 26 of 26

SV:Phm Cng Thnh-Lp 04B1

GVHD:Nguyn c Tun

You might also like