Witam !!
Poniżej przedstawiam kod:
import java.awt.*;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
public class obslugaObrazu extends JFrame {
private Image tlo;
private Image sciana;
private boolean obrazkiWgrane;
//private GraphicsDevice device; // co tutaj sie dzieje ? - czy to odwołanie do obiektu klasy GraphicsDevice?
JFrame window = new JFrame();
DisplayMode displayMode = new DisplayMode(1024, 768, 16,DisplayMode.REFRESH_RATE_UNKNOWN);
//REFRESH daje to ze nie wywala wyjątku i sam dostraja
GraphicsEnvironment environment =
GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice device = environment.getDefaultScreenDevice();
public void inicjujObraz(){
window.setUndecorated(true);
window.setResizable(false);
device.setFullScreenWindow(window);
// change the display mode
device.setDisplayMode(displayMode);
}
public void zamknijObraz() {
Window window = device.getFullScreenWindow();
if (window != null) {
window.dispose();
}
device.setFullScreenWindow(null);// przelancza na tryb ktory byl wczesniej
}
private Image loadImage(String fileName) {
return new ImageIcon(fileName).getImage(); // tworzy obiekty z pobranych obrazów
}
public void wczytajObrazki() {
tlo = loadImage("space.jpg"); //obiekt tlo
sciana = loadImage("brick.png");//obiekt sciana
Image robbo1 = loadImage("robbo1.png");
Image robbo2 = loadImage("robbo2.png");
Image robbo3 = loadImage("robbo3.png");
obrazkiWgrane = true;
repaint();
}
public void rysujCalosc(Graphics g){
g.drawImage(tlo, 0, 0,null);
Tablica zmiennaTablicy = new Tablica(); //czy tutaj trzeba tworzyć obiekt ?? lub jak zrobić odwolanie
zmiennaTablicy.stworzTablice();
for (int y=0 ; y<24 ; y++){
for (int x=0 ; x<32; x++){
if(zmiennaTablicy.pobierzElementTablicy(x,y)=='a')
g.drawImage(sciana, x*32,y*32,null);
}
}
}
}
Do ostatniej metody w powyższym kodzie wszystko szło "w miarę dobrze". Istota problemu prawdopodobnie tkwi w moim niezrozumieniu programowania obiektowego. Założeniem jest by klasa obsługaObrazu miała metody:
inicjalizacjaObrazu() -> uruchomienie wyświetlenie pustej grafiki, zamkniecieObrazu() - wylaczenie grafiki i calego programu, rysujCalosc() - rysuje wszsytko z tablicy, i rysujZmiany() - rysuje wybrane.
Wyobrażam sobie ze to powinno działać tak, że metoda main znajdujaca sie w innym pliku wywołuje je w sposób następuący :
import java.io.*;
import java.awt.*;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
class Main
{
public static void main(String args[])
{
Tablica tablica = new Tablica();
tablica.stworzTablice();
System.out.println(tablica.pobierzElementTablicy(0,0));//tutaj sprawdzam czy czyta dobrze
tablica.updateTablice(0,0,'d');
System.out.println(tablica.pobierzElementTablicy(0,0));//czy zrobilo update
obslugaObrazu xxx = new obslugaObrazu();
xxx.inicjujObraz();
xxx.wczytajObrazki();
xxx.rysujWszystko();//tutaj kompilator zglasza błąd "cannot find symbol"
//xxx.zamknijObraz();
}
}
Pytanie brzmi: jak wywołać metodę rysujWszystko() by zadziałała(narysowała mapę z tablicy). Próbowałem na wiele sposobów w nawiasie z roznymi opcjami. Moze trzeba stworzyć jakieś odwołanie do obiektu. Nie rozumiem tego mechanizmu.
Również, na pewno jest tu sporo "rzeczy" metod czy składni, których nie powinno sie w taki jak ja sposób (eksperymentanlo - ksiązkowo - na czuja googlowy ) formulować i jeśli coś mocno "razi po oczach" proszę również napisać jak to powinno wyglądać.
Dzieki z góry za pomoc!