[ mladen2 @ 19.06.2008. 16:05 ] @
poz. pokusavam da naucim javu kroz primjere i imam situaciju gde dva igraca bacaju kockicu i u svakom krugu im se upisuje random broj koji su dobili. Broj poena se vuce iz niza 10, 20, 30, ..100. I sve to je ok ali ne znam kako da postavim u while petlji da ponavlja dokle god broj poena koji su osvojili ne bude veci za recimo 1000 od poena koji je dobio drugi igrac.

bilo kakav hint bi pomogao.
Code:


import java.util.Random;


public class LogosIgrac {
    private String naziv; 
    private int poeni; 
   
    public LogosIgrac(){}
    
    public LogosIgrac(String naziv, int poeni)
    {
        this.naziv = naziv; 
        this.poeni = poeni; 
    }
    
    public LogosIgrac(LogosIgrac c)
    {
        this.naziv = c.naziv; 
        this.poeni = c.poeni; 
    }

    public String getNaziv() {
        return naziv;
    }

    public void setNaziv(String naziv) {
        this.naziv = naziv;
    }

    public int getPoeni() {
        return poeni;
    }

    public void setPoeni(int poeni) {
        this.poeni = poeni;
    }
    
    @Override
    
    public String toString() {
        return ("igrac "+naziv +" ima osvojenih "+poeni +" poena");
    }
     
    class PickRand
    {
        public  int get (int[] array) 
        {
             Random generator = new Random();
             int rnd = generator.nextInt(array.length);
             return array[rnd];
        }
    }

     public void baciKocku()
         {        
        PickRand PickRand = new PickRand();
        int[] randomPoeni = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100}; 
        int pogodak = PickRand.get(randomPoeni);
        poeni += pogodak; 
   

        System.out.println("U ovom krugu igrac je osvojio " +pogodak +" poena");
      }  
}

i main
Code:

import javax.swing.JOptionPane;


public class Main {
    
    public Main()
    {
        LogosIgrac[] mojIgrac = new LogosIgrac[2]; 
        
        for (int c = 0; c < mojIgrac.length; c++)
        {
        String naziv = JOptionPane.showInputDialog("Unesi naziv igraca"); 
        //String naziv = ("Unesi naziv igraca: ");
            mojIgrac[c] = new LogosIgrac(naziv, 0); 
        }
        
        while(mojIgrac[0].getPoeni() <160 && mojIgrac[1].getPoeni()<160)
        {
            for (LogosIgrac c : mojIgrac)
            {
                 System.out.println(c); 
                 c.baciKocku();
                
             }
        }
        String pobednik = mojIgrac[1].getPoeni() > mojIgrac[0].getPoeni()
                ?"Pobjednik je igrac" +mojIgrac[1]: "Pobjednik je " +mojIgrac[0]; 
        System.out.println(pobednik);
    }
    
    public static  void main(String[] args){
        new Main(); 
    }

}
[ mladen2 @ 19.06.2008. 18:33 ] @
posto vidim da se niko ne javlja, da pokusam pojednostaviti, prethodni kod gore radi ali treba da dodam u while uslov da se petlja zavrsi tek kad jedan od igraca ima broj poena u zbiru veci za neku vrijednost (recimo 1000) od drugog igraca.
Code:

     while(mojIgrac[0].getPoeni() <160 && mojIgrac[1].getPoeni()<160)
        
        {
            for (LogosIgrac c : mojIgrac)
            {
                 System.out.println(c); 
                 c.baciKocku();
                
             }
        }
        String pobednik = mojIgrac[1].getPoeni() > mojIgrac[0].getPoeni()
                ?"Pobjednik je igrac" +mojIgrac[1]: "Pobjednik je " +mojIgrac[0]; 
        System.out.println(pobednik);
    }

u prvom postu je prikazana citava main metoda.
[ mladen2 @ 19.06.2008. 19:03 ] @
Code:
while(mojIgrac[0].getPoeni() - mojIgrac[1].getPoeni() != 100) 

nasao sam rijesenje.

[ mladen2 @ 19.06.2008. 19:21 ] @
postoji li elegantniji nacin(vjerovatno da postoji) za dobijanje random elementa iz zadatog niza. Ovo radi posao ali ako neko ima ideju kako ovo skratiti.

Code:

 class PickRand
    {
        public  int get (int[] array) 
        {
             Random generator = new Random();
             int rnd = generator.nextInt(array.length);
             return array[rnd];
        }
    }

     public void baciKocku()
         {        
               PickRand PickRand = new PickRand();
               int[] randomPoeni = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100}; 
               int pogodak = PickRand.get(randomPoeni);
               poeni += pogodak; 
   
              System.out.println("U ovom krugu igrac je osvojio " +pogodak +" poena");
         }  
[ S_3_ka @ 20.06.2008. 14:14 ] @
Možda ovako nešto:

Code:
int poeni = (int)((Math.random() * 10) + 1) * 10;