Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Slagalica sa brojevima

[es] :: Java :: Slagalica sa brojevima

[ Pregleda: 2406 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

DavorPro

Član broj: 118716
Poruke: 55
87.252.137.*



Profil

icon Slagalica sa brojevima11.02.2007. u 17:01 - pre 209 meseci
Kompajlirajte kod i zaigrajte nasu malu slagalicu. Ako imate kakvu dobru ideju za poboljsanje ove igrice podjelite sa nama.
Code:

/*
 * Slagalica.java
 *
 * Created on 2007. veljača 06, 19:02
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

/**
 *
 * @author Davor
 */
import java.awt.*;
import java.awt.event.*;
 import javax.swing.*;  
 
 
public class SlagalicaDZ extends JFrame{
    JPanel panel=new JPanel();
    int brojPoteza=0;
    int[] randomi= new int[99];
   
    public SlagalicaDZ() {
        initiComponents();
            }
    
    private void initiComponents(){
        this.setContentPane(panel);
        panel.setLayout(new GridLayout(10,10));
         popuniRandome();
         dodajDugmeta();
       
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setBounds(10,10,800,700);
        this.setResizable(false); //neda povecavati ili smanjivati
        this.setVisible(true);
        this.repaint();
        
    }
    
    private void popuniRandome(){
        int brojac=0;
        while(brojac<99){
            int tmp=(int)(Math.random()*99)+1;
            if(!postoji(tmp)){
                randomi[brojac]=tmp;
                brojac++;
            }
        }
    } 
    private boolean postoji(int broj){
        for(int i=0;i<randomi.length;i++){
            if (randomi[i]==broj)return true;
        }
        return false;
    }
    private void dodajDugmeta(){
        for(int i=0;i<randomi.length;i++){
            MojeDugme temp=new MojeDugme(""+randomi[i]);
            panel.add(temp,""+randomi[i]);
        }
        panel.add(new JLabel(),"labela");
    }
    public static void main (String[] args){
      SwingUtilities.invokeLater(new Runnable(){
            public void run(){
            new SlagalicaDZ();
            }
        });
    }
    
    public void dogodioSeKlik(ActionEvent e){
        MojeDugme dugme=(MojeDugme)e.getSource();
        Component[] c=panel.getComponents();
        int pozicijaDugmeta= dajPozicijuDugmeta(dugme);
        int pozicijaLabele=dajPozicijuLabela();
        if(pozicijaDugmeta+10==pozicijaLabele || pozicijaDugmeta-10==pozicijaLabele || pozicijaDugmeta+1==pozicijaLabele || pozicijaDugmeta-1==pozicijaLabele){
        Component temp=panel.getComponent(pozicijaLabele);
        panel.add(dugme,pozicijaLabele);
        panel.add(temp,pozicijaDugmeta);
        this.paintAll(this.getGraphics());
        brojPoteza++;
        this.setTitle("Broj poteza:"+brojPoteza);
        }
       
    }
    private int dajPozicijuDugmeta(MojeDugme dugme){
        Component[] c= panel.getComponents();
        for(int i=0;i<c.length;i++){
            if(c[i]instanceof MojeDugme)//2
            if((MojeDugme)c[i]==dugme){  //1
                return i;
            }
        }
        return -1;
    }
    private int dajPozicijuLabela(){
        Component[] polje=panel.getComponents();
        for(int i=0;i<polje.length;i++){
            if(polje[i]instanceof JLabel) return i;
            
        }
        return -1;
    }
    class MojeDugme extends JButton implements ActionListener{
        public void actionPerformed(ActionEvent e) {
            dogodioSeKlik(e);
        }
        MojeDugme(String title){
            this.setText(title);
            this.addActionListener(this);
        }
    }
}


[Ovu poruku je menjao hyle dana 12.02.2007. u 08:56 GMT+1]
 
Odgovor na temu

me-tuzalem
mensur tuzalemovic
novi pazar

Član broj: 25730
Poruke: 116
*.dynamic.sbb.co.yu.



Profil

icon Re: Slagalica sa brojevima11.02.2007. u 18:39 - pre 209 meseci
Kada spuštaš kod trebalo bi da bude SSCCE (Short Self-Contained Compilable Example). Ovaj tvoj kod ima par grešaka, ništa strašno, otklonio sam ih, ali pazi ubuduće, ljude će mrzeti da ispravljaju tvoje greške.
Jedan savjet, pošto sa totalnim random rasporedom možeš dobiti neriješiv problem, kreni od ispravnog konačnog stanja, pa randomiziraj "unatraške".
 
Odgovor na temu

DavorPro

Član broj: 118716
Poruke: 55
87.252.139.*



Profil

icon Re: Slagalica sa brojevima11.02.2007. u 18:59 - pre 209 meseci
Oprosti ali ne kuzim tj. ne znam sta ti ovo dode SSCCE (Short Self-Contained Compilable Example).
I u cemu je kvaka ako mozes malo jednostavnije prikazati moju pogresku
 
Odgovor na temu

DavorPro

Član broj: 118716
Poruke: 55
87.252.139.*



Profil

icon Re: Slagalica sa brojevima11.02.2007. u 19:13 - pre 209 meseci
I molim te ako mezes objasnizi svoju zadnju recenicu koja glasi: kreni od ispravnog konačnog stanja, pa randomiziraj "unatraške".
 
Odgovor na temu

me-tuzalem
mensur tuzalemovic
novi pazar

Član broj: 25730
Poruke: 116
*.dynamic.sbb.co.yu.



Profil

icon Re: Slagalica sa brojevima12.02.2007. u 21:11 - pre 209 meseci
Citat:
DavorPro: Oprosti ali ne kuzim tj. ne znam sta ti ovo dode SSCCE (Short Self-Contained Compilable Example).
I u cemu je kvaka ako mozes malo jednostavnije prikazati moju pogresku

Jednostavno, cijeli kod uzmem sa copy-paste, probam kompilaciju i javlja mi greske. Pogledam, na par mjesta gdje su nizovi fali (uglasta zagrada-i-zatv.uglasta zagrada) - vjerovatno, zato sto je to kod za italic (pogledaj lijevo, kad kucas poruku).
Moj ti je savjet da kod uvijek upload-ujes kao npr. zip.


Citat:
DavorPro: I molim te ako mezes objasnizi svoju zadnju recenicu koja glasi: kreni od ispravnog konačnog stanja, pa randomiziraj "unatraške".

Mislim, poredjas sve brojeve redom 1...10; 11...20. itd, a potom simuliras pomeranje preko praznog polja, ali mnogo (moze i nekoliko hiljada puta) da se sve ispretura. Tako sigurno imas zadatak koji se moze rijesiti.
 
Odgovor na temu

[es] :: Java :: Slagalica sa brojevima

[ Pregleda: 2406 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.