2024年10月28日 星期一

聽均一席話如聽一席話 Week08 11160712

 //week08_1_int_page_if_page_0_1

PImage img;
void setup(){
  size(640,480);
  img = loadImage("640x480.png");
}
int page = 0;
void draw(){
  if(page==0){
    background(0);
    textSize(70);
    textAlign(CENTER,CENTER);
    text("Opening",320,240);
  }
  else if(page==1){
    background(img);
  }
}
void mousePressed(){
  if(page==0)page=1;
  else if(page==1)page=0;
}
透過滑鼠按鍵切換頁面

//week08_2_RPG_background_32_32_rect
PImage img;
void setup(){
  size(640,480);
  img = loadImage("640x480.png");
}
void draw(){
  background(img);
  for(int i=0;i<20;i++){
    for(int j=0;j<20;j++){
      noFill();
      rect(j*32,i*32,32,32);
    }
  }
}
把畫面劃分成小格子


//week08_2_RPG_background_32_32_rect
PImage img;
void setup(){
  size(640,480);
  img = loadImage("640x480.png");
}
void draw(){
  background(img);
  for(int i=0;i<20;i++){
    for(int j=0;j<20;j++){
      noFill();
      stroke(0);
      rect(j*32,i*32,32,32);
    }
  }
  stroke(255,0,0);
  rect(J*32,I*32,32,32);
}
int I=-1,J=-1;
void mousePressed(){
  I = mouseY/32;
  J = mouseX/32;
}
選取其中一個小格子
//week08_3_RPG_background_32_32_rect
PImage img;
void setup(){
  size(640,480);
  img = loadImage("640x480.png");
}
void draw(){
  background(img);
  for(int i=0;i<20;i++){
    for(int j=0;j<20;j++){
      noFill();
      stroke(0);
      rect(j*32,i*32,32,32);
    }
  }
  stroke(255,0,0);
  rect(J*32,I*32,32,32);
}
int I=-1,J=-1;
void mouseMoved(){
  I = mouseY/32;
  J = mouseX/32;
}
void mousePressed(){
  PImage now = createImage(32,32,RGB);
  now.copy(img,J*32,I*32,32,32,0,0,32,32);
  now.save("1.png");
}

點選一個小格子就會儲存該圖示到資料夾
//week08_4_RPG_2d_array_floor_map
int [][] floor={
  {8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8 },
  {8,0,2,3,4,8,8,8,8,8,3,8,8,8,12,8,8,2,2,8 },
  {8,0,6,5,4,8,5,8,8,8,8,8,2,8,12,8,8,2,2,8 },
  {8,8,8,5,4,8,5,8,7,10,11,8,2,8,15,8,8,2,2,8 },
  {8,8,8,5,4,8,5,8,7,10,11,8,2,8,15,8,8,2,2,8 },
  {8,8,8,5,4,8,5,8,7,10,11,8,2,6,15,8,8,2,2,8 },
  {8,8,8,5,4,8,5,8,7,10,11,8,2,8,15,8,8,2,2,8 },
  {8,8,8,5,4,8,8,8,7,10,11,8,2,8,15,8,8,2,2,8 },
  {8,8,8,5,4,2,3,4,7,10,11,8,2,8,15,8,8,2,2,8 },
  {8,8,8,5,4,8,8,8,7,10,11,8,2,8,15,8,8,2,2,8 },
  {8,8,8,5,4,8,5,8,7,10,11,8,2,8,15,8,8,2,2,8 },
  {8,8,8,5,4,8,5,8,7,10,11,8,2,8,15,8,8,2,2,8 },
  {8,8,8,5,4,8,5,8,7,10,11,8,2,8,15,7,7,2,2,8 },
  {8,8,8,5,4,8,5,8,7,10,11,8,2,8,15,8,8,2,2,8 },
  {8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8 },
};
PImage img;
PImage[] fimg = new PImage[40];
void setup(){
  size(640,480);
  img = loadImage("640x480.png");
  for(int i=0;i<=18;i++)fimg[i] = loadImage(i+".png");
}
void draw(){
  //background(img);
  for(int i=0;i<15;i++){
    for(int j=0;j<20;j++){
      int now = floor[i][j];
      image(fimg[now],j*32,i*32);
    }
  }
}
建立一個自己設計的地圖
//week08_5_RPG_user_move_wall
int [][] floor={
  {8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8 },
  {8,0,2,3,4,8,8,8,8,8,3,8,8,8,12,8,8,2,6,8 },
  {8,0,6,5,4,8,5,8,8,8,8,8,2,8,12,8,8,2,2,8 },
  {8,8,8,5,4,8,5,8,7,10,11,8,2,8,5,8,8,2,2,8 },
  {8,8,8,5,4,8,5,8,7,10,11,8,2,8,1,8,8,2,2,8 },
  {8,8,8,5,4,8,5,8,7,10,11,8,2,3,3,8,8,2,2,8 },
  {8,8,8,5,4,8,5,8,7,10,11,8,2,8,2,8,8,2,2,8 },
  {8,8,8,5,4,8,8,8,7,10,11,8,2,8,4,8,8,2,2,8 },
  {8,8,8,5,4,2,3,4,7,10,11,8,2,8,2,8,8,2,2,8 },
  {8,8,8,5,4,8,8,8,7,10,11,8,2,8,11,8,8,2,2,8 },
  {8,8,8,5,4,8,5,8,7,10,11,3,2,8,11,8,8,2,2,8 },
  {8,8,8,5,4,8,5,8,7,10,11,8,2,8,17,8,8,2,2,8 },
  {8,8,8,5,4,8,5,8,7,10,11,8,2,8,13,7,7,2,2,8 },
  {8,8,8,5,4,8,5,8,7,10,11,8,2,8,14,8,8,2,2,8 },
  {8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8 },
};
PImage img,user;
PImage[] fimg = new PImage[40];
void setup(){
  size(640,480);
  img = loadImage("640x480.png");
  user= loadImage("15.png");//勇者
  for(int i=0;i<=18;i++)fimg[i] = loadImage(i+".png");
}
int userI=2,userJ=2;
void draw(){
  //background(img);
  for(int i=0;i<15;i++){
    for(int j=0;j<20;j++){
      int now = floor[i][j];
      image(fimg[now],j*32,i*32);
    }
  }
  image(user,userJ*32,userI*32);
}
void keyPressed(){
  if(keyCode==RIGHT)userJ++;
  if(keyCode==LEFT)userJ--;
  if(keyCode==UP)userI--;
  if(keyCode==DOWN)userI++;
}
新增一個可以走來走去的腳色(還沒設定碰牆過不去)
//week08_6_RPG_wall_detection
int [][] floor={
  {8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8 },
  {8,0,2,3,4,8,8,8,8,8,3,8,8,8,12,8,8,2,6,8 },
  {8,0,6,5,4,8,5,8,8,8,8,8,2,8,12,8,8,2,2,8 },
  {8,8,8,5,4,8,5,8,7,10,11,8,2,8,5,8,8,2,2,8 },
  {8,8,8,5,4,8,5,8,7,10,11,8,2,8,1,8,8,2,2,8 },
  {8,8,8,5,4,8,5,8,7,10,11,8,2,3,3,8,8,2,2,8 },
  {8,8,8,5,4,8,5,8,7,10,11,8,2,8,2,8,8,2,2,8 },
  {8,8,8,5,4,8,8,8,7,10,11,8,2,8,4,8,8,2,2,8 },
  {8,8,8,5,4,2,3,4,7,10,11,8,2,8,2,8,8,2,2,8 },
  {8,8,8,5,4,8,8,8,7,10,11,8,2,8,11,8,8,2,2,8 },
  {8,8,8,5,4,8,5,8,7,10,11,3,2,8,11,8,8,2,2,8 },
  {8,8,8,5,4,8,5,8,7,10,11,8,2,8,17,8,8,2,2,8 },
  {8,8,8,5,4,8,5,8,7,10,11,8,2,8,13,7,7,2,2,8 },
  {8,8,8,5,4,8,5,8,7,10,11,8,2,8,14,8,8,2,2,8 },
  {8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8 },
};
PImage img,user;
PImage[] fimg = new PImage[40];
void setup(){
  size(640,480);
  img = loadImage("640x480.png");
  user= loadImage("15.png");//勇者
  for(int i=0;i<=18;i++)fimg[i] = loadImage(i+".png");
}
int userI=2,userJ=2;
void draw(){
  //background(img);
  for(int i=0;i<15;i++){
    for(int j=0;j<20;j++){
      int now = floor[i][j];
      image(fimg[now],j*32,i*32);
    }
  }
  image(user,userJ*32,userI*32);
}
void keyPressed(){

  int newI=userI,newJ=userJ;
  if(keyCode==RIGHT)newJ++;
  if(keyCode==LEFT)newJ--;
  if(keyCode==UP)newI--;
  if(keyCode==DOWN)newI++;
  if(floor[newI][newJ]!=8 && floor[newI][newJ]!=5){
    userI=newI;
    userJ=newJ;
  }
}
加上了碰撞牆偵測
//week08_7_RPG_eat_good
int [][] floor={
  {8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8 },
  {8,0,2,3,4,8,8,8,8,8,3,8,8,8,12,8,8,2,18,8 },
  {8,6,7,5,4,8,5,8,8,8,8,8,2,8,12,8,8,2,2,8 },
  {8,8,8,5,4,8,5,8,7,10,11,8,2,8,5,8,8,2,2,8 },
  {8,8,8,5,4,8,5,8,7,10,11,8,2,8,1,8,8,2,2,8 },
  {8,8,8,5,4,8,5,8,7,10,11,8,2,3,3,8,8,2,2,8 },
  {8,8,8,5,4,8,5,8,7,10,11,8,2,8,2,8,8,2,2,8 },
  {8,8,8,5,4,8,8,8,7,10,11,8,2,8,4,8,8,2,2,8 },
  {8,8,8,5,4,2,3,4,7,10,11,8,2,8,2,8,8,2,2,8 },
  {8,8,8,5,4,8,8,8,7,10,11,8,2,8,11,8,8,2,2,8 },
  {8,8,8,5,4,8,5,8,7,10,11,3,2,8,11,8,8,2,2,8 },
  {8,8,8,5,4,8,5,8,7,10,11,8,2,8,17,8,8,2,2,8 },
  {8,8,8,5,4,8,5,8,7,10,11,8,2,8,13,7,7,2,2,8 },
  {8,8,8,5,4,8,5,8,7,10,11,8,2,8,14,8,8,2,2,8 },
  {8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8 },
};
PImage img,user;
PImage[] fimg = new PImage[40];
void setup(){
  size(640,480);
  img = loadImage("640x480.png");
  user= loadImage("15.png");//勇者
  for(int i=0;i<=18;i++)fimg[i] = loadImage(i+".png");
}
int userI=2,userJ=2;
void draw(){
  
  //background(img);
  for(int i=0;i<15;i++){
    for(int j=0;j<20;j++){
      int now = floor[i][j];
      image(fimg[now],j*32,i*32);
    }
  }
  image(user,userJ*32,userI*32);
  if(gameOver){
  background(0,255,0);
  textSize(70);
  textAlign(CENTER,CENTER);
  text("GameOver",320,240);
  }
}
boolean gameOver=false;
void keyPressed(){
  
  int newI=userI,newJ=userJ;
  if(keyCode==RIGHT)newJ++;
  if(keyCode==LEFT)newJ--;
  if(keyCode==UP)newI--;
  if(keyCode==DOWN)newI++;
  if(floor[newI][newJ]!=8 && floor[newI][newJ]!=5){
    userI=newI;
    userJ=newJ;
    if(floor[userI][userJ] == 18)gameOver=true;
    floor[userI][userJ] = 7;
  }
}
新增碰到樓梯結束遊戲

//week08_8_RPG_info
int [][] floor={
  {8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8 },
  {8,8,8,8,6,8,8,8,8,8,3,8,8,8,12,8,8,2,18,8 },
  {8,8,8,8,4,8,5,8,8,8,8,8,2,8,12,8,8,2,2,8 },
  {8,8,8,8,4,8,5,8,7,10,11,8,2,8,5,8,8,2,2,8 },
  {8,8,8,8,4,8,5,8,7,10,11,8,2,8,1,8,8,2,2,8 },
  {8,8,8,8,4,8,5,8,7,10,11,8,2,3,3,8,8,2,2,8 },
  {8,8,8,8,4,8,5,8,7,10,11,8,2,8,2,8,8,2,2,8 },
  {8,8,8,8,4,8,8,8,7,10,11,8,2,8,4,8,8,2,2,8 },
  {8,8,8,8,4,2,3,4,7,10,11,8,2,8,2,8,8,2,2,8 },
  {8,8,8,8,4,8,8,8,7,10,11,8,2,8,11,8,8,2,2,8 },
  {8,8,8,8,4,8,5,8,7,10,11,3,2,8,11,8,8,2,2,8 },
  {8,8,8,8,4,8,5,8,7,10,11,8,2,8,17,8,8,2,2,8 },
  {8,8,8,8,4,8,5,8,7,10,11,8,2,8,13,7,7,2,2,8 },
  {8,8,8,8,4,8,5,8,7,10,11,8,2,8,14,8,8,2,2,8 },
  {8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8 },
};
PImage img,user;
PImage[] fimg = new PImage[40];
void setup(){
  size(640,480);
  img = loadImage("640x480.png");
  user= loadImage("15.png");//勇者
  for(int i=0;i<=18;i++)fimg[i] = loadImage(i+".png");
}
int userI=2,userJ=4;
void draw(){
  
  //background(img);
  for(int i=0;i<15;i++){
    for(int j=0;j<20;j++){
      int now = floor[i][j];
      image(fimg[now],j*32,i*32);
    }
  }
  image(user,userJ*32,userI*32);
  
  image(user,16,16);
  textSize(30);
  text("Level: "+level,16,90);
  textSize(20);
  text("Health: "+health,16,140);
  text("Attack: "+attack,16,190);
  text("Defense: "+defense,16,240);
  text("Magic: "+magic,16,290);
  text("Exp: "+exp,16,340);
  text("Coins: "+coins,16,390);
    
  if(gameOver){
  background(0,255,0);
  textSize(70);
  textAlign(CENTER,CENTER);
  text("GameOver",320,240);
  }
}
int level =1,health =2700,attack =14,defense=16,magic=26,exp=58,coins=8954;
boolean gameOver=false;
void keyPressed(){
  
  int newI=userI,newJ=userJ;
  if(keyCode==RIGHT)newJ++;
  if(keyCode==LEFT)newJ--;
  if(keyCode==UP)newI--;
  if(keyCode==DOWN)newI++;
  if(floor[newI][newJ]!=8 && floor[newI][newJ]!=5){
    userI=newI;
    userJ=newJ;
    if(floor[userI][userJ] == 18)gameOver=true;
    floor[userI][userJ] = 7;
  }
}
在左邊增加屬性
//week08_7_RPG_eat_good
int [][] floor={
  {8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8 },
  {8,8,8,8,6,8,8,8,8,8,3,8,8,8,12,8,8,2,18,8 },
  {8,8,8,8,4,8,5,8,8,8,8,8,2,8,12,8,8,2,2,8 },
  {8,8,8,8,4,8,5,8,7,10,11,8,2,8,5,8,8,2,2,8 },
  {8,8,8,8,4,8,5,8,7,10,11,8,2,8,1,8,8,2,2,8 },
  {8,8,8,8,4,8,5,8,7,10,11,8,2,3,3,8,8,2,2,8 },
  {8,8,8,8,4,8,5,8,7,10,11,8,2,8,14,8,8,2,2,8 },
  {8,8,8,8,4,8,8,8,7,10,11,8,2,8,4,8,8,2,2,8 },
  {8,8,8,8,4,2,3,4,7,10,11,8,2,8,2,8,8,2,2,8 },
  {8,8,8,8,4,8,8,8,7,10,11,8,2,8,11,8,8,2,2,8 },
  {8,8,8,8,4,8,5,8,7,10,11,3,2,8,11,8,8,2,2,8 },
  {8,8,8,8,4,8,5,8,7,10,11,8,2,8,14,8,8,2,2,8 },
  {8,8,8,8,4,8,5,8,7,10,11,8,2,8,13,7,7,2,2,8 },
  {8,8,8,8,4,8,5,8,7,10,11,8,2,8,14,8,8,2,2,8 },
  {8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8 },
};
PImage img,user;
PImage[] fimg = new PImage[40];
void setup(){
  size(640,480);
  img = loadImage("640x480.png");
  user= loadImage("15.png");//勇者
  for(int i=0;i<=18;i++)fimg[i] = loadImage(i+".png");
}
int userI=2,userJ=4;
void draw(){
  
  //background(img);
  for(int i=0;i<15;i++){
    for(int j=0;j<20;j++){
      int now = floor[i][j];
      image(fimg[now],j*32,i*32);
    }
  }
  image(user,userJ*32,userI*32);
  
  image(user,16,16);
  textSize(30);
  text("Level: "+level,16,90);
  textSize(20);
  text("HP: "+HP,16,140);
  text("Attack: "+attack,16,190);
  text("Defense: "+defense,16,240);
  text("Magic: "+magic,16,290);
  text("Exp: "+exp,16,340);
  text("Coins: "+coins,16,390);
    
  if(gameOver==1){
  background(0,255,0);
  textSize(70);
  textAlign(CENTER,CENTER);
  text("GameOver",320,240);
  }
  if(gameOver==2){
  background(255,0,0);
  textSize(70);
  textAlign(CENTER,CENTER);
  text("GameOver",320,240);
  }
}
int level =1,HP =4499,attack =14,defense=16,magic=26,exp=58,coins=8954;
int gameOver=0;
void keyPressed(){
  
  int newI=userI,newJ=userJ;
  if(keyCode==RIGHT)newJ++;
  if(keyCode==LEFT)newJ--;
  if(keyCode==UP)newI--;
  if(keyCode==DOWN)newI++;
  if(floor[newI][newJ]==14){
    if(HP-1500<=0)gameOver=2;
    else {
      HP -= 1500;
      coins+=10;
      exp+=1;
      userI=newI;
      userJ=newJ;
      floor[newI][newJ]=7;
    }
  }
  if(floor[newI][newJ]!=8 && floor[newI][newJ]!=5){
    userI=newI;
    userJ=newJ;
    if(floor[userI][userJ] == 18)gameOver=1;
    floor[userI][userJ] = 7;
  }
}
增加碰到怪物會扣血

沒有留言:

張貼留言