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)加上背景
5)
// 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;
}
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;
}
沒有留言:
張貼留言