Witam,
Aby poćwiczyć postanowiłem napisać grę podobną do Icy Tower. Jako że jestem początkujący, już na samym początku trafiłem na duży problem. Utworzyłem osobną klasę dla Platformy oraz klasę Panel, w której platformy miały być tworzone. Wszystko ładnie wygląda, ładnie się kompiluje ale w okienku widzę jedynie czarne tło.
Kody:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Rectangle;
import java.util.ArrayList;
import java.util.Random;
import javax.swing.JPanel;
public class Panel extends JPanel implements Runnable{
/**
*
*/
private static final long serialVersionUID = 2L;
public Platforma platf;
public Rectangle platfo; // utworzony dla spawdzenia czy w ogóle coś się rysuje
private ArrayList<Rectangle> platforma= new ArrayList<Rectangle>();
private Random m;
public int fps=1000;
public Thread game;
private boolean obj=false;
public boolean running=true;
public Panel(){
setBackground(Color.BLACK);
defineObj();
game= new Thread(this);
game.start();
}
public void defineObj(){
m=new Random();
platf= new Platforma(m.nextInt(Okno.SZEROKOSC-100),Okno.WYSOKOSC-100,0);
// platfo=new Rectangle(m.nextInt(Okno.SZEROKOSC-100),Okno.WYSOKOSC-200,0,100);
platforma.add(platfo);
obj=true;
}
public void paintComponent(Graphics g){
super.paintComponent(g);
g.setColor(Color.WHITE);
if(obj){
g.fillRect(platf.platf.x, platf.platf.y, platf.platf.height, platf.platf.width);
/* Próbowałem na różne sposoby np. platf.paintComponent(g); nic z tego :( */
g.fillRect(platfo.x,platfo.y,platfo.height, platfo.width);
}}
public void run() {
while(running)
fpsSetter();
}
public void fpsSetter(){
try{
game.sleep(fps/1000);
}catch(Exception e){
e.printStackTrace();
}
}
}
import java.awt.*;
import javax.swing.JPanel;
public class Platforma extends JPanel {
public Rectangle platf;
private int poz_x, poz_y, dlug;
private boolean obj=false;
public Platforma(int poz_x, int poz_y, int dlug ){
this.poz_x=poz_x;
this.poz_y=poz_y;
this.dlug=dlug;
platf=new Rectangle(poz_x,poz_y,dlug,100);
obj=true;
}
public void paintComponent(Graphics g){
super.paintComponent(g);
if(obj){
g.setColor(Color.RED);
g.fillRect(platf.x,platf.y,platf.height, platf.width);
}
}
public void movePlatform(int mov){
this.poz_y=+mov;
platf.setLocation(poz_x, poz_y);
}
}
I jeszcze pozostałe dwie, które chyba nie sprawiają problemów:
public class Main {
public static void main(String[] args) {
new Okno();
}
}
import java.awt.GridLayout;
import javax.swing.JFrame;
public class Okno extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
public static final int SZEROKOSC=800;
public static final int WYSOKOSC=600;
public Okno(){
super("Gierka");
setSize(SZEROKOSC,WYSOKOSC);
setLocationRelativeTo(null);
setResizable(false);
setLayout(new GridLayout(1,1,0,0));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Panel p= new Panel();
add(p);
setVisible(true);
}
}
Będę wdzięczny za jakąkolwiek pomoc.