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

Zasto mi ne radi ovaj kod??

[es] :: Java :: Zasto mi ne radi ovaj kod??

[ Pregleda: 2245 | Odgovora: 0 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

LightBow
London

Član broj: 4829
Poruke: 158
213.78.170.*



+1 Profil

icon Zasto mi ne radi ovaj kod??01.02.2005. u 06:51 - pre 234 meseci
Pravim igricu Nim u javi. Poredjaju se stapici u tri reda, 3, 5, i sedam komada. Dva igraca naizmenicno uzimaju stapice, ali dozvoljeno je uzimanje samo iz istog reda. Pobednik je onaj koji primora protivnika da uzme poslednji stapic.
E ja pravim tako da kad komp igra, prvo se pokaze koje je stapice odabrao (oboje se u crveno), pa ih tek onda oduzme. Napisao sam metodu za slucaj kada je ostao samo jedan red stapica na stolu. Kod za "odabiranje" stapica lepo radi, ali kada u istu metodu u nastavku dodam kod za "oduzimanje" istih, ne radi ni oduzimanje, a ni "odabiranje", tj. odabrani stapici se ni ne oboje.
Evo bitnog koda, pa ako neko ima vremena da pogleda.
Ovo je metoda kojom komp igra kad vidi da je ostao samo 1 red stapica. Naravno, nece propustiti priliku da pobedi tako sto ce ostaviti samo jedan stapic na stolu.
...
...
Code:

if(rowsLeft==1) {
             if(r1!=0) { playOneRowLeft(row1,r1);}
             if(r2!=0) { playOneRowLeft(row2,r2);} //Odavde zovem metod, row1,2 i 3 su 
             if(r3!=0) { playOneRowLeft(row3,r3);} //matrice stapica 
         }  // r1, r2 i r3 cuvaju broj stapica po redovima, ovo je sve OK

         else playRandom();
     }

void playOneRowLeft(Stick[] row,int r) { 
         int take=0;                
        for(int i=0; i<r-1;i++) {
            for(int j=0; j<70000000;j++) {}
            row[i].selected = true;
            repaint();    //ovo radi savrseno, ali kad dopisem kod za "oduzimanje" ne
        }
        for(int j=0; j<1400000;j++) {} 
        for(int i=0; i<r; i++) {
            if (row[i].selected==true) {
                         take=take+1;
                         row[i].selected=false;
                     }
                 }
                 r=r-take;
                 repaint();
             }

 Evo koda za paint:

public void paint(Graphics g) {
        
        for (int i = 0; i<r1; i++) {
            if (row1[i].selected == true) {
                g.setColor(Color.red);
                g.fillRect(300+60*i,299, stickWidth,stickHeight);
                g.setColor(Color.black);
            }
            else
            g.drawRect(300+60*i,299, stickWidth,stickHeight );
        }
        for (int i = 0; i<r2; i++) {
            if (row2[i].selected == true) {
                g.setColor(Color.red);
                g.fillRect(240+60*i,166, stickWidth,stickHeight);
                g.setColor(Color.black);
            }
            else
            g.drawRect(240+60*i,166, stickWidth,stickHeight );
        }
        for (int i = 0; i<r3; i++) {
            if (row3[i].selected == true) {
                g.setColor(Color.red);
                g.fillRect(180+60*i,33, stickWidth,stickHeight);
                g.setColor(Color.black);
            }
            else
            g.drawRect(180+60*i,33, stickWidth,stickHeight );
          }
          g.drawString("r1= "+r1+"  r2= "+r2+"  r3= "+r3,10,10);
     }

Dakle sve je ok, koordinate i ostalo, uvek su selected stapici samo iz reda koji je u pitanju. Ali kad dopisem onu gornju metodu, posle ostavljanja jednog jedinog reda komp kao da prestane da igra. Tri sata sam gledao, proveravao, ali jednostavno ne vidim gde je greska.
Eto, ako neko provali, bas me interesuje
Pozdrav
 
Odgovor na temu

[es] :: Java :: Zasto mi ne radi ovaj kod??

[ Pregleda: 2245 | Odgovora: 0 ] > FB > Twit

Postavi temu Odgovori

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