顯示具有 week06 標籤的文章。 顯示所有文章
顯示具有 week06 標籤的文章。 顯示所有文章

2018年1月22日 星期一

week 06

做出簡易爆爆王


程式碼:
void setup(){
  size(850,500);
}
int userJ=9, userI=5;
float  userX, userY;
int waterN=0;
int []waterJ=new int[100];
int []waterI=new int[100];
void draw(){
  background(#92AD28);
  noStroke();
  for(int x=0;x<17;x++){
    for(int y=0;y<10;y++){
      if((x-y)%2 ==0) fill(#7E9819);
      else fill(#92AD28);
      rect(x*50,y*50,50,50);
    }
  }
  fill(255,0,0); ellipse(userJ*50+25 , userI*50+25, 50,50);
  for(int i=0; i<waterN; i++){
      fill(#93E1F7); ellipse(userJ*50+25 , userI*50+25, 30,30);
  }
}
void keyPressed(){
  if(keyCode==LEFT) userJ--;
  if(keyCode==RIGHT) userJ++;
  if(keyCode==UP) userI--;
  if(keyCode==DOWN) userI++;
  if(keyCode==' '){ waterI[waterN]=userI; waterJ[waterN]=userJ; waterN++;}
}
2.鱷魚咬手指
程式碼:
void setup()
{
  size(500,500);
}
void draw()
{
  background(255);
  fill(0,155,0);
  ellipse(250,250,300,300);
  for(int i=0;i<9;i++)
  {
    fill(255);
    rect(110+i*30,200,30,30);
    if(110+i*30<mouseX && mouseX<110+i*30+30 && 200<mouseY && mouseY<200+30)
    {
      fill(0);
      rect(110+i*30,200,30,30);
    }
  }
  for(int i=0;i<9;i++)
  {
    fill(255);
    rect(110+i*30,300,30,30);
    if(110+i*30<mouseX && mouseX<110+i*30+30 && 300<mouseY && mouseY<300+30)
    {
      fill(0);
      rect(110+i*30,300,30,30);
    }
  }
}

2017年11月18日 星期六

week06 郭晉瑜上課筆記

WEEK06

爆爆王基本雛形程式

void setup()  //設定場景大小
{
  size(800,600);
}
int UserJ=9,UserI=5; //水球放置位子參數
float userX, userY;    //玩家參數
int waterN=0;  //水球參數
int []waterJ= new int[100]; //水球陣列(放很多顆)
int []waterI= new int[100];

void draw()
{
  background(#92AD28);//背景色
  noStroke(); //取消邊框格線
  for(int i=0;i<10;i++)
  {
    for(int j=0;j<17;j++)
    {
      if((j-i)%2==0) fill(#7E9819); //讓背景色分出兩個顏色
      else fill(#92AD28);
      rect(j*50,i*50,50,50); //做出格子
    }
  }
  fill(255,0,0); ellipse(UserJ*50+25, UserI*50+25,50,50); //玩家位子
  for(int i=0;i<waterN;i++)
  {
    fill(#93E1F7); ellipse(waterJ[i]*50+25, waterI[i]*50+25,30,30); //水球位子
  }
}
void keyPressed() ///控制玩家移動
{
  if(keyCode==LEFT) UserJ--;
  if(keyCode==RIGHT)UserJ++;
  if(keyCode==UP) UserI--;
  if(keyCode==DOWN) UserI++;
  if(key==' ') //按空白鍵放置水球(陣列設100所以可放100顆)
  {
    waterI[waterN]=UserI;
    waterJ[waterN]=UserJ;
    waterN++;
  }
}



火柴人打鬥遊戲

void setup()
{
  size(600,400);
}
float UserX=300, UserY=200;
float mapX=0,mapY=0;
void draw()
{
  background(#44B220);
  stroke(#356c23); noFill();
  for(int i=0;i<16;i++)
  {
    for(int j=0;j<24;j++)
    {
      rect(mapX+j*25,mapY+i*25,25,25);
    }
  }
  stroke(0); fill(#FC9E38);
  float angle=atan2(mouseY-UserY, mouseX-UserX);
  triangle( UserX+40*cos(angle),UserY+40*sin(angle),
            UserX+15*cos(angle+PI/2),UserY+15*sin(angle+PI/2),
            UserX+15*cos(angle-PI/2),UserY+15*sin(angle-PI/2));
  ellipse(UserX, UserY,30,30);
  mapX-=dirX;
  mapY-=dirY;
}
int dirX=0,dirY=0;
void keyPressed()
{
  if(key=='a' ||key=='A') dirX=-1;
  if(key=='s' ||key=='S') dirY=1;
  if(key=='d' ||key=='D') dirX=1;
  if(key=='w' ||key=='W') dirY=-1;
}
void keyReleased()
{
  if(key=='a' ||key=='A') dirX=0;
  if(key=='s' ||key=='S') dirY=0;
  if(key=='d' ||key=='D') dirX=0;
  if(key=='w' ||key=='W') dirY=0;
}

2017年10月30日 星期一

Week06 玄的筆記..

Week06  玄的筆記..


1. 爆爆王  簡單版

void setup()
{
  size(850,500);
}
int userJ=9,userI=5;
float userX,userY;
int waterN=0;
int[]waterJ=new int[100];
int[]waterI=new int[100];
void draw()
{
  background(#92AD28);
  noStroke();
  for(int i=0;i<10;i++)
  {
    for(int j=0;j<17;j++)
    {
      if((j-i)%2==0) fill(#7E9819);
      else fill(#92AD28);
      rect(j*50,i*50,50,50);
    }
  }
  fill(255,0,0);
  ellipse(userJ*50+25,userI*50+25,50,50);
  for(int i=0;i<waterN;i++)
  {
    fill(#93E1F7);
    ellipse(waterJ[i]*50+25,waterI[i]*50+25,30,30);
  }
}
void keyPressed()
{
  if(keyCode==LEFT)userJ--;
  if(keyCode==RIGHT)userJ++;
  if(keyCode==UP)userI--;
  if(keyCode==DOWN)userI++;
  if(key==' '){waterI[waterN]=userI; waterJ[waterN]=userJ; waterN++; }
}


2.鱷魚咬咬

void setup(){
  size(500,500);
}
void draw(){
  background(255);
  fill(0,155,0);ellipse(250,250,300,300);
  for(int i=0;i<9;i++){
    fill(255); rect(110+i*30,200,30,30);
    if(110+i*30<mouseY && mouseY < 110+i*30+30 &&
      200 < mouseY && mouseY <200+30){
        fill(0);rect(110+i*30,200,30,30);
      }
    }
    for(int i=0;i<9;i++){
      fill(255);rect(110+i*30,300,30,30);
      if(110+i*30<mouseY && mouseY <100+i*30+30 &&
        300 < mouseY && mouseY <300+30){
        fill(0);rect(110+i*30,300,30,30);
      }
    }
  }


遊戲優化  ( 加上random亂數 . Boolean判斷 .遊戲終止)
int bad=0;
int [] all=new int[18];

void setup(){
  size(500,500);
  bad=int(random(18)); all[bad]=1;
  println(bad);
}
boolean bGameOver=false;
void draw(){
  if(bGameOver){
    background(255,0,0);
    return;
  }
  background(255);
  fill(0,155,0);ellipse(250,250,300,300);
  for(int i=0;i<9;i++){
    if(all[i]==-1) continue;
    fill(255); rect(110+i*30,200,30,30);
    if(110+i*30<mouseX && mouseX < 110+i*30+30 &&
      200 < mouseY && mouseY <200+30){
        fill(0);rect(110+i*30,200,30,30);
        if(mousePressed && all[i]!=1) all[i]=-1;
        if(mousePressed && all[i]==1) bGameOver=true;
      }
    }
    for(int i=0;i<9;i++){
      if(all[i+9]==-1) continue;
      fill(255);rect(110+i*30,300,30,30);
      if(110+i*30<mouseX && mouseX <100+i*30+30 &&
        300 < mouseY && mouseY <300+30){
        fill(0);rect(110+i*30,300,30,30);
        if(mousePressed && all[i+9]!=1) all[i+9]=-1;
        if(mousePressed && all[i+9]==1) bGameOver=true;

      }
    }
  }


案下 亂數 設定的牙齒後


Week06 陳柏勳

1.畫出棋盤
void setup(){
  size(850,500);
}
int userJ=9,userI=5;
int waterN=0;
int []waterJ=new int [100];
int []waterI=new int [100];
void draw(){
  background(#95FF03);
  noStroke();
  for(int i=0;i<10;i++){
    for(int j=0;j<17;j++){
      if((j-i)%2==0) fill(#05F717);
      else fill(#95FF03);
      rect(j*50,i*50,50,50);
    }
  }
2.畫出主角(紅點)
fill(255,0,0);ellipse(userJ*50+25,userI*50+25,50,50);
  for(int i=0;i<waterN;i++){
    fill(#03B9FF);ellipse(waterJ[i]*50+25,waterI[i]*50+25,30,30);

3.操作
void keyPressed(){
  if(keyCode==LEFT) userJ--;
  if(keyCode==RIGHT) userJ++;
  if(keyCode==UP) userI--;
  if(keyCode==DOWN) userI++;
  if(key==' '){waterI[waterN]=userI;waterJ[waterN]=userJ;waterN++;}
}

4.鱷魚上下排牙齒(滑鼠停在牙齒上時反黑)
void setup(){
  size(500,500);
  }
  void draw(){
    background(255);
    fill(0,155,0);ellipse(250,250,300,300);
    for(int i=0;i<9;i++){
      fill(255);rect(110+i*30,200,30,30);
      if(110+i*30<mouseX && mouseX<110+i*30+30 && 
      200<mouseY && mouseY <200+30){
        fill(0);rect(110+i*30,200,30,30);
      }
    }
    for(int i=0;i<9;i++){
      fill(255);rect(110+i*30,300,30,30);
      if(110+i*30<mouseX && mouseX<110+i*30+30 && 
      300<mouseY && mouseY <300+30){
        fill(0);rect(110+i*30,300,30,30);
  }
    }
  }



Week06 喵喵喵喵喵的上課筆記

●爆爆王

Step1:

void setup(){
  size(850,500);
}
void draw(){
  background(#92AD28);
  noStroke();
  for(int x=0;x<17;x++){
    for(int y=0;y<10;y++){
      if((x-y)%2==0)fill(#7E9819);
      else fill(#92AD28);
      rect(x*50,y*50,50,50);
    }
  }
}



Step2:

float userX,userY;
void draw(){
  background(#92AD28);
  noStroke();
  for(int x=0;x<17;x++){
    for(int y=0;y<10;y++){
      if((x-y)%2==0)fill(#7E9819);
      else fill(#92AD28);
      rect(x*50,y*50,50,50);
    }
  }
  fill(255,0,0);ellipse(userJ*50+25,userI*50+25,50,50);
}
void keyPressed(){
   if(keyCode==LEFT)userJ--;
   if(keyCode==RIGHT)userJ++;
   if(keyCode==UP)userI--;
   if(keyCode==DOWN)userI++;
}



Step3:

void setup(){
  size(850,500);
}
int userJ=9,userI=5;
float userX,userY;
int waterN=0;
int []waterJ=new int[100];
int []waterI=new int[100];
void draw(){
  background(#92AD28);
  noStroke();
  for(int i=0;i<17;i++){
    for(int j=0;j<10;j++){
      if((j-i)%2==0)fill(#7E9819);
      else fill(#92AD28);
      rect(j*50,i*50,50,50);
    }
  }
  fill(255,0,0);ellipse(userJ*50+25,userI*50+25,50,50);
  for(int i=0;i<waterN;i++){
    fill(#93E1F7);ellipse(waterJ[i]*50+25,waterI[i]*50+25,30,30);
  }
}
void keyPressed(){
   if(keyCode==LEFT)userJ--;
   if(keyCode==RIGHT)userJ++;
   if(keyCode==UP)userI--;
   if(keyCode==DOWN)userI++;
   if(key==' '){waterI[waterN]=userI; waterJ[waterN]=userJ; waterN++;
 }
}



●鱷魚咬咬

Step1:

void setup(){
  size(500,500);
}
void draw(){
  background(255);
  fill(0,155,0);ellipse(250,250,300,300);
  for(int i=0;i<9;i++)
  {
    fill(255);rect(110+i*30,200,30,30);
    if(110+i*30<mouseX && mouseX<110+i*30+30 && 200<mouseY && mouseY<200+30){
      fill(0);rect(110+i*30,200,30,30);
    }
  }
  for(int i=0;i<9;i++){
    fill(255);rect(110+i*30,300,30,30);
  if(110+i*30<mouseX && mouseX<110+i*30+30 && 300<mouseY && mouseY<300+30){
    fill(0);rect(110+i*30,300,30,30);
    }
  }
}



Step2:

int bad=0;
void setup(){
  size(500,500);
  bad= int(random(18));
  println(bad);
}
void draw(){
  background(255);
  fill(0,155,0);ellipse(250,250,300,300);
  for(int i=0;i<9;i++){
    fill(255);rect(110+i*30,200,30,30);
    if(110+i*30<mouseX && mouseX<110+i*30+30 && 200<mouseY && mouseY<200+30){
      fill(0);rect(110+i*30,200,30,30);
    }
    if(bad==i){fill(255,0,0);rect(110+i*30,200,30,30);}
  }
  for(int i=0;i<9;i++){
    fill(255);rect(110+i*30,300,30,30);
  if(110+i*30<mouseX && mouseX<110+i*30+30 && 300<mouseY && mouseY<300+30){
    fill(0);rect(110+i*30,300,30,30);
    }
    if(bad==i+9){fill(255,0,0);rect(110+i*30,300,30,30);}
  }
}



Step2:有分失敗狀況和遊玩選擇狀況圖

int bad=0;
int [] all=new int [18];
void setup(){
  size(500,500);
  bad= int(random(18)); all[bad]=1;
  println(bad);
}
boolean bGameOver=false;
void draw(){
  if(bGameOver){
  background(255,0,0);
  return;
  }
  background(255);
  fill(0,155,0);ellipse(250,250,300,300);
  for(int i=0;i<9;i++){
    if(all[i]==-1)continue;
    fill(255);rect(110+i*30,200,30,30);
    if(110+i*30<mouseX && mouseX<110+i*30+30 && 200<mouseY && mouseY<200+30){
      fill(0);rect(110+i*30,200,30,30);
      if(mousePressed && all[i]!=1) all[i]=-1;
      if(mousePressed && all[i]==1) bGameOver=true;
    }
    //if(bad==i){fill(255,0,0);rect(110+i*30,200,30,30);}
  }
  for(int i=0;i<9;i++){
    if(all[i+9]==-1)continue;
    fill(255);rect(110+i*30,300,30,30);
  if(110+i*30<mouseX && mouseX<110+i*30+30 && 300<mouseY && mouseY<300+30){
    fill(0);rect(110+i*30,300,30,30);
     if(mousePressed && all[i+9]!=1) all[i+9]=-1;
     if(mousePressed && all[i+9]==1) bGameOver=true;
    }
    //if(bad==i+9){fill(255,0,0);rect(110+i*30,300,30,30);}
  }
}





●射擊人物移動遊戲

Step1:

2017年10月24日 星期二

Week06*互動技術課堂筆記*


【利用Processing】


*做出爆爆王*

基本應用介紹


1.先設定爆爆王的背景圖













程式碼:

void setup(){
  size(850,500);  //視窗大小
}
void draw(){
  background(#92AD28);  
  noStroke();  //背景無線條
  for(int x=0;x<17;x++){   //X軸座標
    for(int y=0;y<10;y++){  //Y軸座標
      if((x-y)%2==0)fill(#7E9819);
      else fill(#92AD28);
      rect(x*50,y*50,50,50);  //畫正方形
    }
  }
}

2.增加一個人物,使他的位置可以移動














程式碼:
void setup(){
  size(850,500);
}

int userJ=9,userI=5;
float userX,userY;

void draw(){
  background(#92AD28);
  noStroke();
  for(int x=0;x<17;x++){
    for(int y=0;y<10;y++){
      if((x-y)%2==0)fill(#7E9819);
      else fill(#92AD28);
      rect(x*50,y*50,50,50);
    }
  }
  fill(255,0,0);ellipse(userJ*50+25,userI*50+25,50,50);
}
void keyPressed(){
  if(keyCode==LEFT)userJ--;
  if(keyCode==RIGHT)userJ++;
  if(keyCode==UP)userI--;
  if(keyCode==DOWN)userI++;
}

3.按空白鍵放入水球














程式碼:
void setup(){
  size(850,500);
}
int userJ=9,userI=5;
float userX,userY;
int waterN=0;
int []waterJ=new int[100];
int []waterI=new int[100];
void draw(){
  background(#92AD28); 
  noStroke();
  for(int x=0;x<17;x++){
    for(int y=0;y<10;y++){
      if((x-y)%2==0)fill(#7E9819);
      else fill(#92AD28);
      rect(x*50,y*50,50,50);
    }
  }
  fill(255,0,0);ellipse(userJ*50+25,userI*50+25,50,50);
  for(int i=0;i<waterN;i++){
    fill(#93E1E7);ellipse(waterJ[i]*50+25,waterI[i]*50+25,30,30);
  }
}
void keyPressed(){
  if(keyCode==LEFT)userJ--;
  if(keyCode==RIGHT)userJ++;
  if(keyCode==UP)userI--;
  if(keyCode==DOWN)userI++;
  if(key==' ' ){waterI[waterN]=userI;waterJ[waterN]=userJ;waterN++;}
}


2017年10月23日 星期一

ShiRo week06

簡易期中作品教學

爆爆王
做出背景

使用鍵盤移動的紅圓點(人物)

空白鍵放水球





鱷魚










斧頭人





小精靈



可以轉四方向且嘴巴角度不變

移動

程式碼:

void setup(){
  size (600,400);
}
float open=1, angle=0;
int now=0;
float pacX=300, pacY=200;
int dirX=0, dirY=0;
void draw(){
  background(0);
  fill(255,255,0);
  arc(pacX,pacY,30,30,0+angle+open,PI*2+angle-open);
   pacX+=dirX; pacY+=dirY;
  now++;
  open=abs ((now%60)/60.0-0.5);///0.5 -> 0 -> 0.5 -> 0.5 -> 0 ...
}
void keyPressed(){
  if(keyCode==UP) {dirX=0;dirY=-1; angle=radians(270);}
  if(keyCode==DOWN) {dirX=0;dirY=1; angle=radians(90);}
  if(keyCode==LEFT) {dirX=-1;dirY=0; angle=radians(180);}
  if(keyCode==RIGHT) {dirX=1;dirY=0; angle=0;}
}


*以上截圖為老師上課的截圖

Week 06 : 普通的ㄒㄆ的普通的筆記

今日目標 :

1.做爆爆王的畫面:角色移動操控、放水球
2.講解期中作業小精靈:使小精靈嘴巴能夠自動開合、移動時嘴巴位置不改變

重要概念 : 

1.  keyCode → 鍵盤方向鍵操控角色移動
2.  arc → 有開口的圓形


一、爆爆王

1. 畫出爆爆王的野戰地圖背景



2.增加角色,並使用 keyCode 使他能移動



3.使用陣列的概念 放出水球





程式碼: 

void setup(){
  size (850,500);
}
int userJ=9, userI=5;
float userX,userY;
int waterN=0; ///waterball
int []waterJ=new int[100];
int []waterI=new int[100];
void draw(){
  background(#92AD28);
  noStroke();
  for(int i=0;i<10;i++){
      for(int j=0;j<17;j++){
        if((j-i)%2 ==0) fill(#7E9819);
        else fill(#92AD28);
        rect(j*50,i*50,50,50);
     }
  }
  fill (255,0,0); ellipse(userJ*50+25,userI*50+25,50,50);
  ///USER
  for(int i=0;i<waterN;i++){
    fill(#93E1F7); ellipse(waterJ[i]*50+25,waterI[i]*50+25,30,30);
  }
}
void keyPressed(){
  if(keyCode==LEFT) userJ--;
  if(keyCode==RIGHT) userJ++;
  if(keyCode==UP) userI--;
  if(keyCode==DOWN) userI++;
  ///USER MOVE
  if(key==' '){ waterI[waterN]=userI; waterJ[waterN]=userJ; waterN++;}
/// WATERBALL
}


二、期中作業小精靈

1.畫出小精靈: 使用 arc 概念



2.讓小精靈的嘴巴能夠自動開合


3.使小精靈能夠轉四方向並且嘴巴角度不變 ( keyCode )


4.讓小精靈移動!!


程式碼:

void setup(){
  size (600,400);
}
float open=1, angle=0;
int now=0;
float pacX=300, pacY=200;
int dirX=0, dirY=0;
void draw(){
  background(0);
  fill(255,255,0);
  arc(pacX,pacY,30,30,0+angle+open,PI*2+angle-open);
   pacX+=dirX; pacY+=dirY;
  now++;
  open=abs ((now%60)/60.0-0.5);
  ///0.5 -> 0 -> 0.5 -> 0.5 -> 0 ...
}
int dir=0; 
void keyPressed(){
  if(keyCode==UP) {dirX=0;dirY=-1; angle=radians(270);}
  if(keyCode==DOWN) {dirX=0;dirY=1; angle=radians(90);}
  if(keyCode==LEFT) {dirX=-1;dirY=0; angle=radians(180);}
  if(keyCode==RIGHT) {dirX=1;dirY=0; angle=0;}
}