2020年6月19日 星期五

黃姓小女紙寫程式~~Week17

Week 17

今天的的第一項任務就是要讓電腦上的線可以自己反覆的跳動,接著我們一步一步的來,先畫出我們的主角吧!


程式碼:
                void setup( ){
                    size(300,300);
                 }
                void draw( ){
                    background(#002966);    //背景設為藍色
                    stroke(#b7efff);                //線和邊框設為淺藍色
                    line(100,150,200,150); 
                    fill(#b7efff);                       //把圓形填滿淺藍色
                    ellipse(100,150,13,13);  
                    ellipse(200,150,13,13);  
                }

第二步就是我們要讓線可以移動,不是死板板的站在那,還可以變化它的長度!


程式碼:
                void setup( ){
                    size(300,300);
                }
                float x=100,y=150;
                void draw( ){
                    background(#002966);
                    stroke(#b7efff);
                    line(x,y,200,150);
                    fill(#b7efff);
                    ellipse(x,y,13,13);
                    ellipse(200,150,13,13); 
                }
                void mouseDragged( ){
                    x=mouseX;
                    y=mouseY;
                }

第三步,讓現在的線超過原本的長度時會自己彈回去,不懂的話就實作看看就會比較明白


程式碼:
                void setup( ){
                    size(300,300);
                }
                float x=100,y=150;
                void draw( ){
                    background(#002966);
                    stroke(#b7efff);
                    line(x,y,200,150);
                    fill(#b7efff);
                    ellipse(x,y,13,13);
                    ellipse(200,150,13,13); 
                    if(!mousePressed) {
                       float dx =x-200; //x的變化量
                       float dy =y-150;  //y的變化量
                       float len=sqrt(dx*dx+dy*dy);  //sqrt()開根號
                       x- =dx*(len-100)/len;  //讓線回到原本的長度
                       y- =dy*(len-100)/len;  //同上
                   }
                }
                void mouseDragged( ){
                    x=mouseX;
                    y=mouseY;
                }

第四步 因為線的速度太快,要變慢0.1倍


程式碼:
                void setup( ){
                    size(300,300);
                }
                float x=100,y=150;
                void draw( ){
                    background(#002966);
                    stroke(#b7efff);
                    line(x,y,200,150);
                    fill(#b7efff);
                    ellipse(x,y,13,13);
                    ellipse(200,150,13,13); 
                    if(!mousePressed) {
                       float dx =x-200; 
                       float dy =y-150; 
                       float len=sqrt(dx*dx+dy*dy);  
                       x- =dx*(len-100)/len*0.1
                       y- =dy*(len-100)/len*0.1 
                   }
                }
                void mouseDragged( ){
                    x=mouseX;
                    y=mouseY;
                }

最後的最後,要讓線固定的距離跳就可以了


程式碼:
                void setup( ){
                    size(300,300);
                }
                float x=100,y=150;
                void draw( ){
                    background(#002966);
                    stroke(#b7efff);
                    line(x,y,200,150);
                    fill(#b7efff);
                    ellipse(x,y,13,13);
                    ellipse(200,150,13,13); 
                    if(!mousePressed) {
                       float dx =x-200; 
                       float dy =y-150; 
                       float len=sqrt(dx*dx+dy*dy);
                       float f=(len-100);//拉力的大小
                       dx/=len;//單位長度
                       dy/=len;//單位長度
                       vx-=f*dx*0.01;//x坐標的速度 彈性係數(0.01)愈大,速度愈快
                       vy-=f*dy*0.01;//y坐標的速度 彈性係數(0.01)愈大,速度愈快
                       x+=vx;//x坐標以vx的速度移動
                       y+=vy;//y坐標以vy的速度移動
                   }
                }
                void mouseDragged( ){
                    x=mouseX;
                    y=mouseY;
                }
程式碼:
void setup()
{
  size(400,300);
}
float x=100,y=150;
void draw()
{
  background(#002966);//背景設為藍色
  ellipse(x,y,50,50);//畫圓形
  float dx=x-mouseX;//x的變化量
  float dy=y-mouseY;//y的變化量
  float len=sqrt(dx*dx+dy*dy);//sqrt()開根號
  x-=dx*0.1;//x坐標接近
  y-=dy*0.1;//y坐標接近
}


程式碼:
void setup()
{
  size(400,300);
}
float x=100,y=150;
void draw()
{
  background(#002966);//背景設為藍色
  ellipse(x,y,50,50);//畫圓形
  float dx=x-mouseX;//x的變化量
  float dy=y-mouseY;//y的變化量
  float len=sqrt(dx*dx+dy*dy);//sqrt()開根號
  x-=dx*(len-100)/len*0.1;//如果太接近會退後
  y-=dy*(len-100)/len*0.1;//如果太接近會退後
}
程式碼:
#include <stdio.h>
int main()
{
    FILE*fout=fopen("my_first_file.txt","w+");
    printf("Hello World");
    fprintf(fout,"Hello World");
}
程式碼:
#include <stdio.h>
char line[1000];
int main()
{
    //FILE*fout=fopen("my_first_file.txt","w+");
    //printf("Hello World");
    //fprintf(fout,"Hello World");
    scanf("%s",line);
    printf("=%s=",line);
}

程式碼:
#include <stdio.h>
char line[1000];
int main()
{
    //FILE*fout=fopen("my_first_file.txt","w+");
    //printf("Hello World");
    //fprintf(fout,"Hello World");
    FILE*fin=fopen("my_first_file.txt","r");
    fscanf(fin,"%s",line);
    printf("=%s=",line);
}

沒有留言:

張貼留言