> show canvas only <


/* built with Studio Sketchpad: 
 *   https://sketchpad.cc
 * 
 * observe the evolution of this sketch: 
 *   https://studio.sketchpad.cc/sp/pad/view/ro.LytOJDq6Ebs/rev.444
 * 
 * authors: 
 *   
 *   
 *   Michal Wallace

 * license (unless otherwise specified): 
 *   creative commons attribution-share alike 3.0 license.
 *   https://creativecommons.org/licenses/by-sa/3.0/ 
 */ 



/* @pjs preload="/static/uploaded_resources/p.1181/orangeguy-U.png"; */
/* @pjs preload="/static/uploaded_resources/p.1181/orangeguy-D.png"; */
/* @pjs preload="/static/uploaded_resources/p.1181/orangeguy-L.png"; */
/* @pjs preload="/static/uploaded_resources/p.1181/orangeguy-R.png"; */
/* @pjs preload="/static/uploaded_resources/p.1181/blueguy-U.png"; */
/* @pjs preload="/static/uploaded_resources/p.1181/blueguy-D.png"; */
/* @pjs preload="/static/uploaded_resources/p.1181/blueguy-L.png"; */
/* @pjs preload="/static/uploaded_resources/p.1181/blueguy-R.png"; */
/* @pjs preload="/static/uploaded_resources/p.1181/background.png"; */

/*
Course URL: http://ureddit.com/class/268
Instructor: SquashMonster
me: tangentstorm ([email protected])
*/

final static int NORTH = 1;
final static int EAST = 2;
final static int SOUTH = 4;
final static int WEST = 8;

int mOrangeGuyHeading = 0;
int mOrangeGuySpeed = 10;

// for the adventurous, make orange and blue guys into sprites:
/*
class Sprite
{
  int x;
  int y;
  // more variables should go here
  // (image, speed, etc.)
  
  Sprite(int x, int y)
  {
    this.x = x;
    this.y = y;
  }
}
// then you would say:
Sprite mOrangeGuy = new Sprite(0,0);
*/

// these are the ones we draw:
PImage mOrangeGuyImage;
PImage mBlueGuyImage;
PImage mBackgroundImage;

// this is where we draw them
int mOrangeGuyX = 0;
int mOrangeGuyY = 0;

// low tech sprite sheet (since we're not using Arrays yet)
PImage mOrangeGuyU;
PImage mOrangeGuyD;
PImage mOrangeGuyL;
PImage mOrangeGuyR;


int kCanvasWidth = 300;
int kCanvasHeight = 300;

// this is run once
void setup()
{
    // set the background color
    background(255);
    
    // canvas size remember to update kCanvasXX 
    size(300, 300); 
      
    // smooth edges
    smooth();
    
    // limit the number of frames per second
    frameRate(30);
    
    mOrangeGuyD= loadImage("/static/uploaded_resources/p.1181/orangeguy-D.png");
    mOrangeGuyU= loadImage("/static/uploaded_resources/p.1181/orangeguy-U.png");
    mOrangeGuyR= loadImage("/static/uploaded_resources/p.1181/orangeguy-R.png");
    mOrangeGuyL= loadImage("/static/uploaded_resources/p.1181/orangeguy-L.png");
    
    mBackgroundImage= loadImage("/static/uploaded_resources/p.1181/background.png");
    
    mBlueGuyImage= loadImage("/static/uploaded_resources/p.1181/blueguy-D.png");

    // initialize our "current frame" images
    mOrangeGuyImage = mOrangeGuyL; 
    mOrangeGuyX = kCanvasWidth/2 - mOrangeGuyImage.width/2;
    mOrangeGuyY = kCanvasHeight/2 - mOrangeGuyImage.height/2;
} 

// this is run repeatedly.
void draw()
{
   // draw the background
   image(mBackgroundImage, 0, 0);

   switch(mOrangeGuyHeading)
   {
      case NORTH: mOrangeGuyY-=mOrangeGuySpeed; break;
      case EAST: mOrangeGuyX+=mOrangeGuySpeed; break;
      case SOUTH: mOrangeGuyY+=mOrangeGuySpeed; break;
      case WEST: mOrangeGuyX-=mOrangeGuySpeed; break;
      case NORTH|EAST: mOrangeGuyY-=mOrangeGuySpeed; mOrangeGuyX+=mOrangeGuySpeed; break;
      case NORTH|WEST: mOrangeGuyY-=mOrangeGuySpeed; mOrangeGuyX-=mOrangeGuySpeed; break;
      case SOUTH|EAST: mOrangeGuyY+=mOrangeGuySpeed; mOrangeGuyX+=mOrangeGuySpeed; break;
      case SOUTH|WEST: mOrangeGuyY+=mOrangeGuySpeed; mOrangeGuyX-=mOrangeGuySpeed; break;
    }
    
    // bounds checking
    if (mOrangeGuyY + mOrangeGuyImage.height > kCanvasHeight)
    {
      mOrangeGuyY = kCanvasHeight - mOrangeGuyImage.height;
    }
    
  
    image(mOrangeGuyImage, mOrangeGuyX, mOrangeGuyY);
    image(mBlueGuyImage, kCanvasWidth/2 - mBlueGuyImage.width/2,
         kCanvasHeight - mBlueGuyImage.height );
}


void keyPressed()
{
  switch(key)
  {
    case(','):case('<'):case('w'):case('W'):
      mOrangeGuyHeading |=NORTH;
      mOrangeGuyImage = mOrangeGuyU;
     break;
    case('e'):case('E'):case('d'):case('D'):
      mOrangeGuyHeading |=EAST;
      mOrangeGuyImage = mOrangeGuyR;
    break;
    case('o'):case('O'):case('s'):case('S'):
      mOrangeGuyHeading |=SOUTH;
      mOrangeGuyImage = mOrangeGuyD;
    break;
    case('a'):case('A'):
      mOrangeGuyHeading |=WEST;
      mOrangeGuyImage = mOrangeGuyL;
    break;
    case(CODED):
      switch(keyCode)
      {
        case(UP): mOrangeGuyHeading |=NORTH;  break;
      }
    break;
  }
}
 
void keyReleased()
{  
  switch(key)
  {
    case(','):case('<'):case('w'):case('W'):mOrangeGuyHeading ^=NORTH;break;
    case('e'):case('E'):case('d'):case('D'):mOrangeGuyHeading ^=EAST;break;
    case('o'):case('O'):case('s'):case('S'):mOrangeGuyHeading ^=SOUTH;break;
    case('a'):case('A'):mOrangeGuyHeading ^=WEST;break;
    case(CODED):
      switch(keyCode)
      {
        case(UP): mOrangeGuyHeading ^=NORTH;  break;
      }
    break;
  }
}