Advertisement
Kushtrim

Lotaria2

Jun 6th, 2013
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.92 KB | None | 0 0
  1. import javax.swing.*;
  2.  
  3. public class Lotaria {
  4.     private int[] numratEPerdoruesit;
  5.     private int[] numratFitues;
  6.     private int numriMax;
  7.     /**
  8.      * Konstruktori - inicalizon variablat e fushes
  9.      */
  10.     public Lotaria(int setSize, int range)
  11.     {
  12.         numratEPerdoruesit = new int[setSize];
  13.         numratFitues = new int[setSize];
  14.         numriMax = range;
  15.     }
  16.    
  17.     public static void main(String[]args)
  18.     {
  19.         int setSize = 6; // Ka sa numra do i zgjedhim
  20.         int max = 36; // Intervali prej te cilit zgjidhen numrat [ 1,  max]
  21.  
  22.         Lotaria l = new Lotaria(setSize,max);
  23.         l.filloLojen();
  24.  
  25.     }
  26.     /**
  27.      * filloLojen i therret metodat private te klases, per te kryer funksionet qe duhet per nje loje te llotos
  28.      */
  29.     public void filloLojen()
  30.     {
  31.         merrInputin();
  32.         gjeneroNumratFitues();
  33.         sorto();
  34.         afishoRezultatetELojes();
  35.  
  36.     }
  37.    
  38.     /**
  39.      * Merr te dhenat hyrese nga perdoruesi, duke u siguruar qe numrat jane brenda intervalit [1,numriMax], dhe që numrat e futur të jenë unikë ( pa duplikate )
  40.      */
  41.     private void merrInputin ()
  42.     {
  43.         // tash po e marrim inputin
  44.         int count = 0 ; // sa numra jane regjistruar deri me tash
  45.  
  46.         while ( count != numratEPerdoruesit.length )  
  47.         {
  48.             String s = JOptionPane.showInputDialog("Shtypeni numrin e " + (count +1) + "\nShënim : Numri duhet të jetë në intervalin [1," + numriMax + "]");
  49.             if ( s != null && !s.equals(""))  
  50.             {  
  51.                 //nese hyrja eshte legjitime, vazhdo me llogaritje
  52.                 int nrITerhequr = Integer.parseInt(s);
  53.                 boolean ekziston = aEshteShtuarKyNumer(nrITerhequr,count) ; // dmth nese ekziston kthehet true ( pra nese eshte terhequr me heret)
  54.                 // count e perdorim ashtu qe te kerkojme ne varg deri aty ku jane shtuar numrat.
  55.                 if (!ekziston)
  56.                 {    
  57.                     // nese nuk ekziston , kontrollojme se a eshte ne intervalin e duhur, para se ta shtojme
  58.                     if (nrITerhequr >0 && nrITerhequr <=numriMax)
  59.                     {
  60.                         numratEPerdoruesit[count] = nrITerhequr;
  61.                         count++;
  62.                     }
  63.                     else
  64.                     {
  65.                         JOptionPane.showMessageDialog(null,"Gabim : Ky numër është jashtë intervalit [1," + numriMax + "]");
  66.                     }
  67.  
  68.                 }
  69.                 else {
  70.                     JOptionPane.showMessageDialog(null,"Gabim : Këtë numër e keni shtuar tashmë. ");    
  71.                 }
  72.             }
  73.             else if ( s==null)
  74.             {
  75.                 // dmth nese shtyp cancel
  76.                 JOptionPane.showMessageDialog(null,"Keni zgjedhur ta perfundoni lojen ! ");    
  77.                 System.exit(0);
  78.             }
  79.            
  80.             // ne rastin se shtyp OK pa shkruar asgje, nuk do ndodhe asgje, aplikacioni e pyet edhe njehere
  81.         }
  82.     }
  83.     /**
  84.      * Ne menyre te rastesishme gjeneron numra fitues, dhe sigurohet qe te mos kete duplikate
  85.      */
  86.     private void gjeneroNumratFitues()
  87.     {
  88.         // tash po i gjenerojme disa numra ne menyre te rastesishme
  89.         int count = 0 ; // sa numra jane gjeneruar deri me tash,
  90.         while ( count != numratFitues.length )
  91.         {
  92.             int nrITerhequr = terhiqNjeNumer();
  93.             boolean ekziston = aEshteGjeneruarKyNumer(nrITerhequr,count); // kontrollohet se a eshte gjeneruar ky numer me heret
  94.             // count e perdorim ashtu qe te kerkojme ne varg deri aty ku jane shtuar numrat.
  95.  
  96.             if (!ekziston)
  97.             {
  98.                 // nese numri i terhequr nuk eshte gjeneruar me pare, shtoje ne vendin e zbrazet numratFitues[count], dhe rrite count per nje
  99.                 numratFitues[count] = nrITerhequr;
  100.                 // System.out.println(nrITerhequr);
  101.                 count++;
  102.             }          
  103.  
  104.         }
  105.         }
  106.    
  107.     /**
  108.      * Sorton numrat e zgjedhur nga perdoruesi dhe numrat fitues, ne menyre rritese ( prej me te voglit )
  109.      */
  110.     private void sorto()
  111.     {
  112.         // po i sortojme , qe te duket me mire kur te afishohen rezultatet
  113.         // pasi vargjet kane gjatesi te vogel , po e perdorim bubble sort
  114.         boolean sorted = false;
  115.         while( !sorted )
  116.         {
  117.             sorted = true;  // po supozojme se eshte sortuar, nese e gjen nje rast qe duhet ndryshuar rradhitjen, e kthen prape ne false
  118.             for( int i = 1; i!= numratEPerdoruesit.length; i++ )
  119.             {
  120.                 if( numratEPerdoruesit[i-1] > numratEPerdoruesit[i] )
  121.                 {
  122.                     int temp = numratEPerdoruesit[i-1];
  123.                     numratEPerdoruesit[i-1] = numratEPerdoruesit[i];
  124.                     numratEPerdoruesit[i] = temp;
  125.  
  126.                     sorted = false;
  127.                 }
  128.  
  129.                 // po i sortojme te dy vargjet ne re njejten kohe
  130.                 if( numratFitues[i-1]> numratFitues[i] )
  131.                 {
  132.                     int temp = numratFitues[i-1];
  133.                     numratFitues[i-1] = numratFitues[i];
  134.                     numratFitues[i] = temp;
  135.  
  136.                     sorted = false;
  137.                 }
  138.  
  139.                 //nese s'ka pase ndryshime mrena loop-es for, sorted ka mbet true, pra dalim prej while !
  140.             }
  141.  
  142.         }
  143.     }
  144.     /**
  145.      * Llogarit se sa numra i ka qëlluar perdoruesi, si dhe afishon rezultatet
  146.      */
  147.     private void afishoRezultatetELojes()
  148.     {
  149.         int saNumraJaneQelluar=0;
  150.         String teQelluar="";
  151.         for ( int i = 0; i!=numratEPerdoruesit.length; i++)
  152.         {
  153.             for ( int j = 0 ; j!=numratFitues.length ; j++)
  154.             {
  155.                 if ( numratEPerdoruesit[i] == numratFitues[j] )
  156.                 {
  157.                     saNumraJaneQelluar++;
  158.                     teQelluar += numratEPerdoruesit[i] + ",";
  159.                 }
  160.             }
  161.         }
  162.  
  163.         if(saNumraJaneQelluar>0)
  164.         {  
  165.             teQelluar = teQelluar.substring(0,teQelluar.length()-1); // qe ta heqim nje "," ne fund
  166.             String nrEZgjedhur="";
  167.             String nrFitues="";
  168.          
  169.             // kjo i bie, for each x in numratEPerdoruesit, do ..... , njejte sikur ta perdornim  for (int i = 0;i!=numratEPerdoruesit.length;i++) ..........
  170.             for (int x: numratEPerdoruesit)
  171.             {
  172.                 nrEZgjedhur += x +",";
  173.             }
  174.             nrEZgjedhur = nrEZgjedhur.substring(0,nrEZgjedhur.length()-1); // qe ta heqim nje "," ne fund
  175.             for (int x: numratFitues)
  176.             {
  177.                 nrFitues += x+"," ;
  178.             }
  179.             nrFitues = nrFitues.substring(0,nrFitues.length()-1); // qe ta heqim nje "," ne fund
  180.  
  181.             JOptionPane.showMessageDialog(null,"Numrat tuaj ishin:   " +nrEZgjedhur
  182.                 +"\nNumrat fitues janë: "+nrFitues +"\nJu keni qelluar " + saNumraJaneQelluar + "/" + numratEPerdoruesit.length + " ! \nNumrat e qëlluar: " + teQelluar);
  183.         }
  184.         else {
  185.             JOptionPane.showMessageDialog(null,"Nuk keni qëlluar asnjë numër");
  186.         }
  187.     }
  188.  
  189.     /**
  190.      * Krahason numrat qe ka shtuar perdoruesi paraprakisht me numrin e fundit.
  191.      * @returns a është ky numër duplikatë!
  192.      * @param nr Numri qe krahasohet se a eshte shtuar me heret
  193.      * @param count Hapesira e pare e zbrazte ne varg, dmth deri ne kete indeks ka numra te shtuar ne varg
  194.      */
  195.     private boolean aEshteShtuarKyNumer(int nr,int count)
  196.     {
  197.         boolean exists =  false;
  198.  
  199.         for ( int i = 0 ; i!= count ; i++)
  200.         {
  201.             if( numratEPerdoruesit[i] == nr)
  202.             {
  203.                 exists =  true;
  204.             }
  205.         }
  206.         return exists;
  207.     }
  208.     /**
  209.      * Krahason numrat qe ka gjeneruar aplikacioni paraprakisht me numrin e fundit.
  210.      * @returns a është ky numër duplikatë!
  211.      * @param nr Numri qe krahasohet se a eshte shtuar me heret
  212.      * @param count Hapesira e pare e zbrazte ne varg, dmth deri ne kete indeks ka numra te shtuar ne varg
  213.      */
  214.     private boolean aEshteGjeneruarKyNumer(int nr,int count)
  215.     {
  216.         boolean exists =  false;
  217.  
  218.         for ( int i = 0 ; i!= count ; i++)
  219.         {
  220.             if( numratFitues[i] == nr)
  221.             {
  222.                 exists =  true;
  223.             }
  224.         }
  225.         return exists;
  226.     }
  227.  
  228.     private int terhiqNjeNumer()
  229.     {
  230.  
  231.         int random = (int)(  Math.random()*numriMax  +1  );
  232.         // Math.random() na jep rezultat prej 0 deri te 1 ( pa e perfshire 1 ) , nese shumezojme me numriMax  ( ne rastin e kerkuar  36 ), intervali zgjerohet ne [0,36),
  233.         //me pas mbledhim me 1, intervali del [1,37). Kur marrim pjesen e plote , atehere mund te na kthehen numrat e plote prej 1 deri 36 ( duke i perfshire edhe 1 e 36)
  234.         // pra ne intervalin [1,36]
  235.        
  236.         return random;
  237.  
  238.     }
  239. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement