2020年4月10日 星期五

Hello World_Week07

20200410 Teams&指標&人物彈跳


為了讓大家在疫情期間也能上課

一開始先用電腦版的Teams加入程式設計的課程



然後下載手機版的Teams 也打開來試用看看



--------------------------------------------------------------------------------------------------------------------------

再來教了指標

一開始先用CodeBlocks





///指標: (1)宣告 (2)放值 (3)使用
#include <stdio.h>
int main()
{
    int a=100;
    int b=200;
    int *p;///(1)指標宣告(p是一個指標 指到整數)

    p=&a;///(2)指標設定(把a的住址放入p)
    printf("%d\n",*p);///(3)指標使用

    p=&b;///(2)指標設定(把b的住址放入p)
    printf("%d\n",*p);///(3)指標使用
    return 0;
}

--------------------------------------------------------------------------------------------------------------------------

然後用C Tutor一步一步慢慢看





老師說 C語言的發明者說陣列就是指標!

所以為了看出指標跟陣列的關係 再弄另外一個程式





#include <stdio.h>
int a[10]={1,2,3,4,5,6,7,8,9};
int b[10]={9,8,7,6,5,4,3,2,1};
int *p;///宣告指標
int main()
{

    p=a;///原本p=&a
    printf("%d\n",p[3]);///印出a[3]
    p=b;///變成p=&b
    printf("%d\n",p[3]);///印出b[3]
    return 0;
}

--------------------------------------------------------------------------------------------------------------------------

再來複習了之前教過的讓人物左右移動的方法

一開始先讓箭頭跟著鍵盤按下的鍵一起改變



PImage img1;//放真的照片
PImage img2;//放真的照片
PImage img3;//放真的照片
PImage img;//可以切換
void setup()
{
  size(300,300);
  img1=loadImage("img1.png");
  img2=loadImage("img2.png");
  img3=loadImage("img3.png");
  img=img1;//把img1給img用
}
void draw()
{
  image(img,100,100);
}
void keyPressed()
{
  if(keyCode==RIGHT) img=img2;
  if(keyCode==LEFT) img=img3;
}
void keyReleased()//放開按鍵時
{
  img=img1;//img變回img1
}

--------------------------------------------------------------------------------------------------------------------------

再來讓箭頭移動



PImage img1,img2,img3;//放真的照片
PImage img;//可以切換
float x=100,y=100,vx=0;
void setup()
{
  size(300,300);
  img1=loadImage("img1.png");
  img2=loadImage("img2.png");
  img3=loadImage("img3.png");
  img=img1;//把img1給img用
}
void draw()
{
  background(255);
  image(img,x,y);
  x+=vx;
}
void keyPressed()
{
  if(keyCode==RIGHT)
  {
    img=img2;
    vx=1;
  }
  if(keyCode==LEFT)
  {
    img=img3;
    vx=-1;
  }
}
void keyReleased()//放開按鍵時
{
  img=img1;//img變回img1
  vx=0;
}

--------------------------------------------------------------------------------------------------------------------------

再來讓人物(哆啦A夢)可以邊彈跳邊移動



PImage img1,img2,img3;//放真的照片
PImage img;//可以切換
float x=100,y=100,vx=0,vy=-10;//一開始x坐標100 y坐標100 x速度(vx)100 y速度(vy)=-10
void setup()
{
  size(300,300);
  img1=loadImage("Doraemon.png");
  img2=loadImage("img2.png");
  img3=loadImage("img3.png");
  img=img1;//把img1給img用
}
void draw()
{
  background(255);
  image(img,x,y,100,100);//image(img,x,y,寬,高)
  x+=vx;//x坐標加上速度(vx)
  y+=vy;//y坐標加上速度(vy)
  vy+=0.98;//重力加速度(0.98)
  if(y>=200) vy=-vy*0.9;//碰到最底下的時候反彈
}
void keyPressed()
{
  if(keyCode==RIGHT)
  {
    img=img2;
    vx=1;//速度向右
  }
  if(keyCode==LEFT)
  {
    img=img3;
    vx=-1;//速度向左
  }
}
void keyReleased()//放開按鍵時
{
  img=img1;//img變回img1
  vx=0;//速度=0
}

--------------------------------------------------------------------------------------------------------------------------

再來讓人物(哆啦A夢)可以自己邊彈跳邊移動

而且撞到牆的時候可以自行反彈



PImage img;//可以切換
float x=100,y=100,vx=3,vy=-10;//一開始x坐標100 y坐標100 x速度(vx)100 y速度(vy)=-10
void setup()
{
  size(300,300);
  img=loadImage("Doraemon.png");
}
void draw()
{
  background(255);
  image(img,x,y);
  x+=vx;//x坐標加上速度(vx)
  y+=vy;//y坐標加上速度(vy)
  vy+=0.98;//重力加速度(0.98)
  if(y>=200) vy=-vy*0.9;//碰到最底下的時候反彈
  if(x>=200) vx=-vx;//碰到最右邊的時候反彈
  if(x<0) vx=-vx;//碰到最左邊的時候反彈
}

--------------------------------------------------------------------------------------------------------------------------

心得


今天教了上學期有提到過的指標,但之前沒有太深入的了解,所以對於指標的概念還是有點模糊,但今天用C Tutor一步一步慢慢看之後,感覺更清楚了還有今天教的讓人物自己邊彈跳邊移動也很有趣,撞到左右兩側的時候還可以自己反彈!

沒有留言:

張貼留言