Gente estou postando o codigo do meu joguinho. mas ele está incompleto e tenho uma duvida que quero tentar resolver com vocês.
1 arquivo
import java.awt.*;
import javax.swing.*;
public class IATetrix{
public IATetrix(){
}
public static void main(String Args[]){
JFrame frame = new JFrame("testando");
FrameTetrix FT = new FrameTetrix();
frame.add(FT);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 500);
frame.setVisible(true);
frame.setResizable(false);
frame.setBackground(Color.WHITE);
}
}
2 arquivo
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.lang.*;
import java.text.*;
import javax.swing.*;
public class FrameTetrix extends JPanel implements Runnable{
//padrão dos quadrados
private int TamanhoX=20, TamanhoY=20;
//padroes de movimentação
private int PadraoX=20, PadraoY=100;
//pontuação
private String Pontuacao="0";
//colisão do fundo
private final int fundo = 300;
//declaração da variavel G para uso total.
//private Graphics g;
//construtor
public FrameTetrix(){
this.setLayout(null);
//Coloca um marcador nesta classe e inicia ele.
//Thread M = new Thread();
//M.start();
new Thread(this).start();
//Adiciona Evento de teclas
addKeyListener(
new KeyListener(){
public void keyPressed(KeyEvent e){
switch(e.getKeyCode()){
case KeyEvent.VK_RIGHT:{
PadraoX+= 20;
break;
}
case KeyEvent.VK_LEFT:{
PadraoX-= 20;
break;
}
case KeyEvent.VK_DOWN:{
PadraoY-= 20;
break;
}
case KeyEvent.VK_UP:{
PadraoY+= 20;
break;
}
case KeyEvent.VK_ESCAPE:{
System.exit(0);
break;
}
}
repaint();
}
public void keyReleased(KeyEvent e){
}
public void keyTyped(KeyEvent e){
switch(e.getKeyCode()){
case KeyEvent.VK_RIGHT:{
PadraoX+= 20;
break;
}
case KeyEvent.VK_LEFT:{
PadraoX-= 20;
break;
}
case KeyEvent.VK_DOWN:{
PadraoY-= 20;
break;
}
case KeyEvent.VK_UP:{
PadraoY+= 20;
break;
}
case KeyEvent.VK_ESCAPE:{
System.exit(0);
break;
}
}
repaint();
}
}
);//fim da adição do evento.
}//fim do construtor
//Construtor que pinta
public void paintComponent(Graphics g){
super.paintComponent(g);
g.setColor(Color.BLACK);
g.drawLine(0, 100, 400, 100);
g.drawLine(20, 100, 20, 500);
g.drawLine(370, 100, 370, 500);
g.drawLine(20, 300, 370, 300);
g.drawString("Pontos:", 20, 50);
g.drawString(Pontuacao, 150, 50);
g.drawString("X:" + PadraoX, 300, 50);
g.drawString("Y:" + PadraoY, 300, 60);
g.setColor(Color.RED);
//Quadrado que cai.
g.fillRect(PadraoX, PadraoY, TamanhoX, TamanhoY);
}
//metodo do Thread
public void run(){
//Verificador da colisão do objeto
boolean fim = false;
//loop que os quadrinhos cair.
do{
//g.fillRect(PadraoX, PadraoY, TamanhoX, TamanhoY);
if((PadraoY + TamanhoY) == fundo){
fim = true;
PadraoX = 20;
PadraoY = 100;
}else if((PadraoY + TamanhoY) != fundo){
try{
Thread.sleep(1000);
}catch(InterruptedException ex) {
ex.printStackTrace();
}
PadraoY += 20;
repaint();
}
}while(fim != true);
}
}//fim da classe
-
A linha “repaint()” dentro do “run()” está fazendo a tela cubrir uma imagem por cima da ooutra em vez de repintar tudo novamente. Porque está dando este erro!?
Rodem o código. ele não contem erros. se rodarem visualizarão melhor o problema que este “repaint()” está dando.
Peço para que rode o codigo antes de postar coisas sem nexo. -
O evento do mouse deveria mover o quadrado vermelho que aparece na tela… porque não está dando certo o evento?
Obs.: ja tentei colocar um “this.addK…” mas tambem não funciona.
Meus unicos problemas fixos são estes. O grafico do jogo é um lixo porque é um teste. Se a gente conseguir resolver os 2 problemas… está feito!!! daí eu estarei deixando o jogo bunitinho com um grafico melhor e funcionando de forma correta.
warcraft03