Author Topic: TJava  (Read 9514 times)

jv1460

  • Newbie
  • *
  • Posts: 24
    • View Profile
TJava
« on: 04.03.2013, 15:38:50 »
nazdar.....mohli by ste mi prosim vas pomoct s metodou update() v triede ConsoleUI??ma to vypisovat hracie pole.....dakujem

Dickenz

  • Jr. Member
  • **
  • Posts: 71
    • View Profile
Re: TJava
« Reply #1 on: 06.03.2013, 17:57:45 »
alebo z coho cerpat aspon ??

palechandro

  • Newbie
  • *
  • Posts: 34
    • View Profile
Re: TJava
« Reply #2 on: 07.03.2013, 00:09:29 »
nazdar.....mohli by ste mi prosim vas pomoct s metodou update() v triede ConsoleUI??ma to vypisovat hracie pole.....dakujem

ahoj, a comu tam nerozumies ? skusal si uz nejako zacat ?

myslienka metody update je v tom ze si proste prebehnes cele herne pole  v dvoch for-och, a pre kazdu bunku sa pytas ci je open,marked alebo closed. a podla toho vykreslis to herne pole. herne pole neni nic ine len textove riadky pod sebou....

jv1460

  • Newbie
  • *
  • Posts: 24
    • View Profile
Re: TJava
« Reply #3 on: 07.03.2013, 15:25:32 »
vedel som co ma update() robit len som to nevedel zapisat predtym......teraz uz len potrebujem dostat sa k metode getValue() z triedy Clue

public void update() { 
    int row, column;
        System.out.println("   0 1 2 3 4 5 6 7 8");   
        for (row=0; row < field.getRowCount(); row++) {
                           switch(row){ 
                               case 0:System.out.print("A ");break;
                               case 1:System.out.print("B ");break;
                               case 2:System.out.print("C ");break;
                               case 3:System.out.print("D ");break;
                               case 4:System.out.print("E ");break;
                               case 5:System.out.print("F ");break;
                               case 6:System.out.print("G ");break;
                               case 7:System.out.print("H ");break;
                               case 8:System.out.print("I ");break;
                           }
            for (column=0; column < field.getColumnCount() ; column++) {               
                System.out.print(" ");
                 
     
           Tile t = field.getTile(row, column);
         
                if (t.getState() == Tile.State.MARKED) {
                     System.out.print("M");
               }
                if(t.getState() == Tile.State.OPEN){
                    if   (t instanceof Mine){               
                    System.out.print("X");                 
                    }
                if   (t instanceof Clue){                                                                   
                                int c = field.getClues();    //getClues je getter v triede Filed ktory vracia pocet min      naokolo lebo neviem pouzit metodu getValue z triedy Clue
                    System.out.print(+c);
                    }
                } 
                if(t.getState() == Tile.State.CLOSED){
                    System.out.print("-");
                }
            }
         System.out.println();
         }   

  }

veteran

  • Hero Member
  • *****
  • Posts: 956
    • View Profile
Re: TJava
« Reply #4 on: 07.03.2013, 15:56:12 »
Quote
if   (t instanceof Clue){                                                                   
           int c = field.getClues();    //getClues je getter v triede Filed ktory vracia pocet min      naokolo lebo neviem pouzit metodu getValue z triedy Clue
           System.out.print(+c);
}

t treba pretypovať na Clue a potom zavolať getValue(). Teda čosi takéto:
Quote
((Clue) t).getValue();

jv1460

  • Newbie
  • *
  • Posts: 24
    • View Profile
Re: TJava
« Reply #5 on: 07.03.2013, 16:13:54 »
Sanka dole.....tak dlho som to skusal a ked vidim ako to malo byt tak mi je do placu ze som to nespravil sam.....dakujem pekne

Dickenz

  • Jr. Member
  • **
  • Posts: 71
    • View Profile
Re: TJava
« Reply #6 on: 12.03.2013, 20:14:39 »
v navode pišu že odporučaju na vykreslenie použiť printf ....kde sa viem niečo o printf dočitať ? ..nepoužil som to ešte nikdy a nerozumiem ako vie printf krajšie vykresliť ten zaklad hracieho pola čiže čisla od 1 po n a tak isto abecedu od A po XYZ....určite niečo take existuje ale moje klucove slova do google su vadne :(

veteran

  • Hero Member
  • *****
  • Posts: 956
    • View Profile
Re: TJava
« Reply #7 on: 12.03.2013, 21:09:35 »
Krajšie vykreslenie hracieho poľa = že keď náhodou máš viac ako 10 stĺpcov, tak ti hracie pole rozhodí, lebo symboly '-', 'X', 'M', '?' sú len jednoznakové, ale označenie stĺpca bude už dvojznakové. Teda symboly už nebudú pekne zarovno s číselným označením stĺpca.

V návode narážajú konkrétne na takéto použitie printf-u:
Quote
System.out.printf("%2c ", '?');

Havran

  • Hero Member
  • *****
  • Posts: 2003
  • Here comes the fuzz
    • View Profile
Re: TJava
« Reply #8 on: 14.03.2013, 01:40:48 »
sak ked das do googlu system.out.printf tak hned ti vyhodi das 4 odkazy na stackoverflow kde to mas popisane jak to funguje
Achievement of your happiness is the only moral purpose of your life.

veteran

  • Hero Member
  • *****
  • Posts: 956
    • View Profile
Re: TJava
« Reply #9 on: 14.03.2013, 01:50:10 »
jojo, Stackoverflow je zázračný web  :)

jv1460

  • Newbie
  • *
  • Posts: 24
    • View Profile
Re: TJava
« Reply #10 on: 29.03.2013, 19:09:49 »
Potreboval by som pomoct s metodou openAdjecentMines......robil som to podla countAdjecentMines
Neviem kde by mohla byt chyba

 private void openAdjacentMines(int row,int column){

        for (int rowOffset = -1; rowOffset <= 1; rowOffset++) {
            int actRow = row + rowOffset;
            if (actRow >= 0 && actRow < getRowCount()) {
                for (int columnOffset = -1; columnOffset <= 1; columnOffset++) {
                    int actColumn = column + columnOffset;
                    if (actColumn >= 0 && actColumn < getColumnCount()) {
                       tiles[row][column].setState(Tile.State.OPEN);

                    }
                }
            }
        }
   
   
    }
 

veteran

  • Hero Member
  • *****
  • Posts: 956
    • View Profile
Re: TJava
« Reply #11 on: 29.03.2013, 19:22:55 »
A čo ti na tom konkrétne nefunguje? Spadne to alebo to robí hlúposti??

Code: [Select]
if (actColumn >= 0 && actColumn < getColumnCount()) {
                       tiles[row][column].setState(Tile.State.OPEN);

                    }

Snažíš sa otvárať stále tú istú (už otvorenú) dlaždicu, ktorej susedov kontroluješ... Pointou metódy je otvoriť práve tých susedov :D

BTW: Nemalo by sa to volať openAdjacentTiles?  ;D
« Last Edit: 29.03.2013, 21:25:50 by veteran »

jv1460

  • Newbie
  • *
  • Posts: 24
    • View Profile
Re: TJava
« Reply #12 on: 29.03.2013, 20:44:36 »
Ved ked sa v najvnutornejsom cykle metody countAdjecentMines ikrementuje premenna tak sa pocitaju okolite miny tak ked namiesto toho nastavim state na Open mali by sa otvarat okolite tiles ne??to mi neni velmi jasne
a hej ma sa to volat openAdjecentTiles

Havran

  • Hero Member
  • *****
  • Posts: 2003
  • Here comes the fuzz
    • View Profile
Re: TJava
« Reply #13 on: 29.03.2013, 21:01:38 »
Ved ked sa v najvnutornejsom cykle metody countAdjecentMines ikrementuje premenna tak sa pocitaju okolite miny tak ked namiesto toho nastavim state na Open mali by sa otvarat okolite tiles ne??to mi neni velmi jasne
a hej ma sa to volat openAdjecentTiles

nebude problem nahodou
Code: [Select]
tiles[row][column].setState(Tile.State.OPEN);bo nikde v cykle tieto hodnoty nemenis a idu zo vstupu, ostatne hodnoty sa ti pomenia ale toto [row] a [column] je furt to iste, nechces to mat nahodou takto ?
Code: [Select]
tiles[actRow][actColumn].setState(Tile.State.OPEN);
« Last Edit: 29.03.2013, 21:04:39 by Havran »
Achievement of your happiness is the only moral purpose of your life.

veteran

  • Hero Member
  • *****
  • Posts: 956
    • View Profile
Re: TJava
« Reply #14 on: 29.03.2013, 21:28:04 »
Ved ked sa v najvnutornejsom cykle metody countAdjecentMines ikrementuje premenna tak sa pocitaju okolite miny tak ked namiesto toho nastavim state na Open mali by sa otvarat okolite tiles ne??to mi neni velmi jasne
a hej ma sa to volat openAdjecentTiles
Nastavenie Open je v poriadku, ale pozri sa, pre ktoré políčko to nastavuješ. Vždy pre jedno a to isté (na ktoré si klikol). A ty chceš otvoriť okolité prázdne políčka.

Ako je spomenuté vyššie, má byť:
Code: [Select]
tiles[actRow][actColumn].setState(Tile.State.OPEN);
row, column - "súradnice" dlaždice, ktorú si otvoril (na ktorú si klikol)
actRow, actColumn - "súradnice" okolitých dlaždíc (menia sa v cykle)

jv1460

  • Newbie
  • *
  • Posts: 24
    • View Profile
Re: TJava
« Reply #15 on: 29.03.2013, 21:29:53 »
Uz som to spravil......dakujem pekne

jv1460

  • Newbie
  • *
  • Posts: 24
    • View Profile
Re: TJava
« Reply #16 on: 21.04.2013, 19:42:31 »
nazdar.....co by mohlo chybat v tejto metode??pole je vykreslene ale dlazdice nie su clickable

@Override
    public void mousePressed(MouseEvent e) {
       
        if(field.getState() == GameState.PLAYING){
        TileComponent b = (TileComponent)e.getSource();
        if(SwingUtilities.isLeftMouseButton(e)){
        field.openTile(b.getRow(),b.getColumn());
                }
        if(SwingUtilities.isRightMouseButton(e)){
        TileComponent t = (TileComponent)e.getSource();
        field.markTile(t.getRow(), t.getColumn());
            }   
        }
        if(field.getState() == GameState.FAILED){
        JOptionPane.showMessageDialog(rootPane, menuBar, "Konec", 200);
        }
       
        if(field.getState() == GameState.SOLVED){
        JOptionPane.showMessageDialog(rootPane, menuBar, "Top seller v hre", 200);
        BestTimes b = new BestTimes();
        int m = Minesweeper.getInstance().getPlayingSeconds();
        b.addPlayerTime(System.getProperty("user.name"),m);
        }
       
       
    }

veteran

  • Hero Member
  • *****
  • Posts: 956
    • View Profile
Re: TJava
« Reply #17 on: 21.04.2013, 19:53:09 »
Mám pocit, že po kliknutí na políčko by si mal volať metódu update() alebo také niečo.

jv1460

  • Newbie
  • *
  • Posts: 24
    • View Profile
Re: TJava
« Reply #18 on: 21.04.2013, 20:39:09 »
ide to .....dakujem pekne

Dickenz

  • Jr. Member
  • **
  • Posts: 71
    • View Profile
Re: TJava
« Reply #19 on: 22.04.2013, 04:22:47 »
mam taku otazku mam to principom rovnako ako tu hore ...ale nevyskoci mi ziadna message.....naschval ked kliknem na minu cize failed malo by mi vypisat nejaku spravu nie ?..

Code: [Select]
JOptionPane.showMessageDialog(rootPane, menuBar, "YOU FAILED!!", WIDTH);

no ma zajima ze co znamena ten prvy a druhy parameter ? ..lebo to mi tam ponukol netbeans defaultne ..a neviem ci to mam alebo nemam menit ?..

Agamemnon

  • Hero Member
  • *****
  • Posts: 2942
  • Per aspera ad Astra
    • View Profile
Re: TJava
« Reply #20 on: 22.04.2013, 13:14:54 »
take otazky sa riesia referencnou priruckou - java ma celkom slusnu na webe:
http://docs.oracle.com/javase/7/docs/api/javax/swing/JOptionPane.html
All code is crap.

42

Dickenz

  • Jr. Member
  • **
  • Posts: 71
    • View Profile
Re: TJava
« Reply #21 on: 22.04.2013, 15:47:52 »
o nic nesom mudrejsi aj tak :(.... ale asi budem mat chybu lebo ked nahodou prejdem hru alebo fail ..tak v ntbnse mam chyb na rozdavanie ....

veteran

  • Hero Member
  • *****
  • Posts: 956
    • View Profile
Re: TJava
« Reply #22 on: 22.04.2013, 16:09:29 »
o nic nesom mudrejsi aj tak :(.... ale asi budem mat chybu lebo ked nahodou prejdem hru alebo fail ..tak v ntbnse mam chyb na rozdavanie ....
Dokumentáciu sa dočítaš aj v NetBeanse a tam je to (IMHO) dosť jasne napísané (každý jeden parameter je tam rozpísaný).

Netreba používať všetko, čo ti NB nanúti ;) Stačí toto:
JOptionPane.showMessageDialog(rootPane, "Message");

Havran

  • Hero Member
  • *****
  • Posts: 2003
  • Here comes the fuzz
    • View Profile
Re: TJava
« Reply #23 on: 23.04.2013, 17:15:44 »
mam taku otazku mam to principom rovnako ako tu hore ...ale nevyskoci mi ziadna message.....naschval ked kliknem na minu cize failed malo by mi vypisat nejaku spravu nie ?..

Code: [Select]
JOptionPane.showMessageDialog(rootPane, menuBar, "YOU FAILED!!", WIDTH);

no ma zajima ze co znamena ten prvy a druhy parameter ? ..lebo to mi tam ponukol netbeans defaultne ..a neviem ci to mam alebo nemam menit ?..

neviem sice jaky to ma konstruktor, ale dost som si isty ze namiesto 'WIDTH' tam by malo byt nejake cislo alebo rozmer dajaky
Achievement of your happiness is the only moral purpose of your life.

Dickenz

  • Jr. Member
  • **
  • Posts: 71
    • View Profile
Re: TJava
« Reply #24 on: 24.04.2013, 01:51:49 »
jj to mi doslo ze tam dam nejaky int ....ale nešlo to aj tak ...cez to co napisal veteran to funguje ...