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);
}





沒有留言:
張貼留言