[ Príspevkov: 2 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 12.06.13
Prihlásený: 09.05.16
Príspevky: 8
Témy: 2 | 2

Zdravím potrebujem pomoc s Javou, tento kód čo tu vidíte by som potreboval rozdeliť do viacerých tried ako sú trieda: Jedlo, pohyb atď...
Za pomoc vopred ĎAKUJEM


Kód:
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
import java.util.Random;

import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
import javax.swing.UIManager;

public class Hra extends Jadro implements KeyListener {
   private static int obtiaznost = 0;
   


   // Hlavná metóda ktorá spušta hru
   public static void main(String[] args) {

      
      
      Object[] opts = { "Ľahká", "Normálna", "Tažká", "Šialená", "Vypnúť hru" };      //Zobrazí nám akú obtiažnosť si chceme zvoliť
      obtiaznost = JOptionPane.showOptionDialog(null, "Vitajte v hre SNAKE! \n  Zvolte si obtiažnosť: \n ", //this will be displayed in the box
            "Snake", JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE,      //title of the message box
            null, opts, opts);

      if (obtiaznost == 0) {      //pokial je obtiaznosť zvolená lahká tak potom
         spanok = 139;         //dlzka prestávky pri restartovaní cyklu
         mriezka = true;         //zobrazí mriežku kadial sa bude uživatel pohybovať
         new Hra().spustac();      //spustí novú hru
         
      } else if (obtiaznost == 1) {      //pokial je obtiaznosť zvolená normálna tak potom
         spanok = 99;         //dlzka prestávky pri restartovaní cyklu
         mriezka = true;         //nezobrazí mriežku kadial sa bude uživatel pohybovať
         new Hra().spustac();      //spustí novú hru
         
      } else if (obtiaznost == 2) {      //pokial je obtiaznosť zvolená tazka tak potom
         spanok = 69;         //dlzka prestávky pri restartovaní cyklu) v mili sekundách
         mriezka = false;         //nezobrazí mriežku kadial sa bude uživatel pohybovať
         new Hra().spustac();      //spustí novú hru
         
      } else if (obtiaznost == 3) {      //pokial je obtiaznosť zvolená sialena tak potom
         spanok = 29;         //dlzka prestávky pri restartovaní cyklu) v mili sekundách
         mriezka = false;         //nezobrazí mriežku kadial sa bude uživatel pohybovať
         new Hra().spustac();      //spustí novú hru
         
      } else {
         System.exit(0);      //ukonci hru
      }
      
      if(opakovat){
         main(null);
      }
   }

   ArrayList<Rectangle> had;
   Rectangle jedlo;      //vytvorí oblast pre umiestnenie jedla
   boolean hore, dole, vlavo, vpravo, zjedene, zmenaSmeru;      //zadeklaruje boolean premenne
   static boolean mriezka;      //zadeklaruje mriezku
   int body;      //zadeklaruje premennu pre body

   
   public void inicializaciaHry() {      // inicializačná metóda
      super.inicializaciaHry();
      oknoHry.addKeyListener(this);
      

      had = new ArrayList<Rectangle>();      //Umiestnenie a velkost hadíka
      had.add(new Rectangle(280, 240, 20, 20));
      had.add(new Rectangle(281, 240, 20, 20));
      had.add(new Rectangle(-20, -20, 20, 20));

      zjedene = true;
      body = 0;
   }

   public void aktualizaciaHry() {      
      Vytvorjedlo(); //vytvorenie jedla
      
      zmenaSmeru = false;

      // Kolizia medzi hadom a samím sebou
      for (int i = 0; i < had.size(); i++) {
         for (int j = i + 1; j < had.size(); j++) {
            if (had.get(i).getLocation().x == had.get(j).getLocation().x
                  && had.get(i).getLocation().y == had.get(j)
            .getLocation().y) {
               zastavenieHry();      //Ukonči hru ked had zje samého seba
               oknoHry.setVisible(false);
               JOptionPane.showMessageDialog(null, "Vaše skóre " + body,      //zobrazí kolko hráč nahral bodov
                     "Snake", JOptionPane.PLAIN_MESSAGE);
               opakovat = true;      //spusti znova hru
            }
         }
      }

      // pohyb hada
      for (int i = had.size() - 1; i >= 0; i--) {
         
         if (hore) {      //pokial je stlačená šipka hore
            try {      //skontroluje, či had už sa nepohybující smerom hore
               had.get(i).setLocation(had.get(i - 1).x,
                     had.get(i - 1).y);
            } catch (Exception alternate ) {      // pokial nie, tak sa zmení smer hada smerom hore
               if (had.get(i).getLocation().y > 0) {
                  had.get(i).setLocation(had.get(i).x,
                        had.get(i).y - 20);
               } else if ( (obtiaznost == 0) || (obtiaznost == 1)) {      // pokial je obtiažnosť nastavena na lahku alebo normálnu tak   
                  had.get(i).setLocation(had.get(i).x,
                        oknoHry.getHeight() - 20);      // Had vyskočí na druhej strane obrazovky, ale pokial je obtiažnost tazka alebo sialena , tak zomrie had
               }
            }
            
         } else if (dole) {      //pokial je stlačená šipka dole
            try {         //skontroluje, či had už sa nepohybující smerom dolu
               had.get(i).setLocation(had.get(i - 1).x,
                     had.get(i - 1).y);
            } catch (Exception alternate) {      // pokial nie, tak sa zmení smer hada smerom dole
               if (had.get(i).getLocation().y < oknoHry.getHeight() - 20) {
                  had.get(i).setLocation(had.get(i).x,   
                        had.get(i).y + 20);
               } else if ( (obtiaznost == 0) || (obtiaznost == 1)) {      // pokial je obtiažnosť nastavena na lahku alebo normálnu tak         
                  had.get(i).setLocation(had.get(i).x, 0);      // Had vyskočí na druhej strane obrazovky, ale pokial je obtiažnost tazka alebo sialena , tak zomrie had
               }
            }
            
         } else if (vlavo) {      //pokial je stlačená šipka vlavo
            try {         //skontroluje, či had už sa nepohybující smerom dolava
               had.get(i).setLocation(had.get(i - 1).x,
                     had.get(i - 1).y);
            } catch (Exception alternate) {      // pokial nie, tak sa zmení smer hada smerom vlavo
               if (had.get(i).getLocation().x > 0) {
                  had.get(i).setLocation(had.get(i).x - 20,
                        had.get(i).y);
               } else if ( (obtiaznost == 0) || (obtiaznost == 1)) {   // pokial je obtiažnosť nastavena na lahku alebo normálnu tak         
                  had.get(i).setLocation(oknoHry.getWidth() - 20,
                        had.get(i).y);      // Had vyskočí na druhej strane obrazovky, ale pokial je obtiažnost tazka alebo sialena , tak zomrie had
               }
            }
            
         } else if (vpravo) {      //pokial je stlačená šipka vpravo
            try {         //skontroluje, či had už sa nepohybující smerom doprava
               had.get(i).setLocation(had.get(i - 1).x,
                     had.get(i - 1).y);
            } catch (Exception alternate) {      // pokial nie, tak sa zmení smer hada smerom vlavo
               if (had.get(i).getLocation().x < oknoHry.getWidth() - 20) {
                  had.get(i).setLocation(had.get(i).x + 20,
                        had.get(i).y);
               } else if ( (obtiaznost == 0) || (obtiaznost == 1)) {      
                  had.get(i).setLocation(0, had.get(i).y);      
               }
            }
         }
      }
   }

   // vytváranie jedla
   public void Vytvorjedlo() {
      if (zjedene && hore || zjedene && dole || zjedene && vlavo || zjedene && vpravo) {      //skontroluje či jedlo bolo zjedené vo všetkých štyroch smeroch
         int x = new Random().nextInt(30) * 20;      //nastavanie náhodných x súradníc
         int y = new Random().nextInt(25) * 20;      //nastavanie náhodných y súradníc
         boolean vytvorJedlo = true;      //vytvorí nové jedlo

         for (int i = 0; i < had.size(); i++) {
            if (had.get(i).x == x && had.get(i).y == y) {
               vytvorJedlo = false;      //nevytvára jedlo
            }
         }

         if (vytvorJedlo) {      //
            jedlo = new Rectangle(x, y, 20, 20);      //umiestnenie a velkost hada zostávajú rovnaké
            zjedene = false;      //pokial nezje jedlo nastaví sa na false
         }
         
      } else if (jedlo != null && !zjedene) {   //pokial jedlo sa zje tak
         if (had.get(0).x == jedlo.x && had.get(0).y == jedlo.y) {      //nastaví sa nová pozícia jedla
            had.add(new Rectangle(-20, -20, 20, 20));
            body++;      // a pridajú body
            zjedene = true;      //nastavaví premennú že jedlo je zjedné
         }
      }
   }

   // kresliaca metóda
   public void kresli(Graphics2D g) {   //nastavenie grafiky pre hru
      
      g.setColor(Color.BLACK);      //nastavenie pozadia hry
      
      
      g.fillRect(0, 0, oknoHry.getWidth(), oknoHry.getHeight());      //Takže farba vyplní celé pozadie rámu

      g.setColor(Color.GRAY);      //nastavenie farby mriezky
      if(mriezka){      //použije cyklus na kreslenie mriežky
         for (int x = 0; x < oknoHry.getWidth() / 20; x++) {
            for (int y = 0; y < oknoHry.getHeight() / 20; y++) {
               g.drawRect(x * 20, y * 20, 20, 20);
            }
         }
      }
      
      if (!zjedene) {
         g.fill(jedlo);      //a vykresli skoci na metodu jedla
      }
      
      g.setColor(Color.WHITE);      //nastaví sa farba hada a písma
      for (int i = had.size() - 1; i >= 0; i--) {
         g.fill(had.get(i));      //nastavenie farby pre hada
      }

      g.setFont(new Font(".", Font.PLAIN, 16));
      g.drawString("Body: " + body, 2, 17);      //Nastaví umiestnenie a zobrazenie skóre na rámu
      g.drawString("Stlač ESC pre skončenie hry", 450, 17);      //nastaví pozíciu správy
      if(!hore && !dole && !vlavo && !vpravo){   //skontroluje či nebolo stlačené smerové tlačidlo
         g.drawString("Stlač smerové tlačidlo a spustí sa hra", 130, 17);   //Nastávi pozíciu hlášky
      }
   }


   public void keyPressed(KeyEvent alternate) {   // nastavnie pohybu
      
      if (alternate.getKeyCode() == KeyEvent.VK_ESCAPE) {      //pokial je tlačení ESCAPE
         zastavenieHry();      //ukončí sa hra
         
      } else if (alternate.getKeyCode() == KeyEvent.VK_UP && !dole && !zmenaSmeru) {   //pokial sa stlačí šipka hore
         zmenaSmeru = true;      //zmení sa smer a nastaví sa premenná na true
         hore = true;         //všetky smery okrem smeru hore sa nastavia na false
         dole = false;
         vlavo = false;
         vpravo = false;
         
      } else if (alternate.getKeyCode() == KeyEvent.VK_DOWN && !hore && !zmenaSmeru) {   //pokial sa stlačí šipka dole
         zmenaSmeru = true;      //zmení sa smer a nastaví sa premenná na true
         hore = false;         //všetky smery okrem smeru dolu sa nastavia na false
         dole = true;
         vlavo = false;
         vpravo = false;
         
      } else if (alternate.getKeyCode() == KeyEvent.VK_LEFT && !vpravo && !zmenaSmeru) {   //pokial sa stlačí šipka vlavo
         zmenaSmeru = true;      //zmení sa smer a nastaví sa premenná na true
         hore = false;         //všetky smery okrem smeru vlavo sa nastavia na false
         dole = false;
         vlavo = true;
         vpravo = false;
         
      } else if (alternate.getKeyCode() == KeyEvent.VK_RIGHT && !vlavo && !zmenaSmeru) {   //pokial sa stlačí šipka vpravo
         zmenaSmeru = true;      //zmení sa smer a nastaví sa premenná na true
         hore = false;         //všetky smery okrem smeru vpravo sa nastavia na false
         dole = false;
         vlavo = false;
         vpravo = true;
      }
   }

   public void keyReleased(KeyEvent alternate) {
   }

   public void keyTyped(KeyEvent alternate) {
   }
}


Kód:
import java.awt.*;
import java.awt.image.BufferStrategy;
import java.awt.image.BufferedImage;
import javax.swing.*;

public abstract class Jadro {
   
   boolean beziaci;      //deklaracia premenných
   static boolean opakovat;
   JFrame oknoHry;
   

   public void zastavenieHry(){      //vypínacia metóda
      beziaci = false;   //vypne beziacu hru
   }
   

   public void spustac(){      //spustač hry zavolá metódu inicializácie a hlavný spuštač
      
      try{
         inicializaciaHry();   //nastaví okno hry
         Hlavnyspustachry();      //spustí celú hru
      }finally{
         if(!opakovat){   //pokial uživatel nechce znovu spustiť hru
            System.exit(0);      //tak sa hra skončí
         }
      }
   }
   
   public void inicializaciaHry(){
      
      oknoHry = new JFrame();   //vytvorenie okna 
      
      oknoHry.setUndecorated(false);      //vypnutie rámu
      oknoHry.setIgnoreRepaint(true);   
      oknoHry.setResizable(false);   //nastaví aby sa nemohlo okno rozsirovať
      
      
      oknoHry.setSize(800, 700);      //velkost okna
      oknoHry.setLocationRelativeTo(null);   //nastaví lokáciu pre okno
      
      oknoHry.setFont(new Font("Arial", Font.PLAIN, 50));   //nastaví písmo a jeho velkost   
      oknoHry.setVisible(true);      //viditelnost okna
      
      oknoHry.createBufferStrategy(2);   //
      opakovat = false;
      beziaci = true;
   }
   
   static long spanok;      //rýchlost hry
   
   
   public void Hlavnyspustachry(){   //hlavny herný cyklus
      
      while(beziaci){      //pokial hra stále beží
         Graphics2D graphics = (Graphics2D) oknoHry.getBufferStrategy().getDrawGraphics();
         kresli(graphics);      //zaháji kreslenie mriežky
         graphics.dispose();
         this.aktualizaciaHry();      //restartuje cyklus hry, skontroluje, ci had zjedlol jedlo, sám a případně šipka byla stisknuta pro pohyb
         
         if(oknoHry != null){
            BufferStrategy s = oknoHry.getBufferStrategy();
            if(!s.contentsLost()){
               s.show();
            }
         }
         
         try{
            Thread.sleep(spanok);
         }catch(Exception alternate){}
      }
   }
   

   public abstract void aktualizaciaHry();   //aktualizácia hry
   
   
   public abstract void kresli(Graphics2D graphics);   //nastavenia kreslacej metódy
   

   
}


Offline

Skúsený užívateľ
Skúsený užívateľ
JAVA - Vyriešenie problému s triedami

Registrovaný: 24.01.08
Prihlásený: 13.09.17
Príspevky: 14572
Témy: 66 | 66
Bydlisko: Žilina

Si robíš prdel, nie? Drbneš sem komplet zdrojáky s vetou v štýle "spravte to za mňa".


_________________
C#, PHP, ...
 [ Príspevkov: 2 ] 


JAVA - Vyriešenie problému s triedami



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

c++ ako pracovat s triedami

v Assembler, C, C++, Pascal, Java

3

594

03.11.2008 20:13

tlacitko Enter

V tomto fóre nie sú ďalšie neprečítané témy.

Vyriešenie internetu

v Rozširujúce karty

7

552

24.09.2014 20:35

arven

V tomto fóre nie sú ďalšie neprečítané témy.

Vyriešenie pomalého adsl ?!

v Siete

9

477

26.10.2011 9:16

geared

V tomto fóre nie sú ďalšie neprečítané témy.

Čiastočné vyriešenie odpálených geniusoch

v Zvuk

2

793

17.09.2007 21:53

Dorques

V tomto fóre nie sú ďalšie neprečítané témy.

Vyriešenie chladenia v skrinke Corsair 200R Carbide Series

v Chladiče a všetky druhy chladenia

4

557

02.07.2015 14:23

vlado_PLUS

V tomto fóre nie sú ďalšie neprečítané témy.

Nefunkčná integrovaná grafická karta (Intel HD) - fin. odmena za vyriešenie

v Ostatné grafické karty

9

1063

30.08.2015 13:56

4040

V tomto fóre nie sú ďalšie neprečítané témy.

Identifikacia problemu

v Ostatné grafické karty

1

447

12.09.2013 12:57

michalesku

V tomto fóre nie sú ďalšie neprečítané témy.

Diagnostika problemu

v ATI/AMD grafické karty

2

538

19.09.2011 22:24

qkrusty

V tomto fóre nie sú ďalšie neprečítané témy.

Riesenie mojho problemu

v Pevné disky a radiče

8

696

14.12.2007 21:42

Triplespace

V tomto fóre nie sú ďalšie neprečítané témy.

Rozdiel medzi Java Standard a Java EE

v Assembler, C, C++, Pascal, Java

1

900

02.04.2014 12:41

XOLOO

V tomto fóre nie sú ďalšie neprečítané témy.

dobre java navody a nova tema JAVA

[ Choď na stránku:Choď na stránku: 1, 2 ]

v Assembler, C, C++, Pascal, Java

35

5548

09.03.2009 17:14

tlacitko Enter

V tomto fóre nie sú ďalšie neprečítané témy.

čo je zdrojom problému?

v Intel čipové sady

4

718

24.03.2011 18:42

petr1991

V tomto fóre nie sú ďalšie neprečítané témy.

zistenie problemu nefunckosti pc

v Operačné systémy Microsoft

0

439

14.06.2011 22:48

Naviz

V tomto fóre nie sú ďalšie neprečítané témy.

hlasenie problemu z eset

v Bezpečnosť a firewally

3

930

04.01.2009 17:52

Kosak

V tomto fóre nie sú ďalšie neprečítané témy.

pomoc pri hladani problemu.

v Pevné disky a radiče

8

743

24.09.2009 21:58

leinad422

V tomto fóre nie sú ďalšie neprečítané témy.

riešenie post-refresh problému

v PHP, ASP

9

582

25.07.2008 16:57

Tominator



© 2005 - 2024 PCforum, edited by JanoF