Pesticide Action Network

terça-feira, 9 de novembro de 2010

Encanamento

import java.applet.*;
import java.awt.*;
import java.lang.Math;
import java.util.Random;

public class Encanamento1 extends Applet implements Runnable {
//Coordenadas do mouseDown
int xPos = 0;
int yPos = 0;

//Coordenadas dos quadrados início e fim
//valores 0,100,200,300,400 e 500
int xPosIni = 0;
int yPosIni = 0;
int xPosFim = 0;
int yPosFim = 0;

//Contagem do tempo
Thread tempo = null;
int conta = 0;

//Imagens
Image BackPage;
Graphics OffScreen;

Image img;
Image imgTempo;
Image imgIni;
Image imgFim;
Image imgCerca;
Image imgGanhou;

//Primeiro sao definidas as posicoes do inici/fim e
//obstáculos
boolean bolIniFim = false;
//Depois podem ser desenhadas as imagens que completarão
//o caminho entre o início e o fim
//------------------------------------------------------
boolean bolImagem = false;

//Definição da posicao dos obstáculos
//-----------------------------------
Random rand = new Random();
int intNum = 9;
int xPosObst1 = 0;
int yPosObst1 = 0;
int xPosObst2 = 0;
int yPosObst2 = 0;

boolean bolCerto = true;
int xUlt = 0;
int yUlt = 0;
int intDifX = 0;
int intDifY = 0;
int xFim = 0;
int yFim = 0;

int[][] vetImg = new int[16][2];
int indVet;

public void init() {
LimpaVet();

BackPage = createImage(900, 700);
OffScreen = BackPage.getGraphics();

img = getImage(getCodeBase(), "Casa.gif");
imgTempo = getImage(getCodeBase(), "Minuto.gif");
imgIni = getImage(getCodeBase(), "Inicio.gif");
imgFim = getImage(getCodeBase(), "Fim.gif");
imgCerca = getImage(getCodeBase(), "Cerca.gif");
imgGanhou = getImage(getCodeBase(), "Ganhou.gif");

DesenhaFundo();
}

//Contagem do tempo
//-----------------
public void run() {
while (tempo != null) {
try {
Thread.sleep (250);
} catch (InterruptedException e) {};
if (conta == 0){
bolIniFim = false;
conta = 600;
LimpaVet();
DesenhaFundo();
} else {
conta -= 25;
for (int i = 575; i >= conta; i-=25){
OffScreen.drawImage(imgTempo, 700, i, this);
}
repaint();
}
}
}

public boolean mouseDown(Event evt, int x, int y) {
Graphics g = getGraphics();
//Calcular o x, y dentro do GRID imposto
//0,100,200,300,400,500
//--------------------------------------------
for (int coord = 0; coord <= 500; coord+=100){ if (x > coord){
xPos = coord;
}
if (y > coord){
yPos = coord;
}
}

//Se coordenadas dentro da área 0,0 a 400,400
//-------------------------------------------
if (((xPos >= 100) && (xPos <= 400)) && ((yPos >= 100) && (yPos <= 400))){ bolImagem = true; } else { bolImagem = false; } //Se ainda não começou o jogo //Hora de desenhar as imagens //--------------------------- if (!bolImagem){ //Se coordenadas dentro da borda e fora dos cantos //posição do Início e Fim //------------------------------------------------ if ((xPos == 0) || (xPos == 500)){ if ((yPos >= 100) && (yPos <= 400)){ bolIniFim = true; } else { bolIniFim = false; } } if ((yPos == 0) || (yPos == 500)){ if ((xPos >= 100) && (xPos <= 400)){ bolIniFim = true; } else { bolIniFim = false; } } } //Se for hora de desenhar o caminho entre o Início e o Fim //-------------------------------------------------------- if (bolImagem){ if (!(((xPos == xPosObst1) && (yPos == yPosObst1)) || ((xPos == xPosObst2) && (yPos == yPosObst2)))){ //Acompanha as imagens para conferir se o caminho certo esta //sendo seguido if (xUlt > xPos){
intDifX = xUlt - xPos;
} else {
intDifX = xPos - xUlt;
}
if (yUlt > yPos){
intDifY = yUlt - yPos;
} else {
intDifY = yPos - yUlt;
}


if (((intDifX == 0) && (intDifY == 100)) ||
((intDifX == 100) && (intDifY == 0))){
bolCerto = true;
indVet++;
vetImg[indVet][0] = xPos;
vetImg[indVet][1] = yPos;
} else {
bolCerto = false;
}

//System.out.println("indVet: "+indVet);

if (bolCerto){
if ((xPos == xFim) && (yPos == yFim)){
tempo = null;
conta = 0;
LimpaVet();
bolIniFim = false;
DesenhaFundo();
OffScreen.drawImage(imgGanhou, 100, 100, this);
} else {
//System.out.println("Imagem");
xUlt = xPos;
yUlt = yPos;
for (int i = 0; i <= indVet; i++){
//Mostra a imagem
OffScreen.drawImage(img, vetImg[i][0] + 10, vetImg[i][1] + 10, this);
}
if (tempo == null) {
tempo = new Thread(this);
tempo.start();
}
}
repaint();
} else {
if (tempo == null) {
tempo = new Thread(this);
tempo.start();
}
}
}

//Hora de definir as posições do Início do Fim e
//dos obstáculos
//----------------------------------------------
} else {
//Mostra o inicio e o fim
xPosIni = xPos;
yPosIni = yPos;
intNum = Math.abs (rand.nextInt()) % 4 + 1;
if ((xPos == 0) || (xPos == 500)){
if (xPos == 0){
xPos = 500;
} else {
xPos = 0;
}
yPos = intNum * 100;
} else {
if ((yPos == 0) || (yPos == 500)){
if (yPos == 0){
yPos = 500;
} else {
yPos = 0;
}
xPos = intNum * 100;
}
}
xPosFim = xPos;
yPosFim = yPos;

xPosObst1 = 0;
yPosObst1 = 0;
xPosObst2 = 0;
yPosObst2 = 0;

while ((xPosObst1 == xPosObst2) && (yPosObst1 == yPosObst2)){

//Mostra os obstáculos
//X
if (xPosIni == 0){
intNum = Math.abs (rand.nextInt()) % 3 + 2;
xPosObst1 = intNum * 100;
} else {
intNum = Math.abs (rand.nextInt()) % 3 + 1;
xPosObst1 = intNum * 100;
}

if (xPosFim == 0){
intNum = Math.abs (rand.nextInt()) % 3 + 2;
xPosObst1 = intNum * 100;
} else {
intNum = Math.abs (rand.nextInt()) % 3 + 1;
xPosObst1 = intNum * 100;
}

if (xPosIni == 0){
intNum = Math.abs (rand.nextInt()) % 3 + 2;
xPosObst2 = intNum * 100;
} else {
intNum = Math.abs (rand.nextInt()) % 3 + 1;
xPosObst2 = intNum * 100;
}

if (xPosFim == 0){
intNum = Math.abs (rand.nextInt()) % 3 + 2;
xPosObst2 = intNum * 100;
} else {
intNum = Math.abs (rand.nextInt()) % 3 + 1;
xPosObst2 = intNum * 100;
}

//Y
if (yPosIni == 0){
intNum = Math.abs (rand.nextInt()) % 3 + 2;
yPosObst1 = intNum * 100;
} else {
intNum = Math.abs (rand.nextInt()) % 3 + 1;
yPosObst1 = intNum * 100;
}

if (yPosFim == 0){
intNum = Math.abs (rand.nextInt()) % 3 + 2;
yPosObst1 = intNum * 100;
} else {
intNum = Math.abs (rand.nextInt()) % 3 + 1;
yPosObst1 = intNum * 100;
}

if (yPosIni == 0){
intNum = Math.abs (rand.nextInt()) % 3 + 2;
yPosObst2 = intNum * 100;
} else {
intNum = Math.abs (rand.nextInt()) % 3 + 1;
yPosObst2 = intNum * 100;
}

if (yPosFim == 0){
intNum = Math.abs (rand.nextInt()) % 3 + 2;
yPosObst2 = intNum * 100;
} else {
intNum = Math.abs (rand.nextInt()) % 3 + 1;
yPosObst2 = intNum * 100;
}
}

//Guarda as coord do Início como a última imagem desenhada
//--------------------------------------------------------
xUlt = xPosIni;
yUlt = yPosIni;

XfimYfim();

conta = 600;

/*
System.out.println("xPosIni: "+xPosIni);
System.out.println("yPosIni: "+yPosIni);
System.out.println("-------------------");
System.out.println("xPosFim: "+xPosFim);
System.out.println("yPosFim: "+yPosFim);
System.out.println("-------------------");
*/

DesenhaFundo();

OffScreen.drawImage(imgIni, xPosIni, yPosIni, this);
OffScreen.drawImage(imgFim, xPosFim, yPosFim, this);
OffScreen.drawImage(imgCerca, xPosObst1, yPosObst1, this);
OffScreen.drawImage(imgCerca, xPosObst2, yPosObst2, this);

repaint();
}
return(true);
}

public void update(Graphics g)
{
paint(g);
return;
}

public void paint (Graphics g) {
g.drawImage(BackPage, 0, 0, this);
return;
}

public void DesenhaFundo(){
OffScreen.setColor(new java.awt.Color(210,210,210));
OffScreen.fillRect(0,0,900,900);
OffScreen.setColor(new java.awt.Color(130,130,230));
OffScreen.fillRect(100,0,400,600);
OffScreen.fillRect(0,100,600,400);
OffScreen.setColor(new java.awt.Color(200,200,250));
OffScreen.fillRect(100,100,400,400);

//Mostra o grid
OffScreen.setColor(Color.black);
for (int i = 0; i <= 600; i+=100){
OffScreen.drawLine(0,i,600,i);
OffScreen.drawLine(i,0,i,600);
}
}

public void LimpaVet(){
for (int i = 0; i <= 15; i++){
vetImg[i][0] = 0;
vetImg[i][1] = 0;
}
indVet = -1;
}

//Define as coord do Fim
//----------------------
public void XfimYfim(){
if (xPosFim == 0){
xFim = 100;
} else if (xPosFim == 500){
xFim = 400;
} else {
xFim = xPosFim;
}

if (yPosFim == 0){
yFim = 100;
} else if (yPosFim == 500){
yFim = 400;
} else {
yFim = yPosFim;
}
}
}

Nenhum comentário:

Postar um comentário