You are on page 1of 15

TRNG I HC BCH KHOA H NI

VIN CNG NGH THNG TIN V TRUYN THNG -------------------*-------------------

TI PROJECT II
Tn ti:

Lm game C Caro
Gio vin hng dn Sinh vin thc hin SHSV Lp Email :

TS. Phan Thun

: Nguyn Bo Chung : 20090333 : CNTT1-k54 bkitk54@gmail.com

H Ni, 04/2012

Mc lc

Li ni u C Caro l mt trong nhng tr chi rt ph bin, c bit l trong gii hc sinh, sinh vin. y cng l mt tr chi em rt thch, chnh v vy em chn ti Lm game c caro cho mn Project 2. Trong qu trnh hon thnh ti ny, em tm hiu c cc thut ton c hc trong mn Tr tu nhn to nh thut ton tm kim nc i Minimax, gii thut Alpha-Beta cng nh k nng lp trnh ngn ng Java. Em cng xin cm n s hng dn tn tnh ca thy Phan Thun, c v chuyn mn cng nh nh hng. V kin thc cn hn hp nn trong qu trnh thc hin ti khng th trnh khi thiu st. V vy rt mong nhn c nhn s gp ca thy ti c th hon thin hn na.

I. YU CU BI TON Xy dng mt bn c c k cc vung vi kch thc 20x20. C 2 qun c l X v O. Ngi chi c th nh vi my hoc 2 ngi chi vi nhau. Ngi thng l ngi i c 5 qun c cng kiu trn hang dc, hng ngang hoc ng cho. Hai ngi ho nhau khi bn c ht ch nh m vn cha phn c thng bi II. PHN TCH GII QUYT BI TON 1. Phn tch yu cu M phng bn c Bn c (Board) bao gm cc c ( Cells) c t trong mt mng 2 chiu (kch thc a x b) Trong mi Cell c th xc nh c: V tr cell ( Row, collumme) Trng thi Cell (Status) Bao gm ang trng (empty) nc i ca i th (Player) hoc nc i ca my (Com) nguy him ca c tu theo trng thi Cell v c th thay i c. nh gi gi tr cc Cell Ging nh trong thc t, ngi chi thng nh gi mt s nc c l nguy him, bnh thng hoc t nguy him, my tnh cng nh gi nhng c th hn bng cc con s. V d: 2. Phng php gii quyt 2.1. Tm kim nc i Gii thiu v khng gian tm kim Trong tr chi Caro, c sau mi nc c, mi i th s chn ra t nhng trng i, do , sau 1 mi nc i th s trng cn li s gim. Nh vy, vic tm nc i tip theo cho trng thi c sn ch l vic tm kim nhng trng cn li, ng thi, khng gian tm kim s thu hp theo s nc i to . Khng gian chn nc i t mi trng thi ban u l hu hn, nhng khng gian tm kim 1 nc i dn n chin thng l rt ln. Do ta khng th vt sch khng gian tm kim nc i ny m ta phi gii hn khng gian tm kim. Mt khng gian tm kim c th hin theo 1 cy a phn v uc gi l cy tm kim hay cy tr chi. V d :

Cy tr chi Da vo ci cy tr chi nh ngha trn, vic tm kim nc i l chn 1 nt trn cy ( mc 1) sao cho nc l tt. Theo thng thng khi chi, mt nc i tt hay khng l ph thuc vo kh nng dnh chin thng l cao hay thp sau khi nc i ny uc i. Do , mun chn 1 nc i tt th nu ch da vo th c hin ti l cha , m phi bit thng tin ca nhng th c sau khi chn nc ny i. Chin lc minimax tm kim nc i Chin lc ny c xc nh bng cch xet gi tr MINIMAX i vi mi nt trong cy biu din tr chi. MAX chn nc i ng vi gi tr MINIMAX cc i ( t c gitr cc i ca hm mc tiu) t c gi tr cc i ca hm mc tiu) Ngc li, MIN chn nc i ng vi gi tr MINIMAX cc tiu. Vd:

Gii thut minimax

Gii thut tm kim MINIMAX vp phi vn bng n (mc hm m) cc kh nng nc i cn phi xt khng ph hp vi nhiu bi ton tr chi thc t .

Chng ta c th ct ta (b i khng xt n) mt s nhnh tm kim trong cy biu din tr chi Phng php ctta - (Alpha-beta prunning) tng: Nu mt nhnh tm kim no khng th ci thin i vi gi tr (hm tin ch) m chng ta c, th khng cn xt n nhnh tm kim na! Vic ct ta cc nhnh tm kim (ti) khng nh hng n kt qu cui cng l gi tr ca nc i tt nht i vi MAX (gi tr ti a) tnh n hin ti i vi nhnh tm kim. Nu v l gi tr ti hn , MAX s b qua nc i ng vi v -> Ct ta nhnh ng vi v c nh ngha tng t i vi MIN.. V d :

Gii thut alpha beta

So snh s nt phi xt gia 2 thut ton Minimax v - :

i vi cc tr chi c khng gian trng thi ln, th phng php ct ta - vn khng ph hp. Khng gian tm kim (kt hp ct ta) vn ln C th hn ch khng gian tm kim bng cch s dng cc tri thc c th ca bi ton + Tri thc cho php nh gi mi trng thi ca tr chi. + Tri thc b sung (heuristic) ny ng vai tr tng t nh l hm c lng h(n) trong gii thut tm kim A* 2.2 K thut lng gi K thut lng gi l mt k thut quan trng trong vic xy dng tr chi c caro. K thut ny gip cho im trng thi ca bn c t xy dng cy tr chi. Vic xy dng hm lng gi hp l, chnh xc s gip cho h thng c nh gi chnh xc v trng thi bn c a ra nc i thng minh hn. i vi bi ton c caro, ta c th dng 1 hm lng gi nh gi tnh "tt, xu" ti 1 thi im. Nhng no gn cc qun nh trc s c im cao hn. Nhng cng xa th c cng t im. Tuy nhin y ch l Heuristic nn ta phi b sung thm cc Heuristic khc na, v d vng c 2, 3, 4 ... qun lin tip th s c cng thm 1 s im thng no cho vng da vo trng s qun (tc l nhiu qun lin tip th c cng nhiu im thng hn). Sau mi nc i, h thng s kim tra bn c tm cc th c ri ty vo li th nh trc tnh ra im. C th l: *TH1: Trng hp chc thng (+5000 im)

* TH2: Trng hp rt thun li (+600 im)

* TH3: Trng hp thun li (+500 im)

*TH4: Trng hp bnh thng (+50 im)

3. Xy dng cc lp

Lp BanCo

public class BanCo extends JFrame { boolean xcount; Image imgx = Toolkit.getDefaultToolkit().getImage("src/Image/x.png"); Image imgo = Toolkit.getDefaultToolkit().getImage("src/Image/o.png"); StateBoard board = new StateBoard(); JButton button[][] = new JButton[20][20]; public BanCo(String name1, String name2, boolean x) { initComponents(); for (int i = 0; i<20; i++) for (int j = 0; j<20; j++) { button[i][j] = new JButton(); button[i][j].setBounds(i*26, j*26, 26, 26); button[i][j].setIcon(new ImageIcon("src/Image/background.GIF")); this.add(button[i][j]); button[i][j].addActionListener( new java.awt.event.ActionListener() { @Override public void actionPerformed (ActionEvent evt) { eventbutton(evt); } }); } jLabel3.setText(name1); jLabel4.setText(name2); xcount = x;

Lp Computer
public Computer(String name1) { initComponents(); for (int i = 0; i<20; i++) for (int j = 0; j<20; j++) { button[i][j] = new JButton(); button[i][j].setBounds(i*26, j*26, 26, 26); button[i][j].setIcon(new ImageIcon("src/Image/background.GIF")); this.add(button[i][j]); button[i][j].addActionListener( new java.awt.event.ActionListener() { public void actionPerformed (ActionEvent evt) { eventbutton(evt); } }); } jLabel3.setText(name1); jLabel4.setText("Computer"); }

Lp Menu1

public class Menu1 extends javax.swing.JFrame { public Menu1() { initComponents(); } private void jButton6ActionPerformed(java.awt.event.ActionEventevt) { Index in = new Index (); in.setVisible(true); } private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { this.dispose(); DangKy2 dk2 = new DangKy2(); dk2.setVisible(true); } private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) { this.dispose(); MenuCaro menucaro = new MenuCaro (); menucaro.setVisible(true); } private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { this.dispose(); DangKy dk1 = new DangKy (); dk1.setVisible(true); }

Lp Menu2

public class Menu2 extends javax.swing.JFrame { public Menu2() { initComponents(); } private void jButton1ActionPerformed(java.awt.event.ActionEvent this.dispose(); DangKy2 dk = new DangKy2(); dk.setVisible(true); } private void jButton6ActionPerformed(java.awt.event.ActionEvent Index in = new Index (); in.setVisible(true); } private void jButton2ActionPerformed(java.awt.event.ActionEvent } private void jButton3ActionPerformed(java.awt.event.ActionEvent } private void jButton4ActionPerformed(java.awt.event.ActionEvent this.dispose(); Menu1 menu1 = new Menu1(); menu1.setVisible(true); public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new Menu2().setVisible(true); } }); }

evt) {

evt) {

evt) { evt) { evt) {

Lp MenuCaro
public class MenuCaro extends javax.swing.JFrame { public MenuCaro() { initComponents(); } private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) System.exit(0); } private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) Help h = new Help(); h.setVisible(true); } private void jButton6ActionPerformed(java.awt.event.ActionEvent { Index in = new Index (); in.setVisible(true); } private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) this.dispose(); Menu1 menu1= new Menu1(); menu1.setVisible(true); } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { MenuCaro menucaro = new MenuCaro(); menucaro.setVisible(true); } }); }

evt)

4. Thit k giao din ca chng trnh

You might also like