Download - Báo cáo Project OOP
-
7/31/2019 Bo co Project OOP
1/25
TRNG I HC BCH KHOA H NI VIN CNG NGH THNG TIN V TRUYN THNG
*
BI TP LN MN: LP TRNH HNG I TNG
ti : Pht trin h thng phn mm son thocc cu ch v tr chi ch
M ti: De05A
Sinh vin thc hin: Nguyn Huy c (Nhm trng) Phm Duy Hon Giang Tun Anh Dng T Cn
Nhm sinh vin : N Lp : ICT-K54 Gio vin hng dn: TS . Cao Tun Dng
H Ni, thng 04 nm 2012
-
7/31/2019 Bo co Project OOP
2/25
2
Mc lc
Li ni u....................................................................................................................... 2PH N : T NG QUAN................................................................................................ 3
Kin thc nn tng phc v cho bi ton:.................................................................... 3PH N : PH N T CH THI T K M C KI N TR C C A BI TON.................. 3
. M t yu cu bi ton........................................................................................... 3
. Biu lp............................................................................................................ 4
. Biu tr nh t.................................................. Error! Bookmark not defined.
PH N : THI T K CHI TI T V GII PHP K THUT Y D NG CCLP V CH C N NG CH NH C A N :................................................................... 5. M t lp thuc phn chi..................................................................................... 5. M t lp thuc phn cu .................................................................................. 6. M t cc gii thut................................................................................................ 7
Phn : Kt lun v nh gi.......................................................................................... 8Phn cng cng vic nhm:......................................................................................... 8
TI LIU THAM KHO............................................................................................. 10
-
7/31/2019 Bo co Project OOP
3/25
3
L u
C l ai h c cng ngh thng tin u bit cc ngn ng lp tr nh hng i t ngu vit hn nhiu so vi cc ngn ng hng th tc iu ny c kim nghimv chng minh.Nhng nh u cc nh thit k li c th ngh ra ngn ng lp tr nhhng i t ng c l tn m ta hay g i cho n c ng bao hm cu tr li cho cuh i trn ri i t ng l mt khi nim khng h c trong lp tr nh hng th tc mi t ng ch nh l cc thc th trong th gii thc.Khi mi b t u lm quen vi lptr nh hng i t ng ch ng th cch tip cn kh tt l i vo cc v d m ranhgii gia cc i t ng r rng. Gii on ch ang l mt tr chi rt ph bin trncc t bo hay cc gameshow truyn h nh c ng o m i ngi theo d i nhOlympia, C hic nn k diu Ch ng em thy y l mt tr chi rt hay v b chng thi c ng khng kh kh n xc nh cc thc th trong h thng tr chi nyv l do nhm sinh vin b n em la ch n ti Pht trin h thng son tho cccu ch v tr chi ch ti thc hin chng tr nh m ph ng tr chi ch cho php ngi dng gii cc ch hang ngang theo g i v t on chkho chnh. Chng tr nh c vit bi ngn ng thun i t ng java.
Do mi lm quen vi ngn ng Java v vicx l cc k thut trong lp tr nhhng i t ngnn trong chng tr nh cn c nhiu hn ch. Nhmchng em mong
nhn c cc nhn xt c a thy v ti ny c a nhm nhm em c th kh c phc cc hn ch trong ti ny c th lm tt hn trong ti khc.
-
7/31/2019 Bo co Project OOP
4/25
4
P HN 1: Kin thc nn tng phc v cho bi ton:
+ Phn tch v t hit k hng i t ng bao gm : - T duy lp tr nh hng i t ng. - Cc nguyn l c bn trong lp tr nh hng i t ng (ng gi, k
tha s dng cc giao din a h nh chng phng thc...) - Bit s dng ngn ng lptrnh java.- T m hiu cch thc lp tr nh game bng phng php hng i t ng - Kin thc c bn v c s d liu v thit k c s d liu cho game
P H 2 : H H H
2.1 M t yu cu bi ton
M t tr chi ch: Tr chi ch gm c cc phn Phn : To ch
Phn cho php ngi dng son tho cu . Giao din son tho lgiao din h a tng tc ngi dng c th ko th d ch cc chsang tri phi ln hay xung. Khi d ch chuyn m ko th a m n tokha th thao tc th xung ko c tc dng
Phn : Chi Cho php ngi dng ch n cu v thc hin gii . Phn chi c
gii hn v thi gian.
2.2 Biu lp
-
7/31/2019 Bo co Project OOP
5/25
CrossWord (Lp Play)D liu ca tng hng
question, answer, hint1, hint2: String x, y: intng h v im
Clock, point, totalPoint, ran: intqColumn, aColumn: JbuttonrowButtonQ, rowButtonA: JButtoncross: Matrixtable[13]: RowCrossword()actionPerformed(ActionEvent)aColumnActionPerformed(ActionEvent)qColumnActionPerformed(ActionEvent)q1ActionPerformed(ActionEvent)a1ActionPerformed(ActionEvent)
. q12ActionPerformed(ActionEvent)a12ActionPerformed(ActionEvent)selectColumn(Event),
ompleColumn(Event),deselectColunm(Event),selectRow(Event), deselectRow(Event),
ompleteRow(Event)hintActionPerformed(Event),setActionPerformed(Event)OkActionPerformed(Event)
okKeyTyped(Event)
Matrix (Lp matrix)
- Matrix[12][16] : String
+ Matrix()
Create (Lp Nhp cu )// M ng ch a cu h i, cu tr li- string, answer[10], question[10],
hint1[10], hint2[10]: String// Bi n check iu kin i ti p- OK, Continue_butt2,Continue_butt3,
Continue_Key, lock : Boolean//Ma tr n button- butt[10][10], key[10]: JButton // Cc button trong ph n chi - butt1, butt2, butt3, butt4, butt5,
butt6: Jbutton// T a ca cc hng- x_pos[10], y_pos[10], count_db: int // T a ca t kha- Cell[10], row, x_key, y_key, x, y: int
+ Create()+ actionPerformed(ActionEvent)+ Display(Jbutton, int)+ mousePressed(MouseEvent)+ mouseDragged(MouseEvent)+ setRow(int, char[], int)+ partSpace(String)
Row (Lp hng)
- question, answer, hint1,hint2 : String- x, y : int+ setRow(String, String, String,String, int, int)
Clock (Lp ng h)- timeup: boolean- labelTime: J Label - i, j: int+ Clock(JLabel)+ Clock(int)+ Run(), Reset(), timePlay()
Cau_Do (Lp cu )- butt_Ok : Jbutton- textfield[4] : TextField- Cell[10] : int- label[] : Jlabel[10]- num_row : int- ch[10] : char- count: int+Cau_Do(int, MouseDrag)+actionPerformed(ActionEvent)+ getQuestion()+ getAnswer()+ getHint1()+ getHint2()+ partSpace(String)+checkKey(String, int, String, int)
1
H nh :Biu lp m t h th ng
1
m
1
1
1
11
-
7/31/2019 Bo co Project OOP
6/25
6
H N 3: H H H H H H H
-
7/31/2019 Bo co Project OOP
7/25
7
CHNG 1. II. S UML
-
7/31/2019 Bo co Project OOP
8/25
8
class newcrossw...
JFrame ActionListener
Cau_Do
~ butt_Ok: JButton = new JButton("OK")~ Cell: int ([]) = new int[10]~ ch: cha r ([]) = new char[10]~ count : int~ label : JLabel ([]) = new JLabel[10]~ n um_row: int~ panel: JPanel = new JPanel()- puzzle: CreatePuzzle~ textfield: T extField ([]) = new TextField[4]
+ actionPerformed(Acti onEvent) : void+ Cau_Do(int, CreatePuzzle)+ checkKey(String, int, String, int) : boolean+ getAnswer() : String+ getHint1() : String+ getHint2() : String+ getQuestion() : String+ partSpace(String) : char[]
Thread
Clock
+ i: int = 0+ j: int = 0~ lblTime: JLabel+ timeup: boolean
+ Clock(JLabel)+ reset() : void+ run() : void+ TimePl ay() : String
JFrame ActionListener
MouseListener MouseMotionListener
CreatePuzzle
+ answer: String ([]) = new String[10]~ butt: JButto n ([][]) = new JButton[10][10]~ butt1: JButton = new JButton("T...~ butt2: JButton = new JButton("T...~ butt3: JButton = new JButton("OK")~ butt4: JButton = new JButton("KEY")~ butt5: JButton = new JButton("RESET")~ butt6: JButton = new JButton("Guide")~ canDrag: boolean = false~ cau_do: Cau_Do+ Cell: Integer ([]) = new Integer[10]~ cell: int = 0- conn: Connection = null~ Continue_butt2: bool ean = false~ Continue_butt3: bool ean = false~ Continue_key: boolean = false~ count: int = -1~ count_db: in t = -1~ cur_X: int~ cur_Y: int+ hint1: String ([]) = new String[10]+ hint2: String ([]) = new String[10]~ key: JButton ([]) = new JButton[10]+ keyAnswer: String+ keyHint1: String+ keyHint2: String+ keyPanel: drawKey+ keyQuestion: String~ lock: boolean = false~ mark: int = -1+ m atrix: drawMatrix+ OK: boolean = false+ question: Stri ng ([]) = new String[10]~ row: int = 0~ row_temp: int = 0~ start_X: int~ start_Y: int~ string: String = new String()~ tmp: int = 0~ x: int = 0+ x_key: int+ x_pos: int ([]) = new int[10]~ x_pos1: int = 100~ y: int = 0+ y_key: int+ y_pos: int ([]) = new int[10]~ y_pos1: int = 70
+ actionPerformed(Acti onEvent) : void+ connect_db() : void+ CreatePuzzle()+ insert_answer(String, String, String, String, int, int) : void+ insert_key(String, String, String, String, int, int) : void+ main(String []) : void+ mouseClicked(MouseEvent) : void+ mouseDragged(MouseEvent) : void+ mouseEntered(MouseEvent) : void+ mouseExited(MouseEvent) : void+ mouseMoved(MouseEvent) : void+ mousePressed(MouseEvent) : void+ mouseReleased(MouseEvent) : void
javax.swing.JPanel
Crossword
- aColumn: JButton = new JButton("Key")- answer: String- answerText: javax.swing.JTextFiel d- aPanel: javax.swing.JPanel- botPanel: javax.swing.JPanel- clock: Clock= null- completed: boolean ([]) = new boolean[13 ]- conn: Connection = null- count: int- cross: Matrix = new Matrix()- hint: javax.swing.JButton- hint1: String- hint2: String- hintNumber: int- jLabel 1: javax.swing.JLabel- jLabel 2: javax.swing.JLabel- j ScrollPane1: javax.swing.JScrollPane- mainPanel : javax.swing.JPanel- ok: javax.swing.JButton- pLabel: javax.swing.JLabel- point: int = 0- qColumn: JButton = new JButton("Key")- qPanel: javax.swing.JPanel- question: String- questionText: javax.swing.JTextArea- ran: Random = new Random()- ranID: int- reset: javax.swing.JButton- rowButtonA: JButton ([]) = new JButton[12]- rowButtonQ: JButton ([]) = new JButton[12]- rowSelected: int- showMatrix: JLabel ([][]) = new JLabel[12][16]- table: Row ([]) = new Row[13]- time: javax.swing.JLabel- topPanel: javax.swing.JPanel- totalPoint: int = 0
- a10ActionPerformed (java.awt.event.ActionEvent) : void- a11ActionPerformed (java.awt.event.ActionEvent) : void- a12ActionPerformed (java.awt.event.ActionEvent) : void- a1ActionPerformed(j ava.awt.event.ActionEvent) : void- a2ActionPerformed(j ava.awt.event.ActionEvent) : void- a3ActionPerformed(j ava.awt.event.ActionEvent) : void- a4ActionPerformed(j ava.awt.event.ActionEvent) : void- a5ActionPerformed(j ava.awt.event.ActionEvent) : void- a6ActionPerformed(j ava.awt.event.ActionEvent) : void- a7ActionPerformed(j ava.awt.event.ActionEvent) : void- a8ActionPerformed(j ava.awt.event.ActionEvent) : void- a9ActionPerformed(j ava.awt.event.ActionEvent) : void- aColumnActionPerformed(java.awt.event.ActionEvent) : void- answerTextKeyPressed(java.awt.event.KeyEvent) : void- compleColum n() : void- compleRow(int) : void- connect_db() : void+ Crossword(int )+ Crossword()- deselectColunm() : void- deselectRow() : void- hintActi onPerformed(java.awt.event.Acti onEvent) : void- initCompon ents() : void- okActionPerformed(java.awt.event.Acti onEvent) : void- okKeyTyped(java.awt.event.KeyEvent) : void+ print_tabl e(int) : void+ print_tabl e_user(int) : void- q10ActionPerformed (java.awt.event.ActionEvent) : void- q11ActionPerformed (java.awt.event.ActionEvent) : void- q12ActionPerformed (java.awt.event.ActionEvent) : void- q1ActionPerformed(j ava.awt.event.ActionEvent) : void- q2ActionPerformed(j ava.awt.event.ActionEvent) : void- q3ActionPerformed(j ava.awt.event.ActionEvent) : void- q4ActionPerformed(j ava.awt.event.ActionEvent) : void- q5ActionPerformed(j ava.awt.event.ActionEvent) : void- q6ActionPerformed(j ava.awt.event.ActionEvent) : void- q7ActionPerformed(j ava.awt.event.ActionEvent) : void- q8ActionPerformed(j ava.awt.event.ActionEvent) : void- q9ActionPerformed(j ava.awt.event.ActionEvent) : void- qColumnActionPerformed(java.awt.event.ActionEvent) : void- resetActionPerformed(java.awt.event.Acti onEvent) : void- selectColumn() : void- selectRow(int) : void
JPanel MouseMotionListener
MouseListener
drawKey
~ cur_X: int~ cur_Y: int~ pu zzle: CreatePuzzle~ start_X: int~ start_Y: int
- addMouseMotionLi stener(drawKey) : void+ drawKey(CreatePuzzle)+ mouseClicked(MouseEvent) : void+ mouseDragged(MouseEvent) : void+ mouseEntered(MouseEvent) : void+ mouseExited(MouseEvent) : void+ mouseMoved(MouseEvent) : void+ mousePressed(MouseEvent) : void+ mouseReleased(MouseEvent) : void+ paint(Graphics) : void
JPanel
drawMatrix
~ Cell: int ([])~ ch: char ([]) = new char[10]~ ch_temp: char ([]) = new char[1]~ ch_temp1: char ([]) = new char[10]~ cur_X: int = 0~ cur_Y: int = 0+ pu zzle: CreatePuzzle~ start_X: int = 0~ start_Y: int = 0~ str_tmp: String~ x: int ([])~ y: int ([])
+ drawMatrix(CreatePuzzle, int)+ paint(Graphics) : void
GamePlay
- crossword: Crossword = new Crossword(1)- jButtonCreate: javax.swing.JButton- jButtonExi t: javax.swing.JButton- jButtonHelp: javax.swing.JButton- jButtonNewgame: javax.swing.JButton- jButtonResume: javax.swing.JButton- jframe: JFrame- jInternal Frame1: javax.swing.JInternalFrame- jLabel 1: javax.swing.JLabel- jMenuBar1: javax.swing.JMenuBar - jMenuCreate: javax.swing.JMenuItem- jMenuExi t: javax.swing.JMenuItem- jMenuHelp: javax.swing.JMenuItem- jMenuItem1 : javax.swing.JMenuItem- jMenuNewGame: javax.swing.JMenu- jMenuResume: javax.swing.JMenuItem
- cretate() : void+ GamePlay()+ GamePlay(String, GraphicsConfiguration)+ GamePlay(GraphicsConfiguration)- help() : void- HelpsActionPerformed(java.awt.event.ActionEv- initCompone nts() : void- jButtonCreateActionPerformed(java.awt.event.- jButtonExitActionPerformed(java.awt.event.Act- jButtonNewgameActionPerformed(java.awt.eve- jButtonResumeActionPerformed(java.awt.even- jButtonResumeActionPerformed1(java.awt.eve- jMenuExitActionPerformed(java.awt.event.Acti- jMenuHelpActionPerformed(java.awt.event.Act- jMenuItem1ActionPerformed(java.awt.event.A- jMenuNewGameActionPerformed(java.awt.eve- jMenuResumeActionPerformed(java.awt.event.+ main(String[] ) : void
- newGame() : void
Matrix
~ matrix: Stri ng ([][]) = new String[12][16]
+ Matrix()
JFrame ActionListener
MouseListener MouseMotionListener
MouseDrag
+ answer: String ([]) = new String[10]~ butt: JButto n ([][]) = new JButton[10][10]~ butt1: JButton = new JButton("T...~ butt2: JButton = new JButton("T...~ butt3: JButton = new JButton("OK")~ butt4: JButton = new JButton("KEY")~ butt5: JButton = new JButton("RESET")~ butt6: JButton = new JButton("Guide" )~ canDrag: boolean = false~ cau_do: Cau_Do~ Cell: Integer ([]) = new Integer[10]- conn: Connection = null~ Continue_butt2: bool ean = false~ Continue_butt3: bool ean = false~ Continue_key: boolean = false~ count: int = -1~ count_db: int = 0~ cur_X: int~ cur_Y: int+ hint1: String ([]) = new String[10]+ hint2: String ([]) = new String[10]~ key: JButton ([]) = new JButton[10]~ lock: boolean = false~ mark: int = -1+ OK: boolean = false+ question: Stri ng ([]) = new String[10]~ row: int = 0~ row_temp: int = 0~ start_X: int~ start_Y: int~ string: String = new String()~ tmp: int = 0~ x: int = 0~ x_key: int = 17~ x_pos: int ([]) = new int[10]~ x_pos1: int = 100~ y: int = 0~ y_key: int = 30~ y_pos: int ([]) = new int[10]~ y_pos1: int = 70
+ actionPerformed(Acti onEvent) : void+ connect_db() : void+ Display(JButton, int) : void+ insert_answer(String, String, String, String, int, int) : void+ insert_key(String, String, String, String, int, int) : void+ mouseClicked(MouseEvent) : void+ MouseDrag()+ mouseDragged(MouseEvent) : void+ mouseEntered(MouseEvent) : void+ mouseExited(MouseEvent) : void+ mouseMoved(MouseEvent) : void+ mousePressed(MouseEvent) : void+ mouseReleased(MouseEvent) : void+ partSpace(String) : char[]+ setAnswer() : void+ setRow(int, char[], int) : void
Row
~ answer: String~ hi nt1: String~ hi nt2: String~ qu estion: String~ x: int~ y: int
+ setRow(String, String, String, String, int, int) : void
-table
-cross
+matrix
+keyPanel
-crossword
+puzzle
~puzzle
-puzzle
-clock
~cau_do
~cau_do
-
7/31/2019 Bo co Project OOP
9/25
III. Problems and solutionsA. M t bi ton 1. Phn chi
- Khi bt u chi ngi chi chn ch , da vo ch ngi chi
chn th 1 database tng ng c kt ni, bt u khi to newCrossword vi tham s truyn vo l topicID(int) v ranID (int). - D liu database c load vo table ca Crossword bao gm:
cu hi (String question). cu tr li (String answer). gi (String hint1, hint2). ta (int x,y).
- Khi to ma trn ch t table: S dng ta xc nh v tr cc ch ci trn ma trn. tch chui (tng ch ci) phn cu tr li trongbng d liu lu vo ma trn.
- Khi to dao din ch showMatrix: S dng 1 ma trn (mng 2chiu) l cc JPanel, l 1 nh x t ma trn crossmatrix.
- Khi to cc button chn cu hi va hin th cu tr li tng ng vi ch:
Cc button c lu vo 1 mng c di tng ng vi s dng ca ch.
- Khi click vo button cu hi hng (ct) tng ng s i mu ( da
vo d liu ca cross), hin th cu hi trn textarea, thi gian (clock) btu chy (click vo cu hi khc clock s reset). Textarea s ly thng tincu h i t question (lu tr cu hi hin ti).
- Click vo button hin cu tr li thi gian s dng li., cu tr lic hin th ln ch.
- Khi chn cu hi ngi chi s nhp cu tr li vo textfield, ngichi c tr li lin tc cho n khi ng hoc ht gi. Khi ngi chinhp cu tr li sau nhn OK (hoc phm ENTER). Cu tr li c sosnh vi d liu trong table, nu ng ngi chi c cng im (200
i vi hng ngang, 400 i vi ct dc), ngi chi s b tr 25% sim ca cu hi vi mi ln gi (mi cu hi c ti a 2 gi ). - Khi chn cu hi cu tr li ca cu hi c lu vo 1 String
answer, khi ngi chi nhp cu tr li s so snh a ra kt qung hoc sai. Ngoi ra khi ngi chi chn gi s c 1 bin m m s ln gi v tr im tng ng vi s ln gi .
- ngi chi mun chi li ch th n vo nt reset, trng thi chtr v ban u. - i mu ch, im, thi gian tr v nh ban u.
-
7/31/2019 Bo co Project OOP
10/25
10
-Khi thot chng trnh ngi chi s c hi c lu li ch haykhng nu lu li th cc trng thi ca ch s c lu trong filesave.txt. Cc thong s lu li bao gm:
topicID (ch ca ch) ranID (id ca ch trong database) totalPoint (im ca ngi chi)
iscompletete*+ (l 1 mng lu trng thi tng hng ct c kiud liu boolean, nu hng hay ct c gii th c gi tr true,cn khng s c gi tr false.
- Khi load ch, chng trnh s khi to ch theo topicID v ranID lu trong file save, sau s kim tra im v cc trng thi ca hngv ct np vo giao din.
2. Phn To ch - Ngi chi nhp s lng hng (s lng cu ). S ch c
nm trong khong t 1 n 10. Nu khng nhp g th s bo li. - Nhp s lng cho tng hng. S lng cng ch t 1-10. Nu
khng nhp s bo li. - Sau khi kt thc vic nhp hng v , ngi dng c th ko th
ch (ln xung, tri phi) ti v tr mong mun. - Bt u vic to cu . to cu , ngi chi s phi nhp y
4 thng tin:
Cu hi + Cu tr li + Hint1 v Hint2
- chc chn rng ngi chi to phn cu c ngha th chngtrnh s kim tra tnh hp l ca cu va to:
u tin nhp t kha. S lng t kha bng s hng Nhp tng thng tin cho tng cu v check
Chng hn: Nu t kha l ANH. Cu ang nhp l cu 1th v tr cha t kha ca answer*1+ trng vi ch A. Nu ko s
b bo li. - Sau khi nhp xong, nhn OK kt thc.
B. Chi tit cc lp 1. Lp matrix a. Mc ch:
Ma trn Cells l mt hnh vung gm cc , l nn cc hngch chy trn
b. Thuc tnh:
-
7/31/2019 Bo co Project OOP
11/25
11
c. Ccphng thc + Phng thc paint(Graphics g)
* Mc ch:V ra ma trn ch ng thi v text ln cc ch. Ma trnc cu to gm c mu xm ( ch ko cha text), mu vng( ch c cha text), mu ( ch thuc t kha)
* Gii php: v ma trn cc nh trn, nhm dng 2 phng thc
ch yu : fillRect()v drawRect(). print cc k t ra cc ch, nhm s chuyn mi string cu
tr li thnh mng k t, sau chuyn tng k t thnh mtchui ri in ra ch s dng phng thc: g2D.drawString()
STT
Thuc tnh Types
Mc ch
1 start_X int t a x lc nh p chu t
2 start_Y int t a y lc nh p chu t3 cur_X int t a x hin ti (Lc ko chu t)4 cur_Y int t a y hin ti (Lc ko chu t)5 x[] int ph n t x[i] cha ta x ca
hng th i6 y[] int ph n t y[i] cha ta y ca
hng th i7 Cell[] int ph n tCell[i] cha s lng
ch trong hng i8 str_tmp Stri
ngl mt xu k t (tm th i)
9 ch_temp[] char l m ng cc k t c castr_tmp
-
7/31/2019 Bo co Project OOP
12/25
12
C th nh sau:for (int i = 0; i < 10; i++) {
// Chuyen string answer thanh mang ki tuif(i >= puzzle.mark && i < puzzle.mark + puzzle.row)
ch = puzzle.answer[i - puzzle.mark].toCharArray();for (int j = 0; j < 10; j++) {// Ve ma tran o
g2d.setColor(Color.GREEN);g2d.draw3DRect(i * 46, j * 46, 43, 43, true);
// Ve o mau vangif (j >= puzzle.x_pos[i] / 46 && j < puzzle.x_pos[i] / 46 +
puzzle.Cell[i]) {ch_temp[0] = ch[j - puzzle.x_pos[i] / 46];str_tmp = new String(ch_temp);g2d.setColor(Color.ORANGE);g2d.fill3DRect(j * 46 + 1, puzzle.y_pos[i] + 1, 42, 42, true);// Ve chu cho tung hangg2d.setColor(Color.red);if(str_tmp.equals("I"))
g2d.drawString(str_tmp, j * 46 + 20, puzzle.y_pos[i] +28);
elseg2d.drawString(str_tmp, j * 46 + 15, puzzle.y_pos[i] +28);
// Boi Do tu khoaif (puzzle.lock == true) {
ch_temp1 = puzzle.keyAnswer.toCharArray();if (j == puzzle.x_key / 46) {
// Ve O cua tu khoag2d.setColor(Color.RED);
g2d.fill3DRect(j * 46 + 1, puzzle.y_pos[i] + 1, 42, 42,true);
}// Print chu ra tu khoafor (int k = puzzle.mark; k < puzzle.row + puzzle.mark;
k++) {ch_temp[0] = ch_temp1[k - puzzle.mark];str_tmp = new String(ch_temp);g2d.setColor(Color.WHITE);
-
7/31/2019 Bo co Project OOP
13/25
13
g2d.drawString(str_tmp, puzzle.x_key - 2, k * 46 +28);
}}
2. Lp Cau_Do a. Thuc tnh S
TTTn thu c
tnhType ngha
1 Cell int[] Cell[i] ch a s ca hng i2 butt_Ok JButto
nbutton dng k t thc vi c
nhp d liu3 count int m s k t c trong m t chu i
4 label JLabel[]
nhn trn m i textField
5 num_row int s lng hng cu trong m tma tr n
6 textfield TextField[]
nhp d liu cho cu h i,cu tr li, hint1 v hint2
b. Mc ch:Lp ny dng cho ngi dng to cu : cu hi, cu tr li,
hint1 v hint2.c. Phng thc chnh:
actionPerformed(ActionEvent e): to s kin khi nhn button OK getAnswer(): Ly cu tr li t textField answer. getQuestion(): Ly cu hi t textField question. getHint1(): Ly gi 1 t textField Hint1.
* getHin t2(): Ly gi 2 t textField Hint2. checkKey(String, int, String, int): Phng thc ny s kim tra xem
chui answer nhp vo c ph hp vi t kha hay khng. iu kin
phng thc tr v true l k t ti v tr th i trong t kha phi bngtrng vi k t th x_key trong hng i. C th nh sau:public boolean checkKey(String string1, int pos_1, String answer, int
pos_2) {char[] ch1 = partSpace(string1);char[] ch2 = partSpace(answer);if (ch1[pos_1] == ch2[pos_2]) {
return true;
}return false;
-
7/31/2019 Bo co Project OOP
14/25
14
}3. Lp drawKey
a. Mc ch:Lp drawKey to ra mt panel c cha kha. Ngi dng c th
ko chn v tr ca kha theo mong mun.b. Thuc tnh:
STT
Tn thu ctnh
Type M t
1 cur_X int V tr t a x ca chu t hinti
2 cur_Y int V tr t a y ca chu t hinti
3start_X
int V tr t a x ca chu t lcxut pht
4 start_Y int V tr t a y ca chu t lcxu t pht
5 puzzle CreatePuzzle
i tng puzzle
c. Cc phng thc chnh mousePressed(): ly ta ca chut khi nhp chut
paint(): V hnh tha kha da theo ta hin thi ca kha mouseDrag(): ko th chut Bt ta ca chut lc nhp(start_X) v lc ko (cur_X).
+ |cur_X start_X| >= 35 th v li kha vi phng thc repaint() Solution:public void mouseDragged(MouseEvent e) {
cur_X = e.getX();cur_Y = e.getY();if (start_Y > 30 && start_Y < 60) {
if (start_X >= puzzle.x_key - 20 && start_X = 35) {
puzzle.x_key += 46;repaint();
// Swap cur and start x, ystart_X = cur_X;
}
-
7/31/2019 Bo co Project OOP
15/25
15
}if (puzzle.x_key >= 23) {
if (cur_X - start_X
-
7/31/2019 Bo co Project OOP
16/25
16
0 ean1
1cau_do Cau
_DoGiao di n cho ngi dng nh p d liu v c
1
2
count_db int Bi n m s hng nhp d liu
13
cur_X int T a x hin ti
14
cur_Y int T a y hin ti
15
hint1 String[]
hint1[i] ch a t gi 1 ca hng th i
16
hint2 String[]
hint2[i] ch a t gi 2 ca hng th i
17
question String[]
question[i] ch a cu h i ca hng th i
18
x_pos int[] x_pos[i] ch a ta x ca cu hng th i
19
y_pos int[] y_pos[i] ch a ta y ca cu hng th i
20
x_key,y_key
int Ta x, y ca t kha
c. Cc phng thc chnh: * actionPerformed(ActionEvent e): Lng nghe s kin khi click cc
nt* mousePressed(ActionEvent e): Ly cc ta ca chut khi nhp
chut * mouseDrag(ActionEvent e): Ko th cc ch
+ c th ko ch sang trai hoc sang phi, ta s bt ta start_X v cur_X. Nu nh (cur_X start_X) >= 35 th dchsang phi bng cch v li ma trn (repaint).
if (cur_X - start_X >= 35) {x_pos[i] += 46;// Ve lai ma tran O
matrix.repaint();// Swap currrent and starting Co-ordinatesstart_X = cur_X;
start_Y = cur_Y;
}+ Nu (start_X cur_X) < - 35 th ch dch sang tri.
-
7/31/2019 Bo co Project OOP
17/25
17
if ((cur_X - start_X 0)) {x_pos[i] -= 46;// Ve lai ma tran Omatrix.repaint();
// Swap Cur and Startstart_X = cur_X;start_Y = cur_Y;
}+ ko ln hoc xung, ta s da vo ta ca start_Y v
cur_Y Nu (cur_Y- start_Y) >= 43, th dch ch xung di mt
bng repaint() if (y_pos[i] = 43) {int c;
// swap Xc = x_pos[i];
x_pos[i] = x_pos[i + 1];x_pos[i + 1] = c;
// Swap Cellc = Cell[i];
Cell[i] = Cell[i + 1];Cell[i + 1] = c;// Ve lai ma tran Omatrix.repaint();
// Swap Cur and Startstart_Y = cur_Y;
}}
+ Nu (cur_Y start_Y)
-
7/31/2019 Bo co Project OOP
18/25
18
Cell[i - 1] = c;// Ve lai ma tran O
matrix.repaint();// Swap Cur and Start
start_Y = cur_Y;}
}
4. Lp Rowa. Mc ch:
L mt bn ghi khi nhp d liu t database, d liu t databases c lu vo mng table*+, vi mi phn t l lp Row.
b. Thuc tnh S
TTThuctnh
Type
M t
1 question String
Dng lu cu hi
2 answer String
Dng lu cu trli
3 hint1 String Dng lu gi 1
4 hint2 String
Dng lu gi 2
5 x int Lu ta x ca hng cu 6 y int Lu ta y ca hng cu
c. Phng thc * setRow(String, String, String, String, int, int): Thit lp d liu cho
hng5. Lp Matrix
a. Mc ch l ma trn ch c to nn t d liu trong table*+
b. Thuc tnh Matrix*+*+: mng 2 chiu kiu String.
c. Phng thc Matrix(): Khi to ma trn string, thit lp tt c cc phn t c gi
tr l a. 6. Lp Clock (tha k lp Thread)
-
7/31/2019 Bo co Project OOP
19/25
19
a. Mc ch L ng h m thi gian khi gii ch
b. Thuc tnh
STT
Thuctnh
Type M t
1 timeLeft int Th i gian cn l i2 timePass int Th i gian chy3 label Jlabel Hi n th thi gian4 end boole
anKi m tra h t th i gian cha
c. Phng thc * start(): Bt u m thi gian. S dng hm sleep ca Thread ca
java l ng h tnh thi gian. C mi ln sleep1 giy th bin m gim i 1 cho n khi bin m v 0.
* stop(): Dng thi gian. S dng hm stop() c sn trong Thread,khi ngng hm run() th bin m s ngng li.
* reset(): Khi phc li thi gian bng cch khi to li bin m vgi tr ban u.
7. Lp CrossWord a. M t
Lp ny c tha k t lp Jpanel ca java. y l lp chnh trongphn gamePlay.b. Thuc tnh
STT
Thuctnh
Type M t
1 conn Connection
Dng k t n i vi database
2 ran random
Chn ng u nhin ch trong dtbase
3 ranID int ID c a ch c chn4 table Row[] M ng g m nhi u Row, dng lu dliu5 toatalPoin
tint T ng s im ca ngi chi
6 answer String Lu cu trli hin ti7 question String Lu cu hi hin ti8 buttons butto
n[]
Dng hin th cu h i, cu tr li v gi
, chi li ch 9 textField_ textFil Dng hi n th cu h i, gi v cu tr
-
7/31/2019 Bo co Project OOP
20/25
20
ed li1
0showMatr
ixJLabel
[]Hi n th ch ln giao di n
c. Phng thc * selectRow(int row): La chn cn tr li. i mu chn da vo ta
. Solution:private void selectColumn() {
hint.setEnabled(true);deselectRow();qColumn.setEnabled(false);
hintNumber = 0;this.rowSelected = 13;this.question = table [0].question;this.answer = table [0].answer.toUpperCase();this.hint1 = table [0].hint1;this.hint2 = table [0].hint2;questionText.setText(this.question);if (!completeted [0]) {
answerText.setText("");
for (int i = 1; i
-
7/31/2019 Bo co Project OOP
21/25
21
for(int j= table [i].x;j< table [i].x+table [i].answer.length();j++){
if (!(j == table [0].x)) {
showMatrix [table [i].y][j].setBackground(Color. YELLOW );}
}}
* CompleteRow(int r ow): Hin p n hng c chn Solution:void completeRow(int n) {
if ( clock !=null) {clock .stop();
}answerText.setText(this.answer);for (int i = table [n].x; i< table [n].x + table [n].answer.length(); i++) {
if (!(i == table [0].x)) {
showMatrix [table [n].y][i].setBackground(Color. ORANGE );}
showMatrix [table [n].y][i].setText(""+ cross .matrix[ table [n].y][i]);}completeted [n] = true;rowButtonQ [n - 1].setEnabled(false);
}8. Phn to c s d liu a. Phn to c s d liu:
Gameplay c 3 ch tng ng cho ngi chi la chn:
Th thao gii tr Vn ho x hi Ch t chn
Trong database s c 3 bng dnh cho cc t kho ca cc ch tng
ng gm c: Bng key_question1: dnh cho cc t kho thuc ch th
thao gii tr
-
7/31/2019 Bo co Project OOP
22/25
22
Bng key_question2: dnh cho cc t kho thuc ch
bn ho x hi Bng key_user: dnh cho cc t kho ngi chi to ra
trc
Vi cc t kho thuc bng key_question1 v key_question2, cc t hng
ngang a n t kho p n tng ng s c lu vo trong bng
answer trong database. Mi t hng ngang c lu trong bng s c mt
keyID l m s ca t kho hng dc tng ng.
Tng t, vi cc t kho thuc bng key_user, cc t hng ngang c
lu vo bng answer_key vi mt keyID l m s t kho hng dc tng ng.
b. Phn chi:
i. Phn gameplay
Khi bt u chi ngi chi chn ch , da vo ch ngi chi chn
th 1 bng tng ng trong database s c kt ni, bt u khi to newCrossword.
Sau d liu t database s c load vo bng table ca crossword. v
tr hng th 0 ( table*0+) chng trnh s load cc d kin ca t kho mt
trong cc bng t kho tng ng vi ch ngi chi chn. Sau cc
v tr tip theo ( table*i+ ) s load cc d kin ca cc t hng ngang ng vi t
kho tng ng chn. Vi cc ch th thao gii tr v vn ho x hi: ngi chi
s chn 1 trong 2 ch tng ng. Cc ch s c mt m s
(topicID). ng vi m ca tng ch m chng trnh s load
bng t kho trong database. V d: khi ngi chi chn ch
th thao gii tr vi m topicID trong menu hin ra tng ng l 1,
chng trnh s t ng load d liu ca t kho t trong bng
-
7/31/2019 Bo co Project OOP
23/25
23
key_question1 vo table*0+. Sau khi load t kho, cc t hng
ngang c m s t kho c chn s c load t trong bng
answer vo cc v tr table*i+. Vi ch t chn: ng vi m ch , chng trnh s
load d liu trong bng t kho key_user trong database vo
table*0+. Sau cc t hng ngang c m s t kho tng ng s
c load tu bng answer_user vo cc v tr table*i+.
ii. Phn to cu
Khi ngi chi to mt cu , cc d liu ca t kho ca cu s
c lu vo trong bng key_user. Sau mt vng lp c to ng
vi s lng ch ci trong t kho (s lng hng ngang). Khi ngi
dng nhp cc t hng ngang tng ng cho t kho c to, cc
d liu ca mi t hng ngang s c lu trong cc mng. Sau vng
lp ln lt qut cc mng (vi mi ln lp, cc ch s ca cc mng
tng ng s thuc v mt t hng ngang tng ng). Vi mi ln lpnh vy, mt t hng ngang tng ng vi t kho s c lu vo mt
bn ghi trong bng answer_user vi m t kho (keyID) tng ng.
H 4: H
-
7/31/2019 Bo co Project OOP
24/25
24
- Kt qu t c:qua qu tr nh lm bi tp ln nhm ci thin c kh nhiutinh thn v k n ng lm vic theo nhm ng thi nng cao r rt v kh n ng sdng ngn ng java vo cc ng dng khc. - Khuyt im cn tn ti:tuy b n em rt n lc nhng khng th trnh c sai
st mt s on gameplay c a phn ngi chi ko th cha c th hin ch nh xc.Ngoi r a giao din dnh cho ngi chi ko th to ch c ng cha thn thin vingi chi.
Tho lun chung a ra nh hng gm c:
- Phn t ch yu cu. - Thng nht thut ton- To biu Use Case- Biu tr nh t
C nhn m i ngi: 1. Nguyn Huy c: code giao din h a v thut ton phn dnh
cho ngi chi ko th to ch 2. Phm Duy Hon: to c s d liu kt ni v truy xut c s d
liu 3. Giang Tun Anh: code giao din v gameplay phn chi mi.4. Dng T Cn: code giao din ch nh
K hoch lm vic:
Tun :- To nhm v ch n ch thc hin
Tun -5 :
- T m hiu ngn ng java v lp tr nh h a - Phn t ch bi ton - a ra cc yu cu c a bi ton v thut ton - Vit cc biu lp
Tun -9:
- Thit k giao din - Ch nh s a thut ton s dng trong bi ton
-
7/31/2019 Bo co Project OOP
25/25
Tun10-11:
- Ch nh s a giao din h a - Hon thin chng tr nh v test kim sot li
Tun - Test- Vit bo co theo cng chi tit - Quay video m t hot ng c a thang my v cc chc n ng c a thang
my - Ghi a CD v in bo co mn h c - Np bn ton b chng tr nh v bo co
Tun 3 -15 :- Bo v n mn h c - Nghe nhn xt c a thy v r t ra kinh nghim cho bn thn
TI LIU THAM KHO
- Slide bi ging c Nguyn Th Thu Trang b mn Cng ngh phn mm HBKHN.
- Lp tr nh h a trn java D v D ngun:tailieu.vn
- Gio tr nh java sun c a nhm pht trin phn mm SSDG
- Nhiu ti liu ting Vit khc
- Java How to Program SeventhEdition By H. M. Deitel - Deitel &Associates, Inc., P. J. Deitel - Deitel & Associates, Inc.