Quindi, diciamo che ho qualche gioco, prendere Pong per esempio. Ovviamente, in generale non si vuole mescolare la logica del gioco in classi grafiche, quindi la classe per Ball o Paddle è sepearte dal JPanel che effettivamente le disegna. Ball ha la logica del movimento per la palla, la sua posizione attuale, il rilevamento dei colpi, ecc. Tuttavia, è una cattiva pratica per me usare le classi grafiche di Swing e awt nella mia lezione di ballo? Ad esempio, se dovessi usare un java.awt.Rectangle per determinare la hitbox. Anche se non lo sto disegnando in questa classe, lo sto usando. O se dovessi usare Java.awt.Point per memorizzare le coordinate.È una cattiva pratica usare le classi swing e awt per le mie classi non grafiche nei miei programmi?
A proposito, il motivo per cui lo chiedo è perché mi è stato detto molte volte in questo sito di non mescolare la grafica con altre parti.
Utilizzando rettangolo in classe non-grafica: (È questo cattiva pratica?)
public class Ball {
static Rectangle hitbox = new Rectangle(0,10,20,20);
static void checkHit() {
if(hitbox.intersects(Paddle.hitbox) //do something
}
}
mia classe Graphics:
public class DrawMyStuff extends JPanel {
void paintComponent(Graphics g) {
super.paintComponent(g);
setBackground(Color.BLACK);
Graphics2D g2d = (Graphics2D) g;
g2d.draw(Ball.hitbox);
}
}
Questo sarà per lo più un argomento soggettivo, ma direi che gli esempi che date sono perfettamente soddisfacenti. Se dovessi implementare le tue classi Point e Rectangle, è probabile che sarebbero quasi identiche a quelle utilizzate da AWT - e se questo è il caso, perché preoccuparsi? –
è difficile rispondere sì/no alla tua domanda. se stai facendo un'applicazione swing, e il tuo codice sarà nient'altro che swing app, allora direi, sì, è ok usare la classe 'java.awt.Rectangle' .. ma se hai intenzione di fare qualcos'altro con esso , è necessario tenere presente che se si utilizza il codice per l'app Android, sarà necessario fornire i file jar swing/awt. e aggiungendo la libreria complessa al progetto solo per una classe o anche per un metodo è eccessivo. – user902383