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

Fiver - mala logicka igra u Javi

[es] :: Java :: Fiver - mala logicka igra u Javi

[ Pregleda: 1649 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

boris Dj.bl
Dipl.ing.
Banjaluka

Član broj: 167469
Poruke: 77
62.68.103.*



Profil

icon Fiver - mala logicka igra u Javi05.08.2009. u 17:43 - pre 179 meseci
Evo jedne male logicke igrice koju sam napravio u Javi...znam da mozda nije za Java podforum nego za Igre ali ovdje vise ljudi ide, pa nek barem na pocetku ostane ovdje malo ako moze...a vidjecu da kasnije postavim i kod kad jos nesto doradim.

Uglavnom zelio bih da ovo bude mali izazov, kao neko takmicenje, tj ko ce prvi rjesiti kojiu tablu pa nek ovdje stavi rjesenje.
Ako se neki kasnije ukljuce pa vec bude rjesenja nek ih ne gledaju i nek probaju prvo sami rjesiti ako zele da se provjere...

Ovako to izgleda:



Ima n=10 tabli i svaka table ima n^2 polja. Sva polja su na pocetku bijela a cilj je da sva postanu crvena.
S tim da kad se klikne na neko polje, to polje, zatim ono ispod, iznad, lijevo i desno od njega mijenjaju boju, tj ako ona koja su bila crvena postaju bijela a bijela postaju crvena.
Polja su numerisana od 1 do n^2 i do rjesenja se prakticno dolazi klikom na tacno odredjenja polja.
Na slici iznad je osma tabla sa 64 polja i vec je kliknuto na polja 15,16,19,57,61.

Prve dve, tri table su tu cisto reda radi i njihova rjesenja su elementarna, u prvoj cak i nema sta da se igra.
Poslije pete table vec nije tako jednostavno. Radi lakseg rjesavanja treba skontati odredjenu logiku al zadnje table ni tad nece biti lako rjesiti...

Ovo su linkovi: ( Posto svaki dozvoljava samo 10 skidanja i svi vaze 90 dana stavio sam 4 linka sa istim fajlom, pa vi skidajte redom, tako da za sad moze barem 40 ljudi sto je vjerujem dovoljno a mogu kasnije jos staviti il nek neko od onih koji budu skinuli stavi ponovo ako bude trebalo).

http://rapidshare.com/files/264053053/Fiver.rar.html

http://rapidshare.com/files/264053524/Fiver.rar.html

http://rapidshare.com/files/264058412/Fiver.rar.html

http://rapidshare.com/files/264058681/Fiver.rar.html

PS mozda je neko vec igrao ovu ili slicnu igricu ali mislim da nisam nigdje nasao da ima 10 tabli tako da svima moze biti izazov...
 
Odgovor na temu

Dejan Lozanovic
Dejan Lozanovic
Beograd

Član broj: 691
Poruke: 2325
91.148.90.*

Jabber: null@elitesecurity.org
Sajt: speedy-order.com


+75 Profil

icon Re: Fiver - mala logicka igra u Javi05.08.2009. u 19:37 - pre 179 meseci
Mislim da bi za ovaj forum lepse bilo kad bi dao source, tek da ostali mogu da vide kako si to uradio i da nauce nesto.
 
Odgovor na temu

boris Dj.bl
Dipl.ing.
Banjaluka

Član broj: 167469
Poruke: 77
62.68.103.*



Profil

icon Re: Fiver - mala logicka igra u Javi05.08.2009. u 22:04 - pre 179 meseci
Kao sto sam i rekao, to i planiram samo hocu jos nesto da dodam...
U sustini kod nije velik ali je zato veoma optimizovan i radi tako da u cijelom kod imam jedno int n = 10 i dovoljno je da tu stavim int = 11 i kompajliram i odmah ce se stvoriti i 11ta tabla tj 11ti tab sa 11^2 tj 121 button-a i svim ActionListener-ima koji ce na klik button-a mjenjati boje dugmica kako igra zahtjeva...
A do tad ko hoce nek se malo razonodi...
Cisto me zanima od onih koji ce probati koliko ce uspjeti sve da rijesi il do koje table...
Ja recimo sam sam rjesio prvih 9 tabli a desetu moram priznati nisam, iako sad znam rjesenje i te table(recimo da sam za tu tablu imao malu pomoc)
Sto je donekle paradoks jer mogu napraviti tablu a ne mogu je rjesiti...
Tako da ko rjesi desetu tablu skidam mu kapu...

Ustvari, ajd ovako, kod cete dobiti za 30 dana najkasnije...ako se ranije rjese prvih 9 tabli(10a ne mora jer je nisam ni ja sam a ako neko skonta jos bolje) tad odmah postavljam i kod, znaci prije isteka ovog roka...
T - 30 and counting...:)
 
Odgovor na temu

Dejan Lozanovic
Dejan Lozanovic
Beograd

Član broj: 691
Poruke: 2325
91.148.85.*

Jabber: null@elitesecurity.org
Sajt: speedy-order.com


+75 Profil

icon Re: Fiver - mala logicka igra u Javi10.08.2009. u 13:54 - pre 179 meseci
Ma 10x10 nije tako tezak :)

primera radi

1. klikci diagonalno od 1 do 100 i od 91 do 10
2. klikni na polja 3 i 8
3. 15 16 25 26

istu stvar ponovi za ostala tri dela.
 
Odgovor na temu

boris Dj.bl
Dipl.ing.
Banjaluka

Član broj: 167469
Poruke: 77
62.68.103.*



Profil

icon Re: Fiver - mala logicka igra u Javi10.08.2009. u 19:04 - pre 179 meseci
Pa svaka cast Dejane...ti odmah pa 10tu...imas cistu desetku...:)
I ja sam na kraju dosao do istog rjesenje samo eto nisam ga odmah skontao:
Uglavnom potrebna su 44 klika i to: 1,3,8,10,12,15,16,19,21,23,25,26,28,30,34,37,42,43,45,46,48,49,52,53,55,56,58,59,64,67,71,73,75,76,78,80,82,85,86,89,91,93,98,100

Probaj i ostale table a mogu i drugi da se testiraju...
Izgleda da ce kod biti uskoro ako ovako nastavite...hehe
Ako se neka tabla ne rijesi uz kod stavicu i rjesenja...
 
Odgovor na temu

boris Dj.bl
Dipl.ing.
Banjaluka

Član broj: 167469
Poruke: 77
62.68.103.*



Profil

icon Re: Fiver - mala logicka igra u Javi11.09.2009. u 12:13 - pre 178 meseci
Evo i koda kao sto sam obecao iako ne vidim da je jos neko stavio koje rjesenje...al stavicu uskoro i rjesenja....
Pozdrav

Code:

/* 
  GNU General Public License 
  http://www.gnu.org/licenses/gpl-3.0-standalone.html
  
  Java Fiver game by Boris Djurdjevic
  This is version 1.0
*/

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Fiver extends JFrame {

   public static void main(String[] args) {
      Fiver f = new Fiver();
      f.setVisible(true);
   }
  
   public Fiver() {
 
      // podesava velicinu, ime i pocetni polozaj
      setSize(600, 600);
      setTitle("Fiver");
      setResizable(false);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      
      // kreira matricu b button-a a u svakoj n-toj vrsti(tabu) ima ih n^2
      for(int i=1;i<=max;i++) {
           nizm[i]=i*i;
         b[i]=new JButton[nizm[i]+1];
      }
      
      // postavlja bijelu pozadinu i brojeve na sve button-e
      for(int i=1;i<=max;i++) 
          for(int j=1;j<=nizm[i];j++) {
                 b[i][j] = new JButton(Integer.toString(j));
                 b[i][j].setBackground(white);
          }  
          
        // poziva funkciju za kreiranje tabova
      setContentPane(getJTabbedPane());
   
      // podesava radnju na klik reset button-a : sve button-e(kvadrate) boji u bijelo
      reset.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent ev) {
            for(int i=1;i<=max;i++) 
                 for(int j=1;j<=nizm[i];j++) 
                       b[i][j].setBackground(white);
         }
      });
    
      // podesava radnju na klik na svaki button : poziva funkciju changeColor
      for(int i=1;i<=max;i++) {
           final int pi = i;
         for(int j=1;j<=nizm[i];j++) {
              final int pj = j;
            b[pi][pj].addActionListener(new ActionListener() {
               public void actionPerformed(ActionEvent ev) { changeColor(pi,pj);} });
         }
      }
   }
   
   // kreira i podesava tabove(table igre)
   private JTabbedPane getJTabbedPane() {
      if (jTabbedPane == null) {
           jTabbedPane = new JTabbedPane();
               jTabbedPane.addTab("New Game", null, getJPanel0(), null);
               for(int i=1;i<=max;i++) {
                  jPanel[i] = new JPanel();
                  jPanel[i].setLayout(new GridLayout(i,i));
                  for(int j=1;j<=nizm[i];j++)
                     jPanel[i].add(b[i][j], null);
                  jTabbedPane.addTab(Integer.toString(i), null, jPanel[i], null);
               }
          }
          return jTabbedPane;
   }
    
     // kreira i podesava tabov pocetni tab
   private JPanel getJPanel0() {
      if (jPanel0 == null) {
           jPanel0 = new JPanel();
               jPanel0.add(reset, null);
             jPanel0.add(author, null);
        }
        return jPanel0;
   }
    
     // funkcija koja provjerava da li je tabla uspjesno rjesena
     private int solved(int n) {
        int k=1; 
        for(int i=1;i<=nizm[n];i++) 
           if(b[n][i].getBackground().equals(white)) { k=0; break; }
        if(k==1) return 1;
        else return 0;
   }
   
   // funkcija koja mijenja boju odgovarajucih button-a(kvadratica) na odredjeni klik
   // n - broj taba(table)  x - broj button-a(kvadratica na toj tabli) na koji smo kliknuli
   private void changeColor(int n, int x) {
      int p=x%n;
        if(x==1 && n==1) {
           if(  b[n][x].getBackground().equals(white)) b[n][x].setBackground(red);
            else                                        b[n][x].setBackground(white);
      }    
      else if(x==1) {
           if(  b[n][x].getBackground().equals(white)) b[n][x].setBackground(red);
         else                                        b[n][x].setBackground(white);
             
              if(b[n][x+1].getBackground().equals(white)) b[n][x+1].setBackground(red);
           else                                        b[n][x+1].setBackground(white);
                
              if(b[n][x+n].getBackground().equals(white)) b[n][x+n].setBackground(red);
         else                                        b[n][x+n].setBackground(white);
      }
      else if(x==n) {
             if(  b[n][x].getBackground().equals(white)) b[n][x].setBackground(red);
           else                                        b[n][x].setBackground(white);
             
            if(b[n][x-1].getBackground().equals(white)) b[n][x-1].setBackground(red);
            else                                        b[n][x-1].setBackground(white);
             
           if(b[n][x+n].getBackground().equals(white)) b[n][x+n].setBackground(red);
            else                                        b[n][x+n].setBackground(white);
      }
          else  if(x==n*(n-1)+1) {
               if(  b[n][x].getBackground().equals(white)) b[n][x].setBackground(red);
            else                                        b[n][x].setBackground(white);
             
            if(b[n][x+1].getBackground().equals(white)) b[n][x+1].setBackground(red);
            else                                        b[n][x+1].setBackground(white);
             
            if(b[n][x-n].getBackground().equals(white)) b[n][x-n].setBackground(red);
            else                                        b[n][x-n].setBackground(white);
      }
          else  if(x==n*n) {
               if(  b[n][x].getBackground().equals(white)) b[n][x].setBackground(red);
            else                                        b[n][x].setBackground(white);
             
            if(b[n][x-1].getBackground().equals(white)) b[n][x-1].setBackground(red);
            else                                        b[n][x-1].setBackground(white);
             
            if(b[n][x-n].getBackground().equals(white)) b[n][x-n].setBackground(red);
            else                                        b[n][x-n].setBackground(white);
      }
          else if(x<n) {
               if(  b[n][x].getBackground().equals(white)) b[n][x].setBackground(red);
            else                                        b[n][x].setBackground(white);
             
            if(b[n][x-1].getBackground().equals(white)) b[n][x-1].setBackground(red);
            else                                        b[n][x-1].setBackground(white);
             
            if(b[n][x+1].getBackground().equals(white)) b[n][x+1].setBackground(red);
            else                                        b[n][x+1].setBackground(white);
             
            if(b[n][x+n].getBackground().equals(white)) b[n][x+n].setBackground(red);
            else                                        b[n][x+n].setBackground(white);
      }
          else if(p==1) {
               if(  b[n][x].getBackground().equals(white)) b[n][x].setBackground(red);
            else                                        b[n][x].setBackground(white);
             
            if(b[n][x+1].getBackground().equals(white)) b[n][x+1].setBackground(red);
            else                                        b[n][x+1].setBackground(white);
             
            if(b[n][x-n].getBackground().equals(white)) b[n][x-n].setBackground(red);
            else                                        b[n][x-n].setBackground(white);
             
            if(b[n][x+n].getBackground().equals(white)) b[n][x+n].setBackground(red);
            else                                        b[n][x+n].setBackground(white);
      }
          else if(p==0) {
               if(  b[n][x].getBackground().equals(white)) b[n][x].setBackground(red);
            else                                        b[n][x].setBackground(white);
             
            if(b[n][x-1].getBackground().equals(white)) b[n][x-1].setBackground(red);
            else                                        b[n][x-1].setBackground(white);
             
            if(b[n][x-n].getBackground().equals(white)) b[n][x-n].setBackground(red);
            else                                        b[n][x-n].setBackground(white);
             
            if(b[n][x+n].getBackground().equals(white)) b[n][x+n].setBackground(red);
            else                                        b[n][x+n].setBackground(white);
      }
          else if(x>n*(n-1)) {
               if(  b[n][x].getBackground().equals(white)) b[n][x].setBackground(red);
            else                                        b[n][x].setBackground(white);
             
            if(b[n][x+1].getBackground().equals(white)) b[n][x+1].setBackground(red);
            else                                        b[n][x+1].setBackground(white);
             
            if(b[n][x-1].getBackground().equals(white)) b[n][x-1].setBackground(red);
            else                                        b[n][x-1].setBackground(white);
             
            if(b[n][x-n].getBackground().equals(white)) b[n][x-n].setBackground(red);
            else                                        b[n][x-n].setBackground(white);
      } 
          else {
               if(  b[n][x].getBackground().equals(white)) b[n][x].setBackground(red);
            else                                        b[n][x].setBackground(white);
             
            if(b[n][x-1].getBackground().equals(white)) b[n][x-1].setBackground(red);
            else                                        b[n][x-1].setBackground(white);
             
            if(b[n][x+1].getBackground().equals(white)) b[n][x+1].setBackground(red);
            else                                        b[n][x+1].setBackground(white);
             
            if(b[n][x-n].getBackground().equals(white)) b[n][x-n].setBackground(red);
            else                                        b[n][x-n].setBackground(white);
             
            if(b[n][x+n].getBackground().equals(white)) b[n][x+n].setBackground(red);
            else                                        b[n][x+n].setBackground(white);
      }
      if(solved(n)==1) 
           JOptionPane.showMessageDialog(null, "Congratulation", "Fiver Solved", JOptionPane.INFORMATION_MESSAGE);
   }
   
   // Privatni atributi klase:
  
   // boje
   private Color white = new Color(255,255,255);
   private Color red =   new Color(255,0  ,0  );
  
   // broj tabova (tabli)
   static final int max = 10;
   
   int nizm[]=new int[max+1];
  
   // labela autor
   private JLabel author = new JLabel("      Author: Boris Djurdjevic   ");
  
   // button reset i matrica ostalih button-a
   private JButton reset = new JButton("Reset");
   private JButton[][] b = new JButton[max+1][];
  
   private JTabbedPane jTabbedPane = null;
  
   private JPanel jPanel0 = null;
     private JPanel jPanel[] = new JPanel[max+1];
     
}
 
Odgovor na temu

[es] :: Java :: Fiver - mala logicka igra u Javi

[ Pregleda: 1649 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

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