Week12
1.)嘗試加入藍點(P2)
PImage imgFloor;
void setup() {
size(1050, 784); //跟圖片一樣大
imgFloor = loadImage("01.png");//讀入圖片
PFont font = createFont("標楷體", 30);
textFont(font);
textAlign(CENTER, CENTER);
myFindAllC();
}
void myFindAllC() {
imgFloor.loadPixels();
for (int i = 0; i<imgFloor.width*imgFloor.height; i++) {//找color(255,228,181),劃出地圖
if (red(imgFloor.pixels[i])>254 && green(imgFloor.pixels[i])>227 && blue(imgFloor.pixels[i])>180)imgFloor.pixels[i]=color(255, 228, 181);
else imgFloor.pixels[i]=color(0);//其他填黑色
}
imgFloor.updatePixels();
}
int userX=100, userY=700, user2X=100, user2Y=600;//user跟user2的位置
float userVX=0, userVY=1, user2VX=0, user2VY=1;//user跟user2移動
void draw() {
background(imgFloor);
//stroke(255,0,0);
strokeWeight(3);
//line(840,90,915,165);
Red();
Blue();
}
void Blue(){
stroke(0,0,255);
fill(#82D5F2);
ellipse(user2X, user2Y, 30, 30);
rect(480,squ,30,20);
if (user2VX==1 || user2VX==-1) {//藍左右
for(int b = 0; b < 6; b++){
for (int z = 0; z < 4 ; z++) {
int i=calci(int(user2X+user2VX), user2Y-z );
if (imgFloor.pixels[i]==color(0)) {
user2X += user2VX;
user2Y -= z;
break;
}
}
}
}
if( user2VY>0){//藍跳
for (int k=1; k<=user2VY; k++) {
int i =calci(user2X, int(user2Y+1) );
if( imgFloor.pixels[i]==color(0) ){
user2Y ++;
}else flying2=false;
}
user2VY += 0.98;
}else if( user2VY<0 && flying2){
for (int k=1; k<=-user2VY; k++) {
int i = calci(user2X, int(user2Y-1) );
if( imgFloor.pixels[i]==color(0) ){
user2Y --;
}
}
user2VY += 0.98;
}
}
void Red(){
stroke(255,0,0);
fill(255,188,204);
ellipse(userX, userY, 30, 30);//紅圈(弟弟)
rect( 300,squ2,30,20);
if (userVX==1 || userVX==-1) {//紅左右
for(int a = 0; a < 6; a++){
for (int k =0; k<4; k++) {
int i=calci(int(userX+userVX), userY-k );
if (imgFloor.pixels[i]==color(0)) {
userX += userVX;
userY-=k;
break;
}
}
}
}
if( userVY>0){
for (int k=1; k<=userVY; k++) {
int i =calci(userX, int(userY+1) );
if( imgFloor.pixels[i]==color(0) ){
userY ++;
}else flying=false;
}
userVY += 0.98;
}else if( userVY<0 && flying){
for (int k=1; k<=-userVY; k++) {
int i = calci(userX, int(userY-1) );
if( imgFloor.pixels[i]==color(0) ){
userY --;
}
}
userVY += 0.98;
}
int calci(int x, int y) {
return y*imgFloor.width + x;
}
boolean flying=false, flying2=false;
void keyPressed() {
if (keyCode==RIGHT) userVX=1;
if (keyCode==LEFT) userVX=-1;
if (keyCode==UP && flying==false){
userVY=-12;
flying=true;
}
if (keyCode=='D') user2VX=1;
if (keyCode=='A') user2VX=-1;
if (keyCode=='W' && flying2==false){
user2VY=-12;
flying2=true;
}
void keyReleased() {
if (keyCode==RIGHT || keyCode==LEFT) userVX=0;
if (keyCode=='D' || keyCode=='A') user2VX=0;
}
沒有留言:
張貼留言