Báo cáo Project OOP

download Báo cáo Project OOP

of 25

Transcript of 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.