Week11
1.) 嘗試用程式畫出地圖
1.1 嘗試畫出地圖(框出來的線)
PImage imgFloor;
void setup(){
size(1050,784); 要跟圖片一樣大
imgFloor = loadImage("01.png"); 把圖片抓進來
myFindAllC();
}
void myFindAllC(){
imgFloor.loadPixels(); 讀取pixels
for(int i = 0 ; i<imgFloor.width*imgFloor.height; i++){ 掃描每個pixel
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();
}
void draw(){
background(imgFloor);
}
int calci(int x, int y) { 計算pixel位置
return y*imgFloor.width + x;
}
2.) 畫出紅點
2-1.
void Red(){
stroke(255,0,0);外框
fill(255,188,204);填滿
ellipse(userX, userY, 30, 30);//紅圈(弟弟)
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 ++;
}
}
userVY += 0.98; 重力
}else if( userVY<0){
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) { 讀取每個pixels
return y*imgFloor.width + x;
}
void keyPressed() { 紅球按向左鍵往左:右鍵往右
if (keyCode==RIGHT) userVX=1;
if (keyCode==LEFT) userVX=-1;
if (keyCode==UP && flying==false){
userVY=-12;
flying=true;
}
}
void keyReleased() {放開左右鍵紅點停止
if (keyCode==RIGHT || keyCode==LEFT) userVX=0;
}


沒有留言:
張貼留言