Olá pessoas, sou novo no GUJ e percebi que varias das minhas duvidas eu ja achei resposta aqui. Entao eu decidi criar uma conta e entrar para o club kkkkkkk
Bom eu estou em um projeto simples para por meu conhecimento a prova, e me decepcionei kkkkkkk
Isso deve ser simples para todos mas eu ja estou a dias batendo a cabeça nesse programinha.
Bom vamos deixar as mazelas de lado e vamos ao que interessa xD
Eu quero “recriar” aquele famoso jogo da cobrinha, apenas para colocar meu conhecimento pra fora e praticar um pouco. Neste jogo eu criei 2 classes com objetos de mesma procedencia digamos assim…
Nas duas classes eu gero Graphics. Em uma eu crio a cobrinha por assim dizer( nao esta parecendo uma cobra ainda xD) e na outra eu crio a comida. Esta comida precisa estar em classe diferente so porque sim kkk
O problema esta na hora de juntar os 2… Bom o topico que ensina a colocar SRC aqui esta bugado entao vou apenas colar aqui.
Jogodacobrinha.java
import java.awt.;
import javax.swing.;
public class Jogodacobrinha extends JFrame {
private static final int LARGURA = 800;
private static final int ALTURA = 600;
private static final String NOME = "Cobrinha em Java";
static JFrame jogo = new JFrame(NOME);
static int x;
static int y;
public Jogodacobrinha(){
atualizar();
}
public void atualizar(){
Comida comida = new Comida();
Cobra cobrinha = new Cobra(0,0);
Tela tela = new Tela();
cobrinha.setBackground(Color.BLACK);
jogo.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jogo.setSize(LARGURA, ALTURA);
jogo.setResizable(false);
jogo.setLocationRelativeTo(null);
jogo.setLayout(new BorderLayout());
jogo.getContentPane().add(cobrinha, BorderLayout.CENTER);
jogo.getContentPane().add(comida, BorderLayout.CENTER);
jogo.setVisible(true);
}
public static void main(String[] args) {
new Jogodacobrinha();
}
}
como jogo = new JFrame eu tentei colocar os 2 dentro utilizando "jogo.getContentPane().add(cobrinha, BorderLayout.CENTER); e nao funcionou =( se eu mudo um dos 2 pra SOUTH aparece um embaixo do outro. vou mandar as 2 classes dos objetos... classe Cobra.java
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.geom.Ellipse2D;
import java.util.Random;
import javax.swing.JPanel;
import javax.swing.Timer;
@SuppressWarnings(“serial”)
public class Cobra extends JPanel implements ActionListener, KeyListener {
Timer t = new Timer(5, (ActionListener) this);
private double velX = 2, velY = 2;
private double x;
private double y;
Color cor = Color.WHITE;
public Cobra(double x, double y) {
this.x = x;
this.y = y;
t.start();
addKeyListener(this);
setFocusable(true);
setFocusTraversalKeysEnabled(true);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
Ellipse2D circle = new Ellipse2D.Double(x, y, 25, 25);
g2.setColor(cor);
g2.fill(circle);
}
@Override
public void actionPerformed(ActionEvent e) {
/* if (x < 0 || x>740){
* velX = -velX;
* }
* if(y <0 || y>520){
* velY = -velY;
* }
*/
if (x < -30) {
x = 800;
}
if (x > 800) {
x = 0;
}
if (y < -30) {
y = 600;
}
if (y > 600) {
y = 0;
}
x += velX;
y += velY;
repaint();
}
public void cima() {
velY = -1.5;
velX = 0;
}
public void baixo() {
velY = 1.5;
velX = 0;
}
public void esquerda() {
velX = -1.5;
velY = 0;
}
public void direita() {
velX = 1.5;
velY = 0;
}
@Override
public void keyPressed(KeyEvent e) {
int teclas = e.getKeyCode();
if (teclas == KeyEvent.VK_W) {
cima();
}
if (teclas == KeyEvent.VK_S) {
baixo();
}
if (teclas == KeyEvent.VK_D) {
direita();
}
if (teclas == KeyEvent.VK_A) {
esquerda();
}
}
@Override
public void keyReleased(KeyEvent e) {
}
@Override
public void keyTyped(KeyEvent e) {
}
}
fim classe Cobra.java
classe Comida.java
import java.awt.;
import java.util.;
import javax.swing.*;
public class Comida extends JPanel {
private int x;
private int y;
int largura = 800;
int altura = 600;
Random gerador = new Random();
public void paint(Graphics g){
gerador = new Random();
x = gerador.nextInt(700)+1;
y = gerador.nextInt(500)+1;
g.setColor(Color.GREEN);
g.fillRect(x, y, 20, 20);
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
}
espero que alguem possa me ajudar =)