Jump to content
Sign in to follow this  
davidconcha

Ajuda em processing - Jogo

Recommended Posts

davidconcha

Boas malta,

sou estudante e foi me pedido para fazer um jogo em processing...  ;) bem eu tou com ideia de criar uma personagem que é controlada com o mouse e que tem de apanhar objectos randomicos, apanha 1 aparece outro, etc...

O que eu tenho ate agora é a minha personagem neste caso o "doodlez"(googla) que é controlado pelo mouse, e tambem uso uma imagem como background...

Eu precisava de ajuda na parte de obectos randomicos e validaçao, um contador de objectos apanhados.

Alguem me pode ajudar?  :)

Abraço malta  :D

Share this post


Link to post
Share on other sites
clera

boas,

para validar tens de confirmar se a personagem, (neste caso podes usar as coordenadas do rato) se encontra sobre o teu objecto, (basta usares uma série de if's para o verificar), caso esteja tens uma variável que vai acumulando o nr de objectos que já colheste.

se quiseres vários objectos ao mesmo tempo podes criar uma class.

não te consigo ajudar muito mais sem fazer o trabalho por ti  :cheesygrin:

Share this post


Link to post
Share on other sites
davidconcha

Olá, obrigado por teres respondido xb eu ja te tinha enviado uma PM  :cheesygrin:

Nao tens nenhum exemplo que sirva para o meu caso para ver como vou fazer?  :down:

O que tu disseste está certo, o probema é fazer pq de processing nao tenho muita pratica :S

Share this post


Link to post
Share on other sites
clera

por acaso não recebi nada, mas assim pode ser que mais gente se interesse pelo processing  :)

bem aqui vai um pequeno exemplo então para a validação, agora tens de adapta-lo e criar uma ou outra função para o teu jogo.

boa sorte  :cheesygrin:

int ballX, ballY, raio;
void setup()
{
size(400, 400); 
raio=(int)random(20)+20;
ballX=(int) random(raio, width-raio);
ballY=(int) random(raio, height-raio);
}
void draw()
{
  if(sqrt(sq(mouseX-ballX)+sq(mouseY-ballY))<raio)
  {
    fill(255,0,0);
  }
  else
  {
    fill(0,0,255);
  }
  ellipse(ballX, ballY, raio*2, raio*2);
}

Share this post


Link to post
Share on other sites
davidconcha

Quando chegar a casa vou testar :b posso te mandar uma PM se tiver alguma duvida? é q isto esta mesmo a decidir a minha carreira de estudante  👎

Obrigado  :cheesygrin:

Share this post


Link to post
Share on other sites
davidconcha

Boas :)

ja criei uma class para os objectos q quero q sejam randomicos, e ja os consigo chamar no sketch principal, agora o que me falta é a intersecçao entre o meu Boneco e os objectos, . Apanhar um objecto e ele desaparecer.

A questao da validaçao ja estive a ver e nao eh o mais dificil :b acho q ja me interei. Agora era so isso mesmo, apanhar o objecto, ele desaparecer, e fazer o random da class em posiçoes randomicas. Das me uma ideia Clera?

o que tenho ate agora é isto:

//O boneco principal

Dude dude;
void setup () {
size(800,500);
smooth();
dude= new Dude(100,150,80,80,20,color(175,202,255));

}


void draw() {

PImage dudebackground = loadImage("background.png");
background(dudebackground);
dude.visualiza();

stroke(0);
rectMode(CENTER);
ellipseMode(CENTER);
//Cabeça
fill(255-abs(mouseX-pmouseY),255,255-abs(mouseX-pmouseY));
rect(mouseX,mouseY -50,70,50);
//Olhos
strokeWeight(2);
fill(175,202,255);//Azul
//ellipse(85,67,40,40);
ellipse(pmouseX -15,pmouseY -33,40,40);
strokeWeight(3);
fill(175,202,255);//Azul
ellipse(pmouseX +22,pmouseY -31,30,30);
fill(255);
//Sobrancelhas esq.
strokeWeight(1);
line(mouseX -34,pmouseY -60,mouseX -25,pmouseY -60);
line(mouseX -34,pmouseY -58,mouseX -20,pmouseY -58);
//Sobrancelhas dir.
strokeWeight(1);
line(mouseX +22,pmouseY -50,mouseX +35,pmouseY -50);
line(mouseX +18,pmouseY -52,mouseX +35,pmouseY -52);
//elipse dentro do olho direito
strokeWeight(1);
ellipse(pmouseX +23,pmouseY -30,10,10);
//Pontos dos olhos
strokeWeight(5);
point(pmouseX+23,pmouseY-30);
strokeWeight(15);
point(pmouseX -25,pmouseY -30);
//Corpo
strokeWeight(2);
triangle(mouseX -12, mouseY +25, mouseX +5, mouseY -27, mouseX +26, mouseY +25);
//Pé esq.
fill(157,5,17);//Vermelho
strokeWeight(2);
ellipse(pmouseX,pmouseY +32,25,15);
//Pé Dir.
fill(157,5,17);//Vermelho
ellipse(pmouseX +22, pmouseY +32, 20, 15);
fill(255);
//Cabelo esq.
line(mouseX -35, mouseY -75, mouseX -35, mouseY -26);
line(mouseX -36, mouseY -76, mouseX -36, mouseY -27);
line(mouseX -37, mouseY -77, mouseX -37, mouseY -28);
line(mouseX -38, mouseY-78, mouseX -38, mouseY -29);
//Cabelo horizontal
line(mouseX -35,mouseY -76,mouseX +45,mouseY -76);
line(mouseX -36,mouseY -77,mouseX +44,mouseY -77);
line(mouseX -37,mouseY -78,mouseX +43,mouseY -78);
//Braço esq.
strokeWeight(2);
line(mouseX -30,pmouseY -8,mouseX -5,mouseY);
//braço dir.
strokeWeight(2);
line(mouseX +20,mouseY +5,pmouseX +40,pmouseY -15);
//Mao dir.
ellipse(pmouseX +42, pmouseY -15, 10, 10);
//Mao esq
ellipse(mouseX -32, pmouseY -10, 10, 10);
//Cabelo2
strokeWeight(1);
line(pmouseX -43,pmouseY -85,mouseX -38,mouseY -75);
line(pmouseX -37,pmouseY -85,mouseX -38,mouseY -75);
line(pmouseX -47,pmouseY -77,mouseX -38,mouseY -75);
//boca
fill(198,24,24);//vermelho
strokeWeight(2);
//arc(106, 100, 16, 26, 0, PI);
arc(mouseX +6, mouseY , 16, 26, 0, PI);

//linhas da sapatilha esq.
stroke(255);
strokeWeight(1);
line(pmouseX -11,pmouseY +29,pmouseX+10,pmouseY+29);
//linhas da sapatilha dir.
stroke(255);
strokeWeight(1);
line(pmouseX+14,pmouseY+30,pmouseX+30,pmouseY+30);
//reflexo do olho esq.
fill(255);
ellipse(pmouseX -15,pmouseY -45,8,8);
ellipse(pmouseX -17,pmouseY -45,5,5);
ellipse(pmouseX -10,pmouseY-41,5,5);

//reflexo do olho dir.
ellipse(pmouseX +29,pmouseY -38,2,2);
ellipse(pmouseX +32,pmouseY -36,2,2);
ellipse(pmouseX +30,pmouseY -36,2,2);
//Frase do Dude
}

void mousePressed() {
println("Olá eu sou o Dude!");
}

//Class do objecto randomico(A cabeça do boneco principal)


//Classe Dude
class Dude{
  
  //Variaveis do Dude
  float x, y, w, h, olhos,xSpeed, ySpeed;
  color corDoOlho;
  
  //Construtor do Dude
  Dude(float tempX, float tempY, float tempW, float tempH, float tempOlhos, color tempCor){
    x = tempX;
    y = tempY;
    w = tempW;
    h = tempH;
    olhos = tempOlhos;
    corDoOlho = tempCor;
  }
  

  void mexe (float speed){

    x = x + random(-1,1) * speed;
    y = y + random(-1,1) * speed;
    // Limitar o Dude aos limites da janela
    x = constrain(x, 0, width);
    y = constrain(y, 0, height);
  }

  //Visualiza Dude
void visualiza(){
rectMode(CENTER);
ellipseMode(CENTER);
//Cabeça
fill(255);
smooth();
stroke(1);
rect(x,y-50,w-10,h-30);

//Olhos
fill(corDoOlho);
strokeWeight(2);
ellipse(x-15,y-33,w-40,h-40);

fill(corDoOlho);
strokeWeight(3);

ellipse(x+22,y-31,w-50,h-50);
fill(255);


//Sobrancelhas esq.
fill(255);
strokeWeight(1);
line(x-34,y-60,x-15,y-60);
line(x-34,y-58,x-20,y-58);



//Sobrancelhas dir.
fill(255);
strokeWeight(1);
line(x+22,y-50,x+35,y-50);
line(x+18,y-52,x+35,y-52);



//elipse dentro do olho direito

strokeWeight(1);
ellipse(x+23,y-30,w-70,h-70);


//Pontos dos olhos

strokeWeight(5);
point(x+23,y-30);
strokeWeight(15);
point(x-15,y-30);



//Cabelo esq.
strokeWeight(1);
line(x-35, y-75, x-35, y-26);
line(x-36, y-76, x-36, y-27);
line(x-37, y-77, x-37, y-28);
line(x-38, y-78, x-38, y-29);
//Cabelo horizontal
line(x-35,y-76,x+45,y-76);
line(x-36,y-77,x+44,y-77);
line(x-37,y-78,x+43,y-78);




//Cabelo2
strokeWeight(1);
line(x-43,y-85,x-38,y-75);
line(x-37,y-85,x-38,y-75);
line(x-47,y-77,x-38,y-77);



//reflexo do olho esq.
fill(255);
ellipse(x-15,y-45,w-72,h-72);
ellipse(x-7,y-45,w-75,h-75);
ellipse(x-10,y-41,w-75,h-75);

//reflexo do olho dir.

ellipse(x+29,y-38,w-78,h-78);
ellipse(x+32,y-36,w-78,h-78);
ellipse(x+30,y-36,w-78,h-78);
}
}
  

Share this post


Link to post
Share on other sites
clera

hehe és um artista ;) o dude está muito fixe, bem agora é dentro da class, crias uma function "init" por exemplo, que é chamada quando a class for criada e sempre que houver intercepção

  void init()
  {
    x = random(width);
    y = random(height);
  }

e depois crias tambem uma function intercepcao, que recebe os valores do x,y do mouse e retorna um boolean.

  boolean intercepcao(int x, int y)
  {
    if(...)
    {
      init();
      return true;
    }
    return false;
  }

finalmente e so teres uma variavel que te vá armazenado o valor das cabeças k apanhast

força nisso  :)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.