Estou fazendo um trabalho de faculdade e estou trancado em uma quesito do trabalho que é adicionar obstáculos moveis e fixos na tela do jogo e que interagem com o usuário!
Gostaria de saber se alguém tem alguma sugestão para fazer aparecer
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.event.KeyListener;
import java.awt.event.KeyEvent;
import java.awt.Dimension;
import java.util.Random;
public class GameWindow extends JPanel {
public static void main(String args[]) {
GameWindow g = new GameWindow();
Random gerador = new Random();
int tempo = 0;
int dx = 200;
int dy = 200;
int ox,oy,ry,rx,py,px,ex,ey;
int oxx= 280,oxy = 280;
boolean tesouro = false;
boolean tesouro2 = false;
boolean tesouro3 = false;
boolean tesouro4 = false;
// gera as coord do ouro
ox = gerador.nextInt(0 + 200);
oy = ox;
// gera as coord do rubi
rx = gerador.nextInt(0 + 200);
ry = rx;
// gera as coord da perola
px = gerador.nextInt(0 + 200);
py = px;
// gera as coord da esmeralda
ex = gerador.nextInt(0 + 200);
ey = ex;
//posiciona o elementos na tela
g.setOuro(ox, oy);
g.setRubi(rx, ry);
g.setPerola(px, py);
g.setEsmeralda(ex,ey);
g.setOxi(280,280);
//ate final dos tempos
while (tempo < 300) {
g.desenha();
if (g.apertouEsquerda()) {
dx -= 4;
} else if (g.apertouDireita()) {
dx += 4;
} else if (g.apertouCima()) {
dy -= 4;
} else if (g.apertouBaixo()) {
dy += 4;
}
tempo++;
// posiciona o mergulhador no pixel dx e dy da tela
g.setDiver(dx, dy);
System.out.println(tempo);
// Compara se os tesouros foram pegos
if (dx >= ox && dy <= oy && dx <= ox+17 && dy >= oy-20){
tesouro = true;
g.setOuro(400, 400);
}
if (dx >= rx && dy <= ry && dx <= rx+17 && dy >= ry-20){
tesouro2 = true;
g.setRubi(400, 400);
}
if (dx >= px && dy <= py && dx <= px+17 && dy >= py-20){
tesouro3 = true;
g.setPerola(400, 400);
}
if (dx >= ex && dy <= ey && dx <= ex+20 && dy >= ey-20){
tesouro4 = true;
g.setEsmeralda(400,400);
}
//CONTROLA O OXIGENIO
if (dx >= oxx && dy <= oxy && dx <= oxx+17 && dy >= oxy-20){
tempo = 0;
g.setOxi(400,400);
}
//Se tudo for pego mostra WIN
if ((tesouro == true)&&(tesouro2 == true)&&(tesouro3 == true)&&(tesouro4 == true)){
g.ganhou();
g.desenha();
tempo = 300;
}
//Controla o tempo de jogo
if (tempo == 299) {
g.gameOver();
g.desenha();
tempo++;
}
}
// Atributo importante que determina o tamanho de cada pixel.
}
private final int pt = 2;
private int[][] game = {
{1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1},
{1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0},
{1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0},
{1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0},
{1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1}
};
int[][] over = {
{1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1},
{1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1},
{1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0},
{1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1},
{1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1}
};
int[][] ouro = {
{1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1},
{1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1},
{1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1},
{1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1},
{1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1}
};
int[][] rubi ={
{ 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1},
{ 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1},
{ 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1},
{ 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1},
{ 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1},
{ 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1},
{ 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1}
};
int[][] perola={
{ 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1},
{ 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1},
{ 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1},
{ 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1},
{ 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1},
{ 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1},
{ 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1}
};
int[][] esmeralda={
{ 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1},
{ 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1},
{ 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1},
{ 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1},
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1},
{ 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1},
{ 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1}
};
int[][] diver = {
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0}
};
int[][] win = {
{1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1},
{1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1},
{1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1},
{1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1},
{1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1},
{0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1},
{0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1}
};
int[][] oxigenio = {
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
};
//x e y do mergulhador
private int x;
private int y;
//x e y do ouro
private int ox;
private int oy;
//x e y do rubi
private int rx;
private int ry;
//x e y da perola
private int px;
private int py;
//x e y da esmeralda
private int ex;
private int ey;
// x e y do oxigenio
private int oxx;
private int oxy;
private final int boardWidth;
private final int boardHeight;
//boleana para indicar se a tecla SETA esquerda foi pressionada
private boolean esquerda = false;
//boleana para indicar se a tecla SETA direita foi pressionada
private boolean direita = false;
//boleana para indicar se a tecla SETA cima foi pressionada
private boolean cima = false;
//boleana para indicar se a tecla SETA baixo foi pressionada
private boolean baixo = false;
//se true deve mostrar a mensagem game over na tela
private boolean gameOver = false;
//se true deve mostrar a mensgaem you win na tela
private boolean ganhou = false;
// variável que carrega o
private JFrame frame = new JFrame("CaveDiving");
/*
Deve indicar a largura últil em pixels da janela.
@return um inteiro que é a quantidade de casas (horizontais) da janela.
*/
public int getBoardWidth() {
return boardWidth;
}
/**
* Deve indicar a altura últil em pixels da janela.
*
* @return um inteiro que é a quantidade de casas verticais (linhas) da
* janela.
*/
public int getBoardHeight() {
return boardHeight;
}
/**
* Desenha na tela o jogo e fica para por 80ms.
*/
public void desenha() {
frame.repaint();
try {
Thread.sleep(80);
} catch (final java.lang.InterruptedException e) {
}
}
/**
* Desenha uma matriz qualquer passada como parâmetro.
*
* @param x coluna na qual o objeto deve ser desenhado.
* @param y linha na qual o objeto deve ser desenhado.
* @param m matriz com um mapa de pixels a serem desenhados.
* @param g objeto gráfico usado para desenhar na tela.
*/
private void drawMatrix(final int m[][], final int x, final int y, final Graphics g) {
for (int i = 0; i < m[0].length; i++) {
for (int j = 0; j < m.length; j++) {
if (m[j]<i> == 1) {
g.drawOval((x + i) * pt, (y + j) * pt, pt, pt);
g.fillOval((x + i) * pt, (y + j) * pt, pt, pt);
}
}
}
}
/**
* Posiciona o mergulhador em uma posiçõa x e y da tela.
*
* Exemplo:
* <pre>
* {@code
* GameWindow g = new GameWindow();
* //coloca o mergulhador na posição 100, 100 da tela
* g.setDiver(100,100)
* //atualiza a tela e mostra o mergulhador na nova posição
* g.desenha();
* }
* </pre>
*
* @param x coluna posição horizontal do mergulhador.
* @param y linha posição vertical do mergulhador.
*/
public void setDiver(int x, int y) {
this.x = x;
this.y = y;
}
/**
* Posiciona o ouro na posiçõa x e y da tela.
*
* Exemplo:
* <pre>
* {@code
* GameWindow g = new GameWindow();
* //coloca o mergulhador na posição 40, 40 da tela
* g.setOuro(40,40)
* //atualiza a tela e mostra o mergulhador na nova posição
* g.desenha();
* }
* </pre>
*
* @param x coluna posição horizontal do ouro.
* @param y linha posição vertical do ouro.
*/
public void setOuro(int x, int y) {
this.ox = x;
this.oy = y;
}
public void setRubi(int x, int y) {
this.rx = x;
this.ry = y;
}
public void setPerola(int x, int y) {
this.px = x;
this.py = y;
}
public void setEsmeralda(int x, int y) {
this.ex = x;
this.ey = y;
}
public void setOxi(int x, int y) {
this.oxx = x;
this.oxy = y;
}
/**
* Desenha este componente, método chamado pelo próprio java.
*
*/
public void paintComponent(final Graphics g) {
final int width = getWidth();
final int height = getHeight();
g.setColor(Color.black);
g.setColor(Color.black);
if (gameOver) {
drawMatrix(game, 120, 120, g);
drawMatrix(over, 140, 140, g);
}
if (ganhou) {
drawMatrix(win, 150, 150, g);
}
//IMPRIME NA TELA OS ELEMENTOS E SUAS CORES
drawMatrix(diver, x, y, g);
g.setColor(Color.yellow);
drawMatrix(ouro, ox, oy, g);
g.setColor(Color.red);
drawMatrix(rubi, rx, ry, g);
g.setColor(Color.orange);
drawMatrix(perola, px, py, g);
g.setColor(Color.GREEN);
drawMatrix(esmeralda, ex, ey, g);
g.setColor(Color.cyan);
drawMatrix(oxigenio, oxx, oxy, g);
g.setColor(Color.lightGray);
for (int i = 0; i < height; i++) {
g.drawLine(0, i * pt, boardWidth * pt, i * pt);
}
for (int i = 0; i < width; i++) {
g.drawLine(i * pt, 0, i * pt, boardHeight * pt);
}
}
/**
* Mostra a mensagem game over na tela.
*
* Exemplo:
* <pre>
* {@code
* GameWindow g = new GameWindow();
* //ativa a mensagem "GAME OVER"
* g.gameOver();
* //deve chamar desenha para atualizar a tela e mostrar "GAME OVER"
* g.desenha();
* }
* </pre>
*/
public void gameOver() {
gameOver = true;
}
/**
* Desenha uma mensagem de WIN da proxima vez que chamar desenha().
*
* Exemplo:
* <pre>
* {@code
* GameWindow g = new GameWindow();
* //ativa a mensagem "WIN"
* g.ganhou();
* //deve chamar desenha para atualizar a tela e mostrar "WIN"
* g.desenha();
* }
* </pre>
*/
public void ganhou() {
ganhou = true;
}
/**
* Retorna verdadeiro se a seta para a esquerda estiver sendo pressionada
* pelo usuário.
*
* Exemplo:
* <pre>
* {@code
* GameWindow g = new GameWindow();
* while(true){
* if(g.apertouEsquerda()){
* System.out.println("Apertou a SETA ESQUERDA!!!");
* }
* }
* }
* </pre>
*
* @return verdadeiro (true) caso a seta para a esquerda estiver sendo
* precionada, falso (false) caso contrário.
*/
public boolean apertouEsquerda() {
return esquerda;
}
/**
* Retorna verdadeiro se a seta para a direita estiver sendo pressionada
* pelo usuário.
*
* Exemplo:
* <pre>
* {@code
* GameWindow g = new GameWindow();
* while(true){
* if(g.apertouDireita()){
* System.out.println("Apertou a SETA DIREITA!!!");
* }
* }
* }
* </pre>
*
* @return verdadeiro (true) caso a seta para a direita estiver sendo
* precionada, falso (false) caso contr?rio.
*/
public boolean apertouDireita() {
return direita;
}
/**
* Retorna verdadeiro se a seta para a cima estiver sendo pressionada pelo
* usuário.
*
* Exemplo:
* <pre>
* {@code
* GameWindow g = new GameWindow();
* while(true){
* if(g.apertouCima()){
* System.out.println("Apertou a SETA CIMA!!!");
* }
* }
* }
* </pre>
*
* @return verdadeiro (true) caso a seta para a cima estiver sendo
* precionada, falso (false) caso contr?rio.
*/
public boolean apertouCima() {
return cima;
}
/**
* Retorna verdadeiro se a seta para a baixo estiver sendo pressionada pelo
* usuário.
*
* Exemplo:
* <pre>
* {@code
* GameWindow g = new GameWindow();
* while(true){
* if(g.apertouBaixo()){
* System.out.println("Apertou a SETA BAIXO!!!");
* }
* }
* }
* </pre>
*
* @return verdadeiro (true) caso a seta para a baixo estiver sendo
* precionada, falso (false) caso contr?rio.
*/
public boolean apertouBaixo() {
return baixo;
}
/**
* Construtor, inicia a janela do jogo. Este método é chamado quando criamos
* o objeto com new.
*
* Exemplo:
* <pre>
* {@code
* //para criar a janela use
* GameWindow g = new GameWindow();
* }
* </pre>
*
*/
public GameWindow() {
boardWidth = 300;
boardHeight = 300;
setPreferredSize(new Dimension(boardWidth * pt, boardHeight * pt));
frame = new JFrame("CaveDive - By: Igor & Gustavo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(this);
frame.pack();
frame.setResizable(false);
frame.setVisible(true);
frame.setBackground(Color.WHITE);
frame.addKeyListener(new KeyListener() {
public void keyPressed(final KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
direita = true;
} else if (e.getKeyCode() == KeyEvent.VK_LEFT) {
esquerda = true;
} else if (e.getKeyCode() == KeyEvent.VK_UP) {
cima = true;
} else if (e.getKeyCode() == KeyEvent.VK_DOWN) {
baixo = true;
}
}
public void keyReleased(final KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
direita = false;
} else if (e.getKeyCode() == KeyEvent.VK_LEFT) {
esquerda = false;
} else if (e.getKeyCode() == KeyEvent.VK_UP) {
cima = false;
} else if (e.getKeyCode() == KeyEvent.VK_DOWN) {
baixo = false;
}
}
public void keyTyped(final KeyEvent e) {
}
});
}
void gameBau() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
}
```
Pergunta
Faawkes
import java.awt.Color; import java.awt.Graphics; import javax.swing.JPanel; import javax.swing.JFrame; import java.awt.event.KeyListener; import java.awt.event.KeyEvent; import java.awt.Dimension; import java.util.Random; public class GameWindow extends JPanel { public static void main(String args[]) { GameWindow g = new GameWindow(); Random gerador = new Random(); int tempo = 0; int dx = 200; int dy = 200; int ox,oy,ry,rx,py,px,ex,ey; int oxx= 280,oxy = 280; boolean tesouro = false; boolean tesouro2 = false; boolean tesouro3 = false; boolean tesouro4 = false; // gera as coord do ouro ox = gerador.nextInt(0 + 200); oy = ox; // gera as coord do rubi rx = gerador.nextInt(0 + 200); ry = rx; // gera as coord da perola px = gerador.nextInt(0 + 200); py = px; // gera as coord da esmeralda ex = gerador.nextInt(0 + 200); ey = ex; //posiciona o elementos na tela g.setOuro(ox, oy); g.setRubi(rx, ry); g.setPerola(px, py); g.setEsmeralda(ex,ey); g.setOxi(280,280); //ate final dos tempos while (tempo < 300) { g.desenha(); if (g.apertouEsquerda()) { dx -= 4; } else if (g.apertouDireita()) { dx += 4; } else if (g.apertouCima()) { dy -= 4; } else if (g.apertouBaixo()) { dy += 4; } tempo++; // posiciona o mergulhador no pixel dx e dy da tela g.setDiver(dx, dy); System.out.println(tempo); // Compara se os tesouros foram pegos if (dx >= ox && dy <= oy && dx <= ox+17 && dy >= oy-20){ tesouro = true; g.setOuro(400, 400); } if (dx >= rx && dy <= ry && dx <= rx+17 && dy >= ry-20){ tesouro2 = true; g.setRubi(400, 400); } if (dx >= px && dy <= py && dx <= px+17 && dy >= py-20){ tesouro3 = true; g.setPerola(400, 400); } if (dx >= ex && dy <= ey && dx <= ex+20 && dy >= ey-20){ tesouro4 = true; g.setEsmeralda(400,400); } //CONTROLA O OXIGENIO if (dx >= oxx && dy <= oxy && dx <= oxx+17 && dy >= oxy-20){ tempo = 0; g.setOxi(400,400); } //Se tudo for pego mostra WIN if ((tesouro == true)&&(tesouro2 == true)&&(tesouro3 == true)&&(tesouro4 == true)){ g.ganhou(); g.desenha(); tempo = 300; } //Controla o tempo de jogo if (tempo == 299) { g.gameOver(); g.desenha(); tempo++; } } // Atributo importante que determina o tamanho de cada pixel. } private final int pt = 2; private int[][] game = { {1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1}, {1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0}, {1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0}, {1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0}, {1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1} }; int[][] over = { {1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1}, {1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1}, {1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0}, {1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1}, {1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1} }; int[][] ouro = { {1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1}, {1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1}, {1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1}, {1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1}, {1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1} }; int[][] rubi ={ { 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1}, { 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1}, { 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1}, { 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1}, { 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1}, { 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1}, { 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1} }; int[][] perola={ { 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1}, { 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1}, { 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1}, { 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1}, { 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1}, { 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1}, { 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1} }; int[][] esmeralda={ { 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1}, { 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1}, { 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1}, { 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1}, { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1}, { 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1}, { 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1} }; int[][] diver = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0} }; int[][] win = { {1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1}, {1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1}, {1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1}, {1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1}, {1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1}, {0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1}, {0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1} }; int[][] oxigenio = { {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, }; //x e y do mergulhador private int x; private int y; //x e y do ouro private int ox; private int oy; //x e y do rubi private int rx; private int ry; //x e y da perola private int px; private int py; //x e y da esmeralda private int ex; private int ey; // x e y do oxigenio private int oxx; private int oxy; private final int boardWidth; private final int boardHeight; //boleana para indicar se a tecla SETA esquerda foi pressionada private boolean esquerda = false; //boleana para indicar se a tecla SETA direita foi pressionada private boolean direita = false; //boleana para indicar se a tecla SETA cima foi pressionada private boolean cima = false; //boleana para indicar se a tecla SETA baixo foi pressionada private boolean baixo = false; //se true deve mostrar a mensagem game over na tela private boolean gameOver = false; //se true deve mostrar a mensgaem you win na tela private boolean ganhou = false; // variável que carrega o private JFrame frame = new JFrame("CaveDiving"); /* Deve indicar a largura últil em pixels da janela. @return um inteiro que é a quantidade de casas (horizontais) da janela. */ public int getBoardWidth() { return boardWidth; } /** * Deve indicar a altura últil em pixels da janela. * * @return um inteiro que é a quantidade de casas verticais (linhas) da * janela. */ public int getBoardHeight() { return boardHeight; } /** * Desenha na tela o jogo e fica para por 80ms. */ public void desenha() { frame.repaint(); try { Thread.sleep(80); } catch (final java.lang.InterruptedException e) { } } /** * Desenha uma matriz qualquer passada como parâmetro. * * @param x coluna na qual o objeto deve ser desenhado. * @param y linha na qual o objeto deve ser desenhado. * @param m matriz com um mapa de pixels a serem desenhados. * @param g objeto gráfico usado para desenhar na tela. */ private void drawMatrix(final int m[][], final int x, final int y, final Graphics g) { for (int i = 0; i < m[0].length; i++) { for (int j = 0; j < m.length; j++) { if (m[j]<i> == 1) { g.drawOval((x + i) * pt, (y + j) * pt, pt, pt); g.fillOval((x + i) * pt, (y + j) * pt, pt, pt); } } } } /** * Posiciona o mergulhador em uma posiçõa x e y da tela. * * Exemplo: * <pre> * {@code * GameWindow g = new GameWindow(); * //coloca o mergulhador na posição 100, 100 da tela * g.setDiver(100,100) * //atualiza a tela e mostra o mergulhador na nova posição * g.desenha(); * } * </pre> * * @param x coluna posição horizontal do mergulhador. * @param y linha posição vertical do mergulhador. */ public void setDiver(int x, int y) { this.x = x; this.y = y; } /** * Posiciona o ouro na posiçõa x e y da tela. * * Exemplo: * <pre> * {@code * GameWindow g = new GameWindow(); * //coloca o mergulhador na posição 40, 40 da tela * g.setOuro(40,40) * //atualiza a tela e mostra o mergulhador na nova posição * g.desenha(); * } * </pre> * * @param x coluna posição horizontal do ouro. * @param y linha posição vertical do ouro. */ public void setOuro(int x, int y) { this.ox = x; this.oy = y; } public void setRubi(int x, int y) { this.rx = x; this.ry = y; } public void setPerola(int x, int y) { this.px = x; this.py = y; } public void setEsmeralda(int x, int y) { this.ex = x; this.ey = y; } public void setOxi(int x, int y) { this.oxx = x; this.oxy = y; } /** * Desenha este componente, método chamado pelo próprio java. * */ public void paintComponent(final Graphics g) { final int width = getWidth(); final int height = getHeight(); g.setColor(Color.black); g.setColor(Color.black); if (gameOver) { drawMatrix(game, 120, 120, g); drawMatrix(over, 140, 140, g); } if (ganhou) { drawMatrix(win, 150, 150, g); } //IMPRIME NA TELA OS ELEMENTOS E SUAS CORES drawMatrix(diver, x, y, g); g.setColor(Color.yellow); drawMatrix(ouro, ox, oy, g); g.setColor(Color.red); drawMatrix(rubi, rx, ry, g); g.setColor(Color.orange); drawMatrix(perola, px, py, g); g.setColor(Color.GREEN); drawMatrix(esmeralda, ex, ey, g); g.setColor(Color.cyan); drawMatrix(oxigenio, oxx, oxy, g); g.setColor(Color.lightGray); for (int i = 0; i < height; i++) { g.drawLine(0, i * pt, boardWidth * pt, i * pt); } for (int i = 0; i < width; i++) { g.drawLine(i * pt, 0, i * pt, boardHeight * pt); } } /** * Mostra a mensagem game over na tela. * * Exemplo: * <pre> * {@code * GameWindow g = new GameWindow(); * //ativa a mensagem "GAME OVER" * g.gameOver(); * //deve chamar desenha para atualizar a tela e mostrar "GAME OVER" * g.desenha(); * } * </pre> */ public void gameOver() { gameOver = true; } /** * Desenha uma mensagem de WIN da proxima vez que chamar desenha(). * * Exemplo: * <pre> * {@code * GameWindow g = new GameWindow(); * //ativa a mensagem "WIN" * g.ganhou(); * //deve chamar desenha para atualizar a tela e mostrar "WIN" * g.desenha(); * } * </pre> */ public void ganhou() { ganhou = true; } /** * Retorna verdadeiro se a seta para a esquerda estiver sendo pressionada * pelo usuário. * * Exemplo: * <pre> * {@code * GameWindow g = new GameWindow(); * while(true){ * if(g.apertouEsquerda()){ * System.out.println("Apertou a SETA ESQUERDA!!!"); * } * } * } * </pre> * * @return verdadeiro (true) caso a seta para a esquerda estiver sendo * precionada, falso (false) caso contrário. */ public boolean apertouEsquerda() { return esquerda; } /** * Retorna verdadeiro se a seta para a direita estiver sendo pressionada * pelo usuário. * * Exemplo: * <pre> * {@code * GameWindow g = new GameWindow(); * while(true){ * if(g.apertouDireita()){ * System.out.println("Apertou a SETA DIREITA!!!"); * } * } * } * </pre> * * @return verdadeiro (true) caso a seta para a direita estiver sendo * precionada, falso (false) caso contr?rio. */ public boolean apertouDireita() { return direita; } /** * Retorna verdadeiro se a seta para a cima estiver sendo pressionada pelo * usuário. * * Exemplo: * <pre> * {@code * GameWindow g = new GameWindow(); * while(true){ * if(g.apertouCima()){ * System.out.println("Apertou a SETA CIMA!!!"); * } * } * } * </pre> * * @return verdadeiro (true) caso a seta para a cima estiver sendo * precionada, falso (false) caso contr?rio. */ public boolean apertouCima() { return cima; } /** * Retorna verdadeiro se a seta para a baixo estiver sendo pressionada pelo * usuário. * * Exemplo: * <pre> * {@code * GameWindow g = new GameWindow(); * while(true){ * if(g.apertouBaixo()){ * System.out.println("Apertou a SETA BAIXO!!!"); * } * } * } * </pre> * * @return verdadeiro (true) caso a seta para a baixo estiver sendo * precionada, falso (false) caso contr?rio. */ public boolean apertouBaixo() { return baixo; } /** * Construtor, inicia a janela do jogo. Este método é chamado quando criamos * o objeto com new. * * Exemplo: * <pre> * {@code * //para criar a janela use * GameWindow g = new GameWindow(); * } * </pre> * */ public GameWindow() { boardWidth = 300; boardHeight = 300; setPreferredSize(new Dimension(boardWidth * pt, boardHeight * pt)); frame = new JFrame("CaveDive - By: Igor & Gustavo"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().add(this); frame.pack(); frame.setResizable(false); frame.setVisible(true); frame.setBackground(Color.WHITE); frame.addKeyListener(new KeyListener() { public void keyPressed(final KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_RIGHT) { direita = true; } else if (e.getKeyCode() == KeyEvent.VK_LEFT) { esquerda = true; } else if (e.getKeyCode() == KeyEvent.VK_UP) { cima = true; } else if (e.getKeyCode() == KeyEvent.VK_DOWN) { baixo = true; } } public void keyReleased(final KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_RIGHT) { direita = false; } else if (e.getKeyCode() == KeyEvent.VK_LEFT) { esquerda = false; } else if (e.getKeyCode() == KeyEvent.VK_UP) { cima = false; } else if (e.getKeyCode() == KeyEvent.VK_DOWN) { baixo = false; } } public void keyTyped(final KeyEvent e) { } }); } void gameBau() { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } } ```Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.