You are on page 1of 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 tho cc 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

Mc lc
Li ni u .......................................................................................................................2 PH N : T NG QUAN................................................................................................3 Kin thc nn tng phc v cho bi ton:....................................................................3 PH 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 CC LP 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. .........................................................................................8 Phn cng cng vic nhm: .........................................................................................8 TI LIU THAM KHO .............................................................................................10

C l ai h c cng ngh thng tin u bit cc ngn ng lp tr nh hng i t ng u vit hn nhiu so vi cc ngn ng hng th tc iu ny c kim nghim v chng minh.Nhng nh u cc nh thit k li c th ngh ra ngn ng lp tr nh hng i t ng c l tn m ta hay g i cho n c ng bao hm cu tr li cho cu h i trn ri i t ng l mt khi nim khng h c trong lp tr nh hng th tc m i t ng ch nh l cc thc th trong th gii thc.Khi mi b t u lm quen vi lp tr nh hng i t ng ch ng th cch tip cn kh tt l i vo cc v d m ranh gii gia cc i t ng r rng. Gii on ch ang l mt tr chi rt ph bin trn cc t bo hay cc gameshow truyn h nh c ng o m i ngi theo d i nh Olympia, Chic nn k diu Ch ng em thy y l mt tr chi rt hay v b ch ng thi c ng khng kh kh n xc nh cc thc th trong h thng tr chi ny v l do nhm sinh vin b n em la ch n ti Pht trin h thng son tho cc cu 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 ch kho chnh. Chng tr nh c vit bi ngn ng thun i t ng java. Do mi lm quen vi ngn ng Java v vic x l cc k thut trong lp tr nh hng i t ng nn trong chng tr nh cn c nhiu hn ch. Nhm chng 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.

PHN 1:
Kin thc nn tng phc v cho bi ton:
+ Phn tch v thit 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 lp trnh 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

PH

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 l giao din h a tng tc ngi dng c th ko th d ch cc ch sang tri phi ln hay xung. Khi d ch chuyn m ko th a m n to kha 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

CrossWord (Lp Play) // D liu ca tng hng - question, answer, hint1, hint2: String - x, y: int // ng h v im - Clock, point, totalPoint, ran: int - qColumn, aColumn: Jbutton - rowButtonQ, rowButtonA: JButton - cross: Matrix - table[13]: Row + Crossword() + actionPerformed(ActionEvent) + aColumnActionPerformed(ActionEvent) + qColumnActionPerformed(ActionEvent) + q1ActionPerformed(ActionEvent) + a1ActionPerformed(ActionEvent) . + q12ActionPerformed(ActionEvent) + a12ActionPerformed(ActionEvent) + selectColumn(Event), compleColumn(Event), deselectColunm(Event), + selectRow(Event), deselectRow(Event), completeRow(Event) + hintActionPerformed(Event), resetActionPerformed(Event) + OkActionPerformed(Event) + okKeyTyped(Event)

Matrix (Lp matrix)

- Matrix[12][16] : String + Matrix() Row (Lp hng)

1 1 1 1 1

- question, answer, hint1, hint2 : String - x, y : int + setRow(String, String, String, String, int, int) Clock (Lp ng h) - timeup: boolean - labelTime: JLabel - 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)

Create (Lp Nhp cu ) // Mng cha cu hi, cu tr li - string, answer[10], question[10], hint1[10], hint2[10]: String // Bin check iu kin i tip - OK, Continue_butt2, Continue_butt3, Continue_Key, lock : Boolean //Ma trn button - butt[10][10], key[10]: JButton // Cc button trong phn chi - butt1, butt2, butt3, butt4, butt5, butt6: Jbutton // Ta ca cc hng - x_pos[10], y_pos[10], count_db: int // Ta 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)

H nh :Biu lp m t h thng

H N 3: H

H H

H H

H H

CHNG 1. II. S UML

class new crossw ... JPanel MouseMotionListener MouseListener draw Key ~ ~ ~ ~ ~ + + + + + + + + + cur_X: int cur_Y: int puzzle: CreatePuzzle start_X: int start_Y: int addMouseMotionListener(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 +keyPanel JFrame ActionListener MouseListener MouseMotionListener CreatePuzzle + ~ ~ ~ ~ ~ ~ ~ ~ ~ + ~ ~ ~ ~ ~ ~ ~ ~ + + ~ + + + + + ~ ~ + + + ~ ~ ~ ~ ~ ~ ~ + + ~ ~ + + ~ + + + + + + + + + + + + + answer: String ([]) = new String[10] butt: JButton ([][]) = 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: boolean = false Continue_butt3: boolean = false Continue_key: boolean = false count: int = -1 count_db: int = -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 matrix: drawMatrix OK: boolean = false question: String ([]) = 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(ActionEvent) : 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 MouseDrag + ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ + + ~ ~ ~ + + ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ + + + + + + + + + + + + + + + + answer: String ([]) = new String[10] butt: JButton ([][]) = 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: boolean = false Continue_butt3: boolean = 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: String ([]) = 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(ActionEvent) : 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 Thread Matrix ~ + matrix: String ([][]) = new String[12][16] Matrix() -cross + + ~ + + + + + Clock i: int = 0 j: int = 0 lblT ime: JLabel timeup: boolean Clock(JLabel) reset() : void run() : void T imePlay() : String ~ ~ ~ ~ ~ ~ + answer: String hint1: String hint2: String question: String x: int y: int setRow(String, String, String, String, int, int) : void -table

JPanel draw Matrix ~ ~ ~ ~ ~ ~ + ~ ~ ~ ~ ~ + + 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 puzzle: CreatePuzzle start_X: int = 0 start_Y: int = 0 str_tmp: String x: int ([]) y: int ([]) drawMatrix(CreatePuzzle, int) paint(Graphics) : void +matrix

JFrame ActionListener MouseListener MouseMotionListener

Row

-clock javax.swing.JPanel Crossw ord + + + + aColumn: JButton = new JButton("Key") answer: String answerT ext: javax.swing.JT extField 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 jLabel1: javax.swing.JLabel jLabel2: javax.swing.JLabel jScrollPane1: 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 questionT ext: javax.swing.JT extArea 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(java.awt.event.ActionEvent) : void a2ActionPerformed(java.awt.event.ActionEvent) : void a3ActionPerformed(java.awt.event.ActionEvent) : void a4ActionPerformed(java.awt.event.ActionEvent) : void a5ActionPerformed(java.awt.event.ActionEvent) : void a6ActionPerformed(java.awt.event.ActionEvent) : void a7ActionPerformed(java.awt.event.ActionEvent) : void a8ActionPerformed(java.awt.event.ActionEvent) : void a9ActionPerformed(java.awt.event.ActionEvent) : void aColumnActionPerformed(java.awt.event.ActionEvent) : void answerT extKeyPressed(java.awt.event.KeyEvent) : void compleColumn() : void compleRow(int) : void connect_db() : void Crossword(int) Crossword() deselectColunm() : void deselectRow() : void hintActionPerformed(java.awt.event.ActionEvent) : void initComponents() : void okActionPerformed(java.awt.event.ActionEvent) : void okKeyT yped(java.awt.event.KeyEvent) : void print_table(int) : void print_table_user(int) : void q10ActionPerformed(java.awt.event.ActionEvent) : void q11ActionPerformed(java.awt.event.ActionEvent) : void q12ActionPerformed(java.awt.event.ActionEvent) : void q1ActionPerformed(java.awt.event.ActionEvent) : void q2ActionPerformed(java.awt.event.ActionEvent) : void q3ActionPerformed(java.awt.event.ActionEvent) : void q4ActionPerformed(java.awt.event.ActionEvent) : void q5ActionPerformed(java.awt.event.ActionEvent) : void q6ActionPerformed(java.awt.event.ActionEvent) : void q7ActionPerformed(java.awt.event.ActionEvent) : void q8ActionPerformed(java.awt.event.ActionEvent) : void q9ActionPerformed(java.awt.event.ActionEvent) : void qColumnActionPerformed(java.awt.event.ActionEvent) : void resetActionPerformed(java.awt.event.ActionEvent) : void selectColumn() : void selectRow(int) : void

+puzzle

GamePlay + + + + crossword: Crossword = new Crossword(1) jButtonCreate: javax.swing.JButton jButtonExit: javax.swing.JButton jButtonHelp: javax.swing.JButton jButtonNewgame: javax.swing.JButton jButtonResume: javax.swing.JButton jframe: JFrame jInternalFrame1: javax.swing.JInternalFrame jLabel1: javax.swing.JLabel jMenuBar1: javax.swing.JMenuBar jMenuCreate: javax.swing.JMenuItem jMenuExit: javax.swing.JMenuItem jMenuHelp: javax.swing.JMenuItem jMenuItem1: javax.swing.JMenuItem jMenuNewGame: javax.swing.JMenu jMenuResume: javax.swing.JMenuItem

~puzzle

-crossword

-puzzle

cretate() : void GamePlay() GamePlay(String, GraphicsConfiguration) GamePlay(GraphicsConfiguration) help() : void HelpsActionPerformed(java.awt.event.ActionEv initComponents() : void jButtonCreateActionPerformed(java.awt.event.A jButtonExitActionPerformed(java.awt.event.Acti jButtonNewgameActionPerformed(java.awt.even jButtonResumeActionPerformed(java.awt.event jButtonResumeActionPerformed1(java.awt.even jMenuExitActionPerformed(java.awt.event.Actio jMenuHelpActionPerformed(java.awt.event.Acti jMenuItem1ActionPerformed(java.awt.event.Ac jMenuNewGameActionPerformed(java.awt.even jMenuResumeActionPerformed(java.awt.event. main(String[]) : void newGame() : void

~cau_do JFrame ActionListener Cau_Do ~ ~ ~ ~ ~ ~ ~ ~ + + + + + + + + butt_Ok: JButton = new JButton("OK") Cell: int ([]) = new int[10] ch: char ([]) = new char[10] count: int label: JLabel ([]) = new JLabel[10] num_row: int panel: JPanel = new JPanel() puzzle: CreatePuzzle textfield: T extField ([]) = new T extField[4] actionPerformed(ActionEvent) : void Cau_Do(int, CreatePuzzle) checkKey(String, int, String, int) : boolean getAnswer() : String getHint1() : String getHint2() : String getQuestion() : String partSpace(String) : char[]

~cau_do

III. Problems and solutions A. 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 new Crossword 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 trong bng d liu lu vo ma trn. - Khi to dao din ch showMatrix: S dng 1 ma trn (mng 2 chiu) 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) bt u chy (click vo cu hi khc clock s reset). Textarea s ly thng tin cu hi t question (lu tr cu hi hin ti). - Click vo button hin cu tr li thi gian s dng li., cu tr li c hin th ln ch. - Khi chn cu hi ngi chi s nhp cu tr li vo textfield, ngi chi c tr li lin tc cho n khi ng hoc ht gi. Khi ngi chi nhp cu tr li sau nhn OK (hoc phm ENTER). Cu tr li c so snh 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% s im 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 qu ng 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 ch tr v ban u. - i mu ch, im, thi gian tr v nh ban u.

-Khi thot chng trnh ngi chi s c hi c lu li ch hay khng nu lu li th cc trng thi ca ch s c lu trong file save.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 kiu d 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 hng v 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 chng trnh 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 1 th 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 hng ch chy trn b. Thuc tnh:

10

S TT 1 2 3 4 5 6 7 8 9

Thuc tnh start_X start_Y cur_X cur_Y x[] y[] Cell[] str_tmp ng ch_temp[]

Typ es int int int int int int int Stri char

Mc ch ta x lc nhp chut ta y lc nhp chut ta x hin ti (Lc ko chut) ta y hin ti (Lc ko chut) phn t x[i] cha ta x ca hng th i phn t y[i] cha ta y ca hng th i phn t Cell[i] cha s lng ch trong hng i l mt xu k t (tm thi) l mng cc k t c ca str_tmp

c. Ccphng thc + Phng thc paint(Graphics g) * Mc ch: V ra ma trn ch ng thi v text ln cc ch. Ma trn c 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 mt chui ri in ra ch s dng phng thc: g2D.drawString()

11

C th nh sau: for (int i = 0; i < 10; i++) { // Chuyen string answer thanh mang ki tu if(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 vang if (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 hang g2d.setColor(Color.red); if(str_tmp.equals("I")) g2d.drawString(str_tmp, j * 46 + 20, puzzle.y_pos[i] + 28); else g2d.drawString(str_tmp, j * 46 + 15, puzzle.y_pos[i] + 28); // Boi Do tu khoa if (puzzle.lock == true) { ch_temp1 = puzzle.keyAnswer.toCharArray(); if (j == puzzle.x_key / 46) { // Ve O cua tu khoa g2d.setColor(Color.RED); g2d.fill3DRect(j * 46 + 1, puzzle.y_pos[i] + 1, 42, 42, true); } // Print chu ra tu khoa for (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);

12

g2d.drawString(str_tmp, puzzle.x_key - 2, k * 46 + 28); } } 2. Lp Cau_Do a. Thuc tnh S Tn thuc TT tnh 1 Cell 2 3 4 5 6 butt_Ok n count label ] num_row textfield s lng hng cu trong mt ma trn TextFie nhp d liu cho cu hi, ld[] cu tr li, hint1 v hint2 int int JLabel[

Type int[] JButto

ngha Cell[i] cha s ca hng i button dng kt thc vic nhp d liu m s k t c trong mt chui nhn trn mi textField

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. * getHint2(): 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 bng trng 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;
13

} 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: S Tn thuc Type M t TT tnh 1 cur_X int V tr ta x ca chut hin ti 2 cur_Y int V tr ta y ca chut hin ti 3 int V tr ta x ca chut lc start_X xut pht 4 start_Y int V tr ta y ca chut lc xut pht 5 puzzle CreatePu i tng puzzle zzle 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 <= puzzle.x_key + 30) { if (puzzle.x_key < 420) { if (cur_X - start_X >= 35) { puzzle.x_key += 46; repaint(); // Swap cur and start x, y start_X = cur_X; }

14

} if (puzzle.x_key >= 23) { if (cur_X - start_X <= -46) { puzzle.x_key -= 46; repaint(); // Swap cur and start x, y start_X = cur_X; } } } } 3. Lp CreatePuzzle a. Mc ch: y l lp chnh trong phn to cu . Lp CreatePuzzle c nhim v to giao din cho ngi dng khi to ch. Giao din ca mt i tng CreatePuzzle gm c: Panel cha kha, panel cha ch v panel cha cc button la chn. b. Thuc tnh S Tn Type M t TT 1 Cell int[] Cell[i] cha s lng ch ca hng th i 2 Continue_b bool Kim tra k chnc button 2 utt2 ean 3 Continue_b bool Kim tra k chn c button 3 utt4 ean 4 OK bool ean 5 answer Strin answer[i] cha cu tr li ca hng th i g[] 6 butt1 JBut Button to hng ton 7 butt2 JBut Button to cu ton 8 butt3 JBut Button kt thc ton 9 butt4 JBut Button Reset ton 9 butt5 JBut Button Help ton 1 canDrag bool Kim tra k ko th
15

0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 x_key, y_key y_pos x_pos question hint2 hint1 cur_Y cur_X count_db cau_do

ean Cau _Do int int int Strin g[] Strin g[] Strin g[] int[] int[] int

Giao din cho ngi dng nhp d liu v cu Bin m s hng nhp d liu Ta x hin ti Ta y hin ti hint1[i] cha t gi 1 ca hng th i hint2[i] cha t gi 2 ca hng th i question[i] cha cu hi ca hng th i x_pos[i] cha ta x ca cu hng th i y_pos[i] cha ta y ca cu hng th i 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 dch sang 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-ordinates start_X = cur_X; start_Y = cur_Y; } + Nu (start_X cur_X) < -35 th ch dch sang tri.
16

if ((cur_X - start_X <= -35) && (x_pos[i] > 0)) { x_pos[i] -= 46; // Ve lai ma tran O matrix.repaint(); // Swap Cur and Start start_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] <= 438) { if (cur_Y - start_Y >= 43) { int c; // swap X c = x_pos[i]; x_pos[i] = x_pos[i + 1]; x_pos[i + 1] = c; // Swap Cell c = Cell[i]; Cell[i] = Cell[i + 1]; Cell[i + 1] = c; // Ve lai ma tran O matrix.repaint(); // Swap Cur and Start start_Y = cur_Y; } } + Nu (cur_Y start_Y) <= -43, th dch ch ln trn if (cur_Y - start_Y <= -43) { int c; // swap X c = x_pos[i]; x_pos[i] = x_pos[i - 1]; x_pos[i - 1] = c; // Swap Cell c = Cell[i]; Cell[i] = Cell[i - 1];

17

Cell[i - 1] = c; // Ve lai ma tran O matrix.repaint(); // Swap Cur and Start start_Y = cur_Y; } }

4. Lp Row a. Mc ch: L mt bn ghi khi nhp d liu t database, d liu t database s c lu vo mng table*+, vi mi phn t l lp Row. b. Thuc tnh S Thuc Typ M t TT tnh e 1 question Stri Dng lu cu hi ng 2 answer Stri Dng lu cu tr li ng 3 hint1 Stri Dng lu gi 1 ng 4 hint2 Stri Dng lu gi 2 ng 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 hng 5. 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)
18

a. Mc ch L ng h m thi gian khi gii ch b. Thuc tnh S TT 1 2 3 4 Thuc tnh timeLeft timePass label end an 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 sleep 1 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 v gi tr ban u. 7. Lp CrossWord a. M t Lp ny c tha k t lp Jpanel ca java. y l lp chnh trong phn game Play. b. Thuc tnh S Thuc Type M t TT tnh 1 conn Conne Dng kt ni vi database ction 2 ran rando Chn ngu nhin ch trong dtbase m 3 ranID int ID ca ch c chn 4 table Row[] Mng gm nhiu Row, dng lu d liu 5 toatalPoin int Tng s im ca ngi chi t 6 answer String Lu cu tr li hin ti 7 question String Lu cu hi hin ti 8 buttons butto Dng hin th cu hi, cu tr li v gi n[] , chi li ch 9 textField_ textFil Dng hin th cu hi, gi v cu tr
19

Type int int Jlabel boole

M t Thi gian cn li Thi gian chy Hin th thi gian Kim tra ht thi gian cha

ed 1 0 ix showMatr [] JLabel

li Hin th ch ln giao din

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 <= table[0].answer.length(); i++) { showMatrix[i][table[0].x].setBackground(Color.RED); } } if (clock != null) { clock.stop(); } clock = new Clock(time); clock.reset(); clock.start(); } * deselectRow(): i mu tt c cc hng nh c nu hng cha c gii Solution: private void deselectRow() { for (int i = 1; i <= table[0].answer.length(); i++) { if (!completeted[i]) {

20

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 row): 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

21

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 new Crossword. 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

22

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 lp nh 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:

23

- Kt qu t c: qua qu tr nh lm bi tp ln nhm ci thin c kh nhiu tinh thn v k n ng lm vic theo nhm ng thi nng cao r rt v kh n ng s dng 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 ra giao din dnh cho ngi chi ko th to ch c ng cha thn thin vi ngi 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

24

Tun 10-11: Tun Ch nh s a giao din h a Hon thin chng tr nh v test kim sot l i 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.

25

You might also like