Gente, quando eu uso o objeto graphics pra desenhar retangulos pretos e depois mando ele desenhar retangulos vermelhos, o primeiro retangulo preto fica vermelho…
Por favor,preciso de uma ajudinha aqui rsrsrs;
Agradeço Pessoal , to quase la !!
[code]package View;
import ControllerGameUpdate.GameUpdate;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferStrategy;
import javax.swing.JButton;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
public class MainView extends javax.swing.JFrame {
private static final long serialVersionUID = 1L;
private GameUpdate gameUpdate;
private int snakePosX;
private int snakePosY;
private int wallStartPosX;
private int wallStartPosY;
public MainView() {
initComponents();
createBufferStrategy(2);
this.setBackground(Color.yellow);
snakePosX = getInsets().right;
snakePosY = getInsets().top;
gameUpdate = new GameUpdate(this);
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jButton_Animate = new javax.swing.JButton();
jMenuBar1 = new javax.swing.JMenuBar();
jMenu1 = new javax.swing.JMenu();
jMenu2 = new javax.swing.JMenu();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jButton_Animate.setText("Animation");
jButton_Animate.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton_AnimateActionPerformed(evt);
}
});
jMenu1.setText("File");
jMenuBar1.add(jMenu1);
jMenu2.setText("Edit");
jMenuBar1.add(jMenu2);
setJMenuBar(jMenuBar1);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGap(0, 742, Short.MAX_VALUE)
.addComponent(jButton_Animate))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jButton_Animate, javax.swing.GroupLayout.PREFERRED_SIZE, 47, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 490, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
private void jButton_AnimateActionPerformed(java.awt.event.ActionEvent evt) {
BufferStrategy bf = getBufferStrategy();
Graphics2D g = null;
try {
g = (Graphics2D) bf.getDrawGraphics();
drawning(g);
} finally {
g.dispose();
}
if (!bf.contentsLost()) {
bf.show();
}
}
public static void main(String args[]) {
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(MainView.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new MainView().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton jButton_Animate;
private javax.swing.JMenu jMenu1;
private javax.swing.JMenu jMenu2;
private javax.swing.JMenuBar jMenuBar1;
// End of variables declaration
private void drawning(Graphics2D g) {
gameUpdate.Drawning(g);
}
public GameUpdate getGameUpdate() {
return gameUpdate;
}
public void setGameUpdate(GameUpdate gameUpdate) {
this.gameUpdate = gameUpdate;
}
public int getSnakePosX() {
return snakePosX;
}
public void setSnakePosX(int snakePosX) {
this.snakePosX = snakePosX;
}
public int getSnakePosY() {
return snakePosY;
}
public void setSnakePosY(int snakePosY) {
this.snakePosY = snakePosY;
}
public int getWallStartPosX() {
return wallStartPosX;
}
public void setWallStartPosX(int wallStartPosX) {
this.wallStartPosX = wallStartPosX;
}
public int getWallStartPosY() {
return wallStartPosY;
}
public void setWallStartPosY(int wallStartPosY) {
this.wallStartPosY = wallStartPosY;
}
public JButton getjButton_Animate() {
return jButton_Animate;
}
public void setjButton_Animate(JButton jButton_Animate) {
this.jButton_Animate = jButton_Animate;
}
public JMenu getjMenu1() {
return jMenu1;
}
public void setjMenu1(JMenu jMenu1) {
this.jMenu1 = jMenu1;
}
public JMenu getjMenu2() {
return jMenu2;
}
public void setjMenu2(JMenu jMenu2) {
this.jMenu2 = jMenu2;
}
public JMenuBar getjMenuBar1() {
return jMenuBar1;
}
public void setjMenuBar1(JMenuBar jMenuBar1) {
this.jMenuBar1 = jMenuBar1;
}
}
[/code]
A classe GameUpdate
[code]/*
- To change this template, choose Tools | Templates
- and open the template in the editor.
*/
package ControllerGameUpdate;
import Objects.Snake;
import Objects.Wall;
import View.MainView;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.Shape;
import java.util.ArrayList;
/**
*
-
@author André
*/
public class GameUpdate {public ArrayList mySnake = new ArrayList<>();
public ArrayList myWall = new ArrayList<>();
public MainView mainView;public GameUpdate(MainView mv) {
mainView = mv;}
public void Drawning(Graphics2D g) {
DrawnWalls(g);
Snake snakePiece = new Snake(mainView.getSnakePosX(), mainView.getSnakePosY());
mainView.setSnakePosX(mainView.getSnakePosX() + 10);
mainView.setSnakePosY(mainView.getSnakePosY() + 10);
mySnake.add(snakePiece);g.draw(snakePiece.getSnakePiece()); checkCollision(g, snakePiece.getSnakePiece());}
public void DrawnWalls(Graphics2D g) {
while (myWall.size() < 40) {
mainView.setWallStartPosX(200);
Wall w = new Wall(mainView.getWallStartPosX(), mainView.getWallStartPosY());
myWall.add(w);
//mainView.setWallStartPosX(mainView.getWallStartPosX() + 10);
mainView.setWallStartPosY(mainView.getWallStartPosY() + 10);Rectangle wallPiece = w.getWallPiece(); g.setColor(Color.RED); g.fill(wallPiece); g.draw(wallPiece); }}
public void checkCollision(Graphics2D g, Rectangle snakePiece) {
for (int k = 0; k < myWall.size(); k++) { Rectangle wallPiece = myWall.get(k).getWallPiece(); if ((mathCollisionDetection(snakePiece, wallPiece) == true)) { System.out.println("Snake Piece Location : " + snakePiece.getLocation()); System.out.println("Wall Piece Location : " + wallPiece.getLocation()); System.out.println("COLLISION DETECTED ! "); g.drawString("Collision Detected", 100, 200); Double snakePieceGetX = snakePiece.getX(); Integer xPos = snakePieceGetX.intValue(); Double snakePieceGetY = snakePiece.getY(); Integer yPos = snakePieceGetY.intValue(); g.drawString("[X]",xPos,yPos); Rectangle warningRectangle = new Rectangle(xPos,yPos,10,10); g.setColor(Color.MAGENTA); g.fill(warningRectangle); g.draw(warningRectangle); System.out.println("[X] // xPos == " + xPos); System.out.println("[X] // yPos == " + yPos); } }}
public boolean mathCollisionDetection(Rectangle SnakePiece, Rectangle wallPiece) {
boolean hasCollided = false;
//
if (SnakePiece.intersects(wallPiece)) {
return true;
}// return hasCollided;}
}
[/code]
