ruiallmeida Posted December 22, 2016 at 06:46 PM Report Share #601466 Posted December 22, 2016 at 06:46 PM Boas pessoal 🙂 estou aqui com umas dificuldades em realizar um exercício em processing, que tenho que entregar daqui a umas horas... Será que anda aqui alguém disponível para me ajudar? Desde já muito obrigado a quem me ajudar 🙂 Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted December 22, 2016 at 06:50 PM Report Share #601467 Posted December 22, 2016 at 06:50 PM ajudar? Claro. coloca a duvida... IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
ruiallmeida Posted December 22, 2016 at 07:02 PM Author Report Share #601469 Posted December 22, 2016 at 07:02 PM Muito obrigado 🙂 Então aqui vai: eu tenho que fazer um "jogo", utilizando um "example" do processing chamado "accelaration with vectors" em que já temos uma ellipse controlada pelo mouse. Agora a minha dúvida, é como é que eu coloco essa ellipse a "apanhar" outro objeto, ou seja, quando passamos com a ellipse por cima de um objecto, ele desaparece e aparece em outro sitio de modo "random" e assim sucessivamente. Aqui vai o código já contido no "example": // A Mover object Mover mover; void setup() { size(600,600); mover = new Mover(); } void draw() { background(0); // Update the location mover.update(); // Display the Mover mover.display(); } Em outra aba : class Mover { // The Mover tracks location, velocity, and acceleration PVector location; PVector velocity; PVector acceleration; // The Mover's maximum speed float topspeed; Mover() { // Start in the center location = new PVector(width/2,height/2); velocity = new PVector(0,0); topspeed = 5; } void update() { // Compute a vector that points from location to mouse PVector mouse = new PVector(mouseX,mouseY); PVector acceleration = PVector.sub(mouse,location); // Set magnitude of acceleration acceleration.setMag(0.2); // Velocity changes according to acceleration velocity.add(acceleration); // Limit the velocity by topspeed velocity.limit(topspeed); // Location changes by velocity location.add(velocity); } void display() { stroke(255); strokeWeight(2); fill(127); ellipse(location.x,location.y,48,48); fill(#81C158); ellipse(location.x,location.y,40,40); } } Espero ter-me explicado bem. Penso que não é uma coisa muito difícil de fazer, mas como ainda não tenho muita prática, estou-me a ver um bocado à rasca... Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted December 22, 2016 at 10:02 PM Report Share #601470 Posted December 22, 2016 at 10:02 PM só tens informação da localização do elemento que segue o rato, não tens informação do elemento que deves "apanhar" ... antes de mais, faz isso IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
ruiallmeida Posted December 22, 2016 at 10:13 PM Author Report Share #601471 Posted December 22, 2016 at 10:13 PM Estive a fazer umas pesquisas e ja consegui evoluir um pouco, no entanto, o objeto que é para apanhar, está a dar pontuação quando passo por cima dele com o cursor, e não quando passa o objeto. Agora é só mesmo essa a dúvida, como dar pontuação quando o elemento que segue o rato passar por cima do outro elemento, em vez de ser o cursor em si. Aqui vai o meu código: int x, y; int startTime; boolean gotIt = false; float showTime = 3000; int bgColor = 150; int score = 0; Mover mover; // Set up the screen, and choose // first random location for the ball void setup() { size(600, 600); startTime = millis(); fill(255, 0, 0); newRandomLocation(); mover = new Mover(); } // Draw the ball, or choose a new // location for the ball void draw() { background(#464646); fill(#FFFFFF); ellipse(100,100,5,5); ellipse(200,200,6,6); ellipse(300,70,3,3); ellipse(240,90,2,2); ellipse(450,170,6,6); ellipse(550,300,1,1); ellipse(300,70,3,3); ellipse(150,300,1,1); ellipse(550,100,1,1); ellipse(450,400,1,1); ellipse(400,300,1,1); ellipse(430,200,1,1); ellipse(100,220,1,1); ellipse(30,240,1,1); ellipse(500,200,3,3); ellipse(430,100,3,3); ellipse(350,250,1,1); ellipse(320,200,1,1); fill(#AEAFAD); triangle(50,600,100,400,200,600); triangle(0,600,50,500,100,600); triangle(100,600,150,450,250,600); triangle(150,600,200,500,350,600); triangle(200,600,250,430,400,600); fill(#88D853); rect(0,580,30,30); if (bgColor == 255) bgColor = 150; showScore(); if (!gotIt && millis() - startTime < showTime) { fill(255, 0, 0); ellipse(x, y, 30, 30); } else { newRandomLocation(); } } // Select a new randomLocation for the ball void newRandomLocation() { x = (int)random(0, width); y = (int)random(0, height); gotIt = false; startTime = millis(); } // If the user clicks inside the ball, give // them a point void mouseMoved() { if (dist(mouseX, mouseY, x, y) < 50) { score += 10; gotIt = true; showTime = 0.9 * showTime; } else bgColor = 255; } // Display the score in the bottom-left corner void showScore() { fill(0); text(score, 3, height - 3); // Update the location mover.update(); // Display the Mover mover.display(); } outra aba: class Mover { // The Mover tracks location, velocity, and acceleration PVector location; PVector velocity; PVector acceleration; // The Mover's maximum speed float topspeed; Mover() { // Start in the center location = new PVector(width/2,height/2); velocity = new PVector(0,0); topspeed = 5; } void update() { // Compute a vector that points from location to mouse PVector mouse = new PVector(mouseX,mouseY); PVector acceleration = PVector.sub(mouse,location); // Set magnitude of acceleration acceleration.setMag(0.2); // Velocity changes according to acceleration velocity.add(acceleration); // Limit the velocity by topspeed velocity.limit(topspeed); // Location changes by velocity location.add(velocity); } void display() { stroke(255); strokeWeight(2); fill(127); ellipse(location.x,location.y,48,48); fill(#81C158); ellipse(location.x,location.y,40,40); } } Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted December 23, 2016 at 11:46 AM Report Share #601479 Posted December 23, 2016 at 11:46 AM não vou abordar essas linhas intermináveis de ellipse ... olha bem para a minha questão inicial : 13 hours ago, HappyHippyHippo said: só tens informação da localização do elemento que segue o rato onde tens essa informação ? onde tens a informação das ellipses para poderes comparar com o da bola ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now