Go to Post Wow, possibly a HPJIE*? How cool would that be? *High Paying Job In Electronics. - DonRotolo [more]
Home
Go Back   Chief Delphi > FIRST > General Forum
CD-Media   CD-Spy  
portal register members calendar search Today's Posts Mark Forums Read FAQ rules

 
 
 
Thread Tools Rating: Thread Rating: 7 votes, 5.00 average. Display Modes
Prev Previous Post   Next Post Next
  #13   Spotlight this post!  
Unread 04-05-2011, 21:20
efoote868 efoote868 is offline
foote stepped in
AKA: E. Foote
FRC #0868
Team Role: Mentor
 
Join Date: Mar 2006
Rookie Year: 2005
Location: Noblesville, IN
Posts: 1,375
efoote868 has a reputation beyond reputeefoote868 has a reputation beyond reputeefoote868 has a reputation beyond reputeefoote868 has a reputation beyond reputeefoote868 has a reputation beyond reputeefoote868 has a reputation beyond reputeefoote868 has a reputation beyond reputeefoote868 has a reputation beyond reputeefoote868 has a reputation beyond reputeefoote868 has a reputation beyond reputeefoote868 has a reputation beyond repute
Re: Please help Wave Robotics earn $1,000!!!

Quote:
Originally Posted by Andrew Schreiber View Post
Actually yes, I'm curious how you tell where the coins are.

(Hey, it is a really cool application and I'm curious!)
It took me about ~30 minutes to write this (I wrote something similar for a different thing oh so long ago).

I apologize for using magic numbers for pixel locations. Also, do not run this if you're not willing to give up the use of your computer for a minute.



Code:
/*
 Copyright (C) 2011  Evan Foote

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

import java.awt.AWTException;
import java.awt.Color;
import java.awt.Robot;

public void robotRunner()
{
  try
  {
    Robot myRobot = new Robot();
    myRobot.delay(4000);

    //get the current system time for reference on how long to run
    long time = System.currentTimeMillis();

    int loops = 0;

    int x = 560; //coordinate of the screen in pixels where the coins appear
    int y = 560;             
    int dx = 0; //or offset, where we're sampling
    int dy = 0;                
    int xmax = 240; //size of the rectangle we're sampling
    int ymax = 150;                
    int xsamp = 40; //AKA the step size between samples
    int ysamp = 20;

    Color c; //the sampled color

    int cnt = 0; //The number of coins we've found

    //run main loop for about 1 minute
    while (System.currentTimeMillis() - time < 1*60*1000) 
    {
      //iterate through each coordiante in the sample space
      for (dx = 0; dx < xmax; dx += xsamp)
      {
        for (dy = 0; dy < ymax; dy += ysamp)
        {
          //snag the color where we're sampling
          c = myRobot.getPixelColor(x + dx, y + dy);

          //check and see if the color is something other than white (like yellow)
          if (notWhite(c))
          {
            //move the mouse to that location
            myRobot.mouseMove(x + dx, y + dy);
            //increment the count so we know when to stop
            cnt++;

            //subtract this sample so we can check again
            dy -= ysamp;

            //left click the mouse, wait, drag it to the piggy bank, wait,
            //release it, wait.
            myRobot.mousePress(16);
            myRobot.delay(50);
            myRobot.mouseMove(448, 537);
            myRobot.delay(50);
            myRobot.mouseRelease(16);
            myRobot.delay(50);

            //TODO: CAN BETTER THIS CODE by:
            //checking that the coin traveled with the mouse. If it didn't,
            //subtract 1 from the cnt and try again.

            //alright, grabbed 5 coins. click on the refresh button
            if(cnt == 5)
            {
              myRobot.mouseMove(1109, 87);
              myRobot.delay(50);
              myRobot.mousePress(16);
              myRobot.delay(50);
              myRobot.mouseRelease(16);

              //wait a second for the page to refresh. Slower internet speeds
              //should wait longer.
              myRobot.delay(1000);
              break;
            }//if count is at 5
          }//if sample is not white
        }//for each y pixel

        //Putting this in the outer for loop so we can break from it
        //as well.
        if (cnt == 5)
        {
          //reset the count and the iteration
          cnt = 0;
          break;
        }
      }//for each x row

      //if dy >= ymax, it means that we've traveled all the way and didn't
      //spot 5 coins. something went bad, refresh the page.
      if (dy >= ymax)
      {
        myRobot.mouseMove(1109, 87);
        myRobot.delay(50);
        myRobot.mousePress(16);
        myRobot.delay(50);
        myRobot.mouseRelease(16);

        myRobot.delay(1000);

        cnt = 0;
      }

    loops++;
    }//while loop

    System.out.println("Number of loops run: " + loops);
  }//try
  catch(Exception e)
  {
    //not sure what would cause above code to be more than exceptional, but
    //if it is, I don't care and we can stop running here.
  }
}

private boolean notWhite (Color c)
{
  return (c.getRed() + c.getBlue() + c.getGreen() < 255*3);
}
__________________
Be Healthy. Never Stop Learning. Say It Like It Is. Own It.

Like our values? Flexware Innovation is looking for Automation Engineers. Check us out!
Reply With Quote
 


Thread Tools
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT -5. The time now is 02:38.

The Chief Delphi Forums are sponsored by Innovation First International, Inc.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi