[ DavorPro @ 11.02.2007. 16:43 ] @
Narode ovo je igrica x/o no kod je napisan tako da se kompjutera uvijek moze pobjedit . Problem je sljedeci treba napraviti logiku programa da racunalo bude pametnije od igraca. Ako neko zna kako i u kojoj metodi to postaviti neka podjeli sa svima nama . Logika bi trebala imati devet linija koda za devet solucija ili mogucnosti dobitka. Pa neka igra zapocne . Da bi igrali igru morate napraviti dvije slicice 100x100pixels jedna za x a druga o te dvije slicice treba staviti u projekt. Program je pisan sa pseudo - kodom Code: import java.awt.*; import java.awt.event.*; import javax.swing.*; public class TicTacToe extends JFrame { //definiraj polje labela, ali samo referencu JLabel [] labele; //definiraj sliku iks ImageIcon ja = new ImageIcon("x.jpg"); //definiraj sliku oks ImageIcon comp = new ImageIcon("o.jpg"); public TicTacToe() { //iniciraj komponente initComponents(); } public void initComponents(){ //postavi granice komponenti this.setBounds(200,200,350,350); //postavi komandu za zatvaranje prozora this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //postavi panel da bude Content panel //postavi gridLayout na panel this.getContentPane().setLayout(new GridLayout(3,3)); //postavi referencu labela da pokazuje na novi objekat polje labela i to velicine 9 labele= new JLabel [9]; //popuni grid sa labelama popuniSaLabelama(); //postavi naslov this.setTitle("Malo zabave uz IKS i OKS"); //postavi da se vidi this.setVisible(true); } private void popuniSaLabelama(){ //za svaki član u polju labela for(int i=0; i<labele.length;i++){ //stvori novu JLabelu labele[i]=new JLabel(); //postavi horizontal Aligment na CENTER labele[i].setHorizontalAlignment(JLabel.CENTER); //postavi labeli okvir labele[i].setBorder(BorderFactory.createLineBorder(Color.BLACK,2)); //postavi opacitet labele[i].setOpaque(true); //postavi background boju labele[i].setBackground(Color.lightGray); //dodaj slušaća na labelu labele[i].addMouseListener(new ObradjivacKlika()); //dodaj labelu u tablicu this.getContentPane().add(labele[i]); // } } public static void main(String[] args){ //stvori novi objekt u novo threadu SwingUtilities.invokeLater(new Runnable() { public void run() { new TicTacToe(); } }); } private boolean slobodnihPolja(){ //prolazimo kroz sva polja i ispitujemo ima li slobodnih mjesta for(int i=0; i<labele.length; i++){ if(labele[i].getIcon()==null) return false; } return true; } private void kompjuterIgra(){ //provjeri dali ima slobodnih polja, ako nema proglasi neriješeno if(slobodnihPolja()){ ispisiPobjednika("NERIJEŠENO!"); return; } //idi kroz while petlju stalno while(true){ int rnd =(int)(Math.random()*9); if(labele[rnd].getIcon()==null){ labele[rnd].setIcon(comp); break; } } if (dobitnaKombinacija()){ ispisiPobjednika("POBJEDA KOMPJUTERA :( "); } //random broj*9 //ispitaj dali je pod tim prazna labela //postavi komjuterovu ikonu //izađi sa breake // // //ako je dobitna kombinacija //ispiši da je kompjuter pobjedio } private boolean dobitnaKombinacija(){ //ispitaj dali je dobitna kombijacija ili ne //ispitaj horizontalu if(labele[0].getIcon()!=null && labele[1].getIcon()==labele[0].getIcon() && labele[1].getIcon()==labele[2].getIcon()) return true; if(labele[3].getIcon()!=null && labele[4].getIcon()==labele[3].getIcon() && labele[4].getIcon()==labele[5].getIcon()) return true; if(labele[6].getIcon()!=null && labele[7].getIcon()==labele[6].getIcon() && labele[7].getIcon()==labele[8].getIcon()) return true; //ispitaj vertikalu if(labele[0].getIcon()!=null && labele[3].getIcon()==labele[0].getIcon() && labele[3].getIcon()==labele[6].getIcon()) return true; if(labele[1].getIcon()!=null && labele[4].getIcon()==labele[1].getIcon() && labele[4].getIcon()==labele[7].getIcon()) return true; if(labele[0].getIcon()!=null && labele[5].getIcon()==labele[0].getIcon() && labele[5].getIcon()==labele[8].getIcon()) return true; //ispitaj dijagonale if(labele[0].getIcon()!=null && labele[4].getIcon()==labele[0].getIcon() && labele[8].getIcon()==labele[4].getIcon()) return true; if(labele[2].getIcon()!=null && labele[4].getIcon()==labele[2].getIcon() && labele[6].getIcon()==labele[4].getIcon()) return true; return false; } class ObradjivacKlika implements MouseListener{ public void mouseClicked(MouseEvent e) { //koja je labela kliknuta JLabel l = (JLabel)e.getSource(); //provjeri dali je ikona null; ako ikona nije null==>return if(l.getIcon()!=null)return; //postavi ikonu l.setIcon(ja); //ispitaj dali je dobitna kombinacija if(dobitnaKombinacija()){ //ako je ispiši da sam ja pobjedio ispisiPobjednika("MOJA POBJEDA!!"); }else{ //ako nije neka comp odigra potez kompjuterIgra(); } } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } } public void ispisiPobjednika(String s) { this.setTitle(s); JDialog d= new JDialog(this,s,true); JLabel label=new JLabel(s); label.setHorizontalAlignment(JLabel.CENTER); d.add(label); d.setBounds(300,300,200,150); d.setVisible(true); obrisiPlocu(); } private void obrisiPlocu(){ for(int i=0; i<labele.length;i++){ labele[i].setIcon(null); } } } [Ovu poruku je menjao hyle dana 12.02.2007. u 08:53 GMT+1] |