2017年1月16日 星期一

Week 18 ლ(゚д゚ლ) 張書豪 60408029E 大豪豪der上課筆記

20170116 教學軟體設計

本日心得:

今天老師向我們介紹GoPro相機並且進一步的介紹有關GoPro相機的應用,老師直接撥放了影片給我們看,是老師一大早到銘傳的時候,進入私房禁地 (誤  其實是操場,但由於世大運在整修,基本上不能隨便讓人進入,但老師本於教學的心,不顧一切的踏入結界 XD 頭帶著GoPro相機 邊奔跑在這整修的操場上,老師跑步的喘息聲以及畫面的震動,著實讓人欽佩,隨時都幻想著如果看到工人,老師的時速肯定會有如騰元拓海在過彎的時候讓人看不到車尾燈,透過老師冒著風險的影片,看到那清晰的畫質,真的覺得很酷~ 有點想入手一台 XD 

接下來老師說大家有玩過 小精靈嗎?! (驚
原來老師要實做給大家看! 什麼?!.. 小精靈實作,有點嚇到 因為我的認知認為小精靈的程式碼應該好幾千行吧?! 不要看他好像一點一點 只是在那裏張口閉口的吃吃吃 ,我自己認為是滿困難的QQ 
沒想到老師竟然說要直接實作,並且找出之前 google紀念首頁的小遊戲讓我們試玩一下~
玩了一下後,發現其實還滿困難的... 哈哈哈  接著老師直接開啟了直播進入了心流,那劈哩啪啦的教打鍵盤聲,在老師的螢幕中是程式碼,在我的眼中大概是這個畫面 !@#$%%^^&** (誤  也沒那麼誇張,只是有些部分看得懂,但是大部分其實滿困難的,但是我完全沒有想過要跟在老師的後面,因為如果說老師是開跑車,我大概是在騎三輪車,完全看不到老師的車尾燈,後來老師也有發現說大家有點跟不太上,但是老師堅守他的原則,希望大家都能嘗試看看實作出來,也很謝謝老師提供完整的程式碼,讓大家有機會可以嘗試看看,看著老師的程式碼,覺得老師真的很神,完全沒誇張,實做出來後發現很多地方需要做微調~ 雖然當時已經面臨下課了,但老師也還問我們說可以繼續改或是我們想下課~~ 但其實也想看老師表演(誤  結果老師就這樣一步一步的慢慢改好,調整再調整,雖然老師口中說還不是很完美,但我已經嘆為觀止了! 被老師這麼秀一波 ,真的是讓我覺得很高興也很幸運有修到老師的課程,雖然這是最後一次上老師的課程,但是有加了老師的FB與賴等也關注了老師的youtube頻道,隨時想要學什麼也可以直接跟老師說,修這堂課,收穫真的甚多,很羨慕銘傳有這麼好的老師~ 在這邊跟銘傳的同學們喊話(誤
大家要好好認真的上課! 因為葉老師的課程是我目前上過最特別也最有趣的課了~~~  謝謝老師在這幾周的課程中每每的帶給大家驚喜與讚嘆,老師給予我們 "滿滿的學習大平台" !!!  謝謝老師 :D 


今日實作:processing + pcman


小精靈~~~~~




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},
  {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,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}};
int S=50, pacDir=0, mouth=30;//pacDir: 0,90,180,270
void setup(){
  size(800,300);
  for(int i=0;i<=9;i++) img[i]=loadImage(i+".png");
  for(int y=0;y<6;y++){
    for(int x=0;x<16;x++){
      if(map[y][x]==0) map[y][x]=5;
    }
  }
}
float alpha=0;// x = alpha*(pacXX*S) + (1-alpha)*(ppacXX*S);
int pacXX=1,pacYY=1, ppacXX=1, ppacYY=1;// 0,1,2,....15
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);
    }
  }
  if( map[ pacYY ][ pacXX ] ==5) map[ pacYY ][ pacXX ]=0; 
  fill(#FEFF05);
  float tempX= alpha*(pacXX) + (1-alpha)*(ppacXX);
  float tempY= alpha*(pacYY) + (1-alpha)*(ppacYY);
  float pacX=tempX*S+S/2, pacY=tempY*S+S/2;
  alpha = (alpha+0.1);
  if(alpha>=1){
    alpha=0; ppacXX=pacXX; ppacYY=pacYY;
    pacMove(pacDir);
  }
  arc(pacX,pacY, S,S, radians(mouth+pacDir), radians(360-mouth+pacDir), PIE);
  mouth = abs( (frameCount*3)%90 -45 ) ;
}
int now=0;//now we are drawin 0 on the map[y][x]
void pacMove(int dir){
  if(alpha!=0) {ppacXX=pacXX; ppacYY=pacYY; }
  if(dir==0 && map[pacYY][pacXX+1]%5==0) {alpha=0; ppacXX=pacXX; pacXX++; pacDir=0;}
  if(dir==90 &&map[pacYY+1][pacXX]%5==0) {alpha=0; ppacYY=pacYY; pacYY++; pacDir=90;}
  if(dir==180&&map[pacYY][pacXX-1]%5==0) {alpha=0; ppacXX=pacXX; pacXX--; pacDir=180;}
  if(dir==270&&map[pacYY-1][pacXX]%5==0) {alpha=0; ppacYY=pacYY; pacYY--; pacDir=270;}  
}
void keyPressed(){
  if(keyCode==RIGHT)pacMove(0);
  if(keyCode==DOWN) pacMove(90);
  if(keyCode==LEFT) pacMove(180);
  if(keyCode==UP)   pacMove(270);
  if(key=='0') now=0;
  if(key=='1') now=1;
  if(key=='2') now=2;
  if(key=='3') now=3;
  if(key=='4') now=4;
  if(key=='5') now=5;
  if(key=='6') now=6;
  if(key=='7') now=7;
  if(key=='8') now=8;
  if(key=='9') now=9;
}
void mouseDragged(){
  int x= int(mouseX/S), y= int(mouseY/S);
  map[y][x]=now;
 // float dx=mouseX-pmouseX, dy=mouseY-pmouseY;
 // if(abs(dx)> 2* abs(dy)) map[y][x]=8;
 // if(abs(dy)> 2* abs(dx)) map[y][x]=4;
}

沒有留言:

張貼留言