2017年1月12日 星期四

60508013E_林子婷,Week18

106/1/12

1.小精靈PAC-MAN

1)嘴巴開合的小精靈

void setup() {
  size(500, 300);
}
int S=100;
int mouth=30;//45
void draw() {
  background(255);
  fill(#F7E007);
  //ellipse(250,150, S,S);
  arc(250, 150, S, S, radians(mouth), radians(360-mouth), PIE);
  mouth=abs((frameCount*3)%90-45);
  println(mouth);
}

2)小精靈嘴巴依舊可以開合,加上鍵盤上下左右可移動小精靈
///pacman can move
  void setup() {
  size(500, 300);
}
int S=100;
int mouth=30;//45
int pacX=250, pacY=150;
void draw() {
  background(255);
  fill(#F7E007);
  //ellipse(250,150, S,S);
  arc(pacX, pacY, S, S, radians(mouth), radians(360-mouth), PIE);
  mouth=abs((frameCount*3)%90-45);
  println(mouth);
}
void keyPressed() {
  if (keyCode==UP)pacY -=10;
  if (keyCode==DOWN)pacY +=10;
  if (keyCode==RIGHT)pacX+=10;
  if (keyCode==LEFT)pacX-=10;
}

3)小精靈上下鍵移動時可以改變小精靈嘴巴方向


///pacman with pacDir (direction)
void setup() {
  size(500, 300);
}
int S=100;
int mouth=30;//45
int pacX=250, pacY=150, pacDir=0;//0,90,180,270
void draw() {
  background(255);
  fill(#F7E007);
  //ellipse(250,150, S,S);
  arc(pacX, pacY, S, S, radians(mouth+pacDir), radians(360-mouth+pacDir), PIE);
  mouth=abs((frameCount*3)%90-45);
  println(mouth);
}
void keyPressed() {
  if (keyCode==RIGHT) {
    pacX+=10; 
    pacDir=0;
  }
  if (keyCode==DOWN) {
    pacY +=10; 
    pacDir=90;
  }
  if (keyCode==LEFT) {
    pacX-=10; 
    pacDir=180;
  }
  if (keyCode==UP) {
    pacY -=10; 
    pacDir=270;
  }
}

4)加上背景
// Map editor version 0.1
int [][]map={
  {7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9}, 
  {4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4}, 
  {4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4}, 
  {4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4}, 
  {4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4}, 
  {1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 3}};
PImage [] img=new PImage[10];
void setup() {
  size(800, 300);
  for (int i=0; i<=9; i++) img[i]=loadImage(i + ".png");
}
int S=50;
int mouth=30;//45
int pacX=250, pacY=150, pacDir=0;//0,90,180,270
void draw() {
  background(255);
  for (int y=0; y<6; y++) {
    for (int x=0; x<16; x++) {
      image(img[ map[y][x] ], x*S, y*S, S, S);
    }
  }
  fill(#F7E007);
  //ellipse(250,150, S,S);
  arc(pacX, pacY, S, S, radians(mouth+pacDir), radians(360-mouth+pacDir), PIE);
  mouth=abs((frameCount*3)%90-45);

  int editorX=int(mouseX/S), editorY=int(mouseY/S);
  fill(255, 0, 0); 
  rect(editorX*S, editorY*S, S, S);
}
void keyPressed() {
  if (keyCode==RIGHT) {
    pacX+=10; 
    pacDir=0;
  }
  if (keyCode==DOWN) {
    pacY +=10; 
    pacDir=90;
  }
  if (keyCode==LEFT) {
    pacX-=10; 
    pacDir=180;
  }
  if (keyCode==UP) {
    pacY -=10; 
    pacDir=270;
  }
}
void mouseDragged() {
  int editorX=int(mouseX/S), editorY=int(mouseY/S);
  float dx=mouseX-pmouseX, dy=mouseY-pmouseY;
  if (abs(dx)> 2*abs(dy)) map[editorY][editorX]=8;
  if (abs(dy)> 2*abs(dx)) map[editorY][editorX]=4;
}

5)


PImage [] img=new PImage[10];
int [][] map={
  {7, 8, 8, 8, 8, 8, 8, 9}, 
  {4, 0, 0, 0, 0, 0, 0, 4}, 
  {1, 8, 8, 8, 8, 8, 8, 3}};
void setup() {
  size(800, 300);
  for (int i=0; i<=9; i++) img[i]=loadImage(i+".png");
}
int S=100, pacX=250, pacY=150, pacDir=0, mouth=30;//pacDir: 0,90,180,270
void draw() {
  background(255);
  for (int y=0; y<3; y++) {
    for (int x=0; x<8; x++) {
      image(img[ map[y][x] ], x*100, y*100);
    }
  }
  fill(#FEFF05); 
  arc(pacX, pacY, S, S, radians(mouth+pacDir), radians(360-mouth+pacDir), PIE);
  mouth = abs( (frameCount*3)%90 -45 ) ;
  // abs(frameCount%90-45): 45,44,43,... 0,.. 1,2,.....45, 45, 44, 43.....
}
void keyPressed() {
  if (keyCode==RIGHT) {
    pacX+=3; 
    pacDir=0;
  }
  if (keyCode==DOWN) {
    pacY+=3; 
    pacDir=90;
  }
  if (keyCode==LEFT) {
    pacX-=3; 
    pacDir=180;
  }
  if (keyCode==UP) {
    pacY-=3; 
    pacDir=270;
  }
}

6)

//try which map[y][x] coordinate system
PImage [] img=new PImage[10];
int [][] map={
  {7, 8, 8, 8, 8, 8, 8, 9, 7, 8, 8, 8, 8, 8, 8, 9}, 
  {4, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 4}, 
  {1, 8, 8, 8, 8, 8, 8, 3, 1, 8, 8, 8, 8, 8, 8, 3}, 
  {7, 8, 8, 8, 8, 8, 8, 9, 7, 8, 8, 8, 8, 8, 8, 9}, 
  {4, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 4}, 
  {1, 8, 8, 8, 8, 8, 8, 3, 1, 8, 8, 8, 8, 8, 8, 3}};
void setup() {
  size(800, 300);
  for (int i=0; i<=9; i++) img[i]=loadImage(i+".png");
}
int S=50, pacX=250, pacY=150, pacDir=0, mouth=30;//pacDir: 0,90,180,270
void draw() {
  background(255);
  for (int y=0; y<6; y++) {
    for (int x=0; x<16; x++) {
      image(img[ map[y][x] ], x*S, y*S, S, S);
    }
  }
  fill(#FEFF05); 
  arc(pacX, pacY, S, S, radians(mouth+pacDir), radians(360-mouth+pacDir), PIE);
  mouth = abs( (frameCount*3)%90 -45 ) ;
  // abs(frameCount%90-45): 45,44,43,... 0,.. 1,2,.....45, 45, 44, 43..... 
  int x= int(mouseX/S), y= int(mouseY/S);
  fill(255, 0, 0); 
  rect(x*S, y*S, S, S);
}
void keyPressed() {
  if (keyCode==RIGHT) {
    pacX+=3; 
    pacDir=0;
  }
  if (keyCode==DOWN) {
    pacY+=3; 
    pacDir=90;
  }
  if (keyCode==LEFT) {
    pacX-=3; 
    pacDir=180;
  }
  if (keyCode==UP) {
    pacY-=3; 
    pacDir=270;
  }
}
void mouseMoved() {
}


7)



// Map editor version 0.1
int [][]map={
  {7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9}, 
  {4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4}, 
  {4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4}, 
  {4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4}, 
  {4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4}, 
  {1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 3}};
PImage [] img=new PImage[10];
void setup() {
  size(800, 300);
  for (int i=0; i<=9; i++) img[i]=loadImage(i + ".png");
}
int S=50;
int mouth=30;//45
int pacX=250, pacY=150, pacDir=0;//0,90,180,270
void draw() {
  background(255);
  for (int y=0; y<6; y++) {
    for (int x=0; x<16; x++) {
      image(img[ map[y][x] ], x*S, y*S, S, S);
    }
  }
  fill(#F7E007);
  //ellipse(250,150, S,S);
  arc(pacX, pacY, S, S, radians(mouth+pacDir), radians(360-mouth+pacDir), PIE);
  mouth=abs((frameCount*3)%90-45);
  //frameCount:0,1,2,3,...,45,...100000
  //frameCount%90:0,1,2,3,...,90, 0,1,2,...90,0
  //frameCount%90-45:-45,-44,-43,-42,..., 0,1,2,...,45,-45,-44,-43,...,45,-45
  //abs(frameCount%90-45):45,44,43,..., 0...1,2,...45,45,44...

  int editorX=int(mouseX/S), editorY=int(mouseY/S);
  fill(255, 0, 0); 
  rect(editorX*S, editorY*S, S, S);
}
void keyPressed() {
  if (keyCode==RIGHT) {pacX+=10; pacDir=0;}
  if (keyCode==DOWN) {pacY +=10; pacDir=90;}
  if (keyCode==LEFT) {pacX-=10; pacDir=180;}
  if (keyCode==UP) {pacY -=10; pacDir=270;}
}
void mouseDragged() {
  int editorX=int(mouseX/S), editorY=int(mouseY/S);
  float dx=mouseX-pmouseX, dy=mouseY-pmouseY;
  if (abs(dx)> 2*abs(dy)) map[editorY][editorX]=8;
  if (abs(dy)> 2*abs(dx)) map[editorY][editorX]=4;
}




沒有留言:

張貼留言