顯示具有 06160832_葉建鑫 標籤的文章。 顯示所有文章
顯示具有 06160832_葉建鑫 標籤的文章。 顯示所有文章

2020年6月18日 星期四

奪命連環Code

今天我們要學幾個好玩的小遊戲
首先我們做個背景
void setup(){
  size(300,300);
}
void draw(){
    background(#002966);
    fill(#b7efff);
    noStroke();
    ellipse(100,150,13,13);
    ellipse(200,150,13,13);
}
讓它可以跟著滑鼠動
float x=200,y=150;
void setup(){
  size(300,300);
}
void draw(){
    background(#002966);
    stroke(#b7efff);
    line(100,150,x,y);
    fill(#b7efff);
    noStroke();
    ellipse(100,150,13,13);
    ellipse(200,150,13,13);
}
void mouseDragged(){
     x=mouseX;
     y=mouseY;
}
變成固定的長度
float x=200,y=150;
void setup(){
  size(300,300);
}
void draw(){
    background(#002966);
    stroke(#b7efff);
    line(100,150,x,y);
    fill(#b7efff);
    noStroke();
    ellipse(100,150,13,13);
    ellipse(200,150,13,13);
    if(!mousePressed){
       float dx=x-100,dy=y-150;
       float len=sqrt(dx*dx+dy*dy);
       x-=dx*(len-100)/len;
       y-=dy*(len-100)/len;
    }
}
void mouseDragged(){
     x=mouseX;
     y=mouseY;
}

移動使用虎克公式
float x=200,y=150,vx=0,vy=0;
void setup(){
  size(300,300);
}
void draw(){
    background(#002966);
    stroke(#b7efff);
    line(100,150,x,y);
    fill(#b7efff);
    noStroke();
    ellipse(100,150,13,13);
    ellipse(x,y,13,13);
    if(!mousePressed){
       float dx=x-100,dy=y-150;
       float len=sqrt(dx*dx+dy*dy);
       vx-=dx*(len-100)/len*0.001;
       vy-=dy*(len-100)/len*0.001;
       x+=vx;
       y+=vy;
    }
}
void mouseDragged(){
     x=mouseX;
     y=mouseY;
}

類似養魚程式

float x=200,y=150;
void setup(){
  size(400,300);
}
void draw(){
    background(#002966);
 
    fill(255);
    rect(x,y,80,20);
    if(!mousePressed){
       float dx=x-mouseX,dy=y-mouseY;
       float len=sqrt(dx*dx+dy*dy);
     
       x-=dx*0.1;
       y-=dy*0.1;
    }
}

2020年6月4日 星期四

GOGOGO~~~

複習出錯的題目 超速之王
#include<stdio.h>
int n[10];
int main(){
    int s,g,max=1001;
    for(int i=1;i<=10;i++){
        scanf("%d",&n[i]);
        if(n[i]<max){
           max=n[i];
           g=i;
           }
        }
        s=60*60*1.2/max;
        printf("%d %d",g,s);
     
     }
十數排序
#include<stdio.h>
int n[10];
int main(){
    int i=0,j=0,t=0;
    for(i=0;i<10;i++){
        scanf("%d",&n[i]);
        }
    for(i=0;i<10;i++){
        for(j=i;j<10;j++){
            if(n[j]<n[i]){
               t=n[j];
               n[j]=n[i];
               n[i]=t;
               }
            }
        }
     for(i=9;i>=0;i--){
         printf("%d ",n[i]);
         }
     }
陣列出現次數
#include<stdio.h>
int a[10];
int main(){
   
    int N=0,n,c=0;
    for(int i=1;i<10;i++){
        scanf("%d",&a[i]);
        if(a[i]==0){
           N=i;
           break;
           }
       }
       scanf("%d",&n);
     
     for(int i=1;i<N;i++){
     if(a[i]==n)c++;
   }
    printf("%d\n",c);
    }

2020年5月28日 星期四

可撥音樂了

播音樂
import  ddf.minim.*;
Minim minim;
AudioPlayer player;
void setup(){
     minim = new Minim(this);
     player =minim.loadFile("song.mp3");
     player.play();
}
void draw(){
}

憤怒鳥程式

PImage imgBird;
void setup() {
  size(500, 400);
  imgBird=loadImage("bird.png");//圖檔如果沒有放好,會當掉 pointer
  imageMode(CENTER);//以正中心,當座標
}
float birdX=100, birdY=300, oldX, oldY, vx=0, vy=0;//之前的鳥在哪裡
boolean bMoving=false;//if(判斷) ex. if(bMoving)...
void draw() {
  background(255);//清背景
  image(imgBird, birdX, birdY, 100, 100);//不能一直跟著mouse動,改用birdX,birdY
  if (bMoving) line(birdX, birdY, oldX, oldY);//有按到,才能動它
  birdX+=vx;
  birdY+=vy;//鳥要照速度去飛!!!
  if (birdX>450 || birdX<50) vx = -vx*0.95;//撞到邊界,會改變方向,相反的方向
  if (birdY>350 || birdY<50) vy = -vy*0.95;//撞到邊界,會改變方向,相反的方向
}
void mouseReleased() {
  if (bMoving) {
    bMoving=false;//放開時,就不能動了
    vx=(oldX-mouseX)/10;
    vy=(oldY-mouseY)/10;// 0.1倍
  }
}
void mousePressed() {//按下去,才會開始動
  if ( dist(mouseX, mouseY, birdX, birdY)<50) {
    oldX=birdX;
    oldY=birdY;
    bMoving=true;///按下去時,如果有按到,才能動它
  }
}
void mouseDragged() {//按下去,才會開始動
  if (bMoving) {//有按到,才能動它
    birdX=mouseX;
    birdY=mouseY;
  }
}

2020年5月21日 星期四

我沒有半髮~~~~~~

#include<stdio.h>
int f(int n){
    if(n<10)
    return n%10;
    if(n>10&&n<100)
    return (n/10%10)+n%10*10;
    if(n>100&&n<1000)
    return (n/100%10)+(n/10%10)*10+n%10*100;
    if(n>1000)
    return n/1000+(n/100%10)*10+(n/10%10)*100+n%10*1000;
    }
int main(){
    int a;
    scanf("%d",&a);
    printf("%d\n",f(a));
    }
#include<stdio.h>
int main(){
    int n,c=0;
    scanf("%d",&n);
       c+=(n/1000)*8+(n/100%10)*4+(n/10%10)*2+(n%10);
    printf("%d\n",c);
 }
挑戰CPE的題目
#include<stdio.h>
int genBig(int n){
    int ans=n;
    while(n>0){
        int now=n%10;
        n/=10;
        ans+=now;
    }
    return ans;
}
int main(){
     int T;
     scanf("%d",&T);
     for(int t=0;t<T;t++){
        int n;
        scanf("%d",&n);
        int ans=0;
        for(int small=1;small<=n;small++){
            if(genBig(small)==n){
                ans=small;
                break;

            }
        }
        printf("%d\n",ans);
     }

   }


PImage imgBird;
void setup(){
    size(500,400);
    imgBird=loadImage("bird.png");
    imageMode(CENTER);
}
void draw(){
    background(255);
    image(imgBird,birdX,birdY,100,100);
 
}



PImage imgBird;
void setup(){
    size(500,400);
    imgBird=loadImage("bird.png");
    imageMode(CENTER);
}
float birdX=100,birdY=300,oldX,oldY;
void draw(){
    background(255);
    image(imgBird,birdX,birdY,100,100);
    if(mousePressed) line(birdX,birdY,oldX,oldY);
   
}
void mousePressed(){
     oldX=birdX; oldY=birdY;
}
void mouseDragged(){
     birdX=mouseX; birdY=mouseY;
}


2020年5月14日 星期四

gggodness 複習會考GOGOGO



開始練習會考題目
第一題 3的倍數和
關鍵懂得如何使用for迴圈把數字加起來
第二題 區間測素
重點在於如何使用換算數字去解題
第三題 You can say 11
學會如何解CPE題目
我們首先了解如何讀入所有數字
再來我了解如何用字串把題目給的1000位數讀入
char line[1001];

    while(1){
       scanf("%s",line);
讀入後還是不能直接判斷,因此我們用到了for迴圈把1000位數分為偶數位以及奇數位,個別加起來
 for(int i=0;line[i]!=0;i++){
          if(i%2==0)ans1+=line[i]-'0';
          else ans2+=line[i]-'0'; 
          }
最後把加起來的奇偶數進行判斷
if((ans1-ans2)%11==0){

#include<stdio.h>
#include<string.h>
char line[1001];
int main(){ 
    while(1){
       scanf("%s",line);
       if(strcmp(line,"0")==0)break;
       int ans1=0,ans2=0;
       for(int i=0;line[i]!=0;i++){
          if(i%2==0)ans1+=line[i]-'0';
          else ans2+=line[i]-'0';
          }
       if((ans1-ans2)%11==0){
   
       printf("%s is a multiple of 11.\n",line);
       }
       else{
        printf("%s is not a multiple of 11.\n",line);
        }
  }
}


2020年5月7日 星期四

bubblesort

老師用P語言教泡泡排序法
int []a=new int[10];//Java's Array
//int []a={6,3,5,9,1,0,4,2,7,8};
//int []a={1,2,3,5,0,4,6,7,8,9};
//int []a={9,8,7,6,5,4,3,2,1,0};
void setup(){
  size(500,800);
  for(int i=0;i<10;i++){//random choose number
    a[i]=int(random(10));//亂數決定數字
  }
  textSize(36);
  textAlign(LEFT,TOP);
  showArray(y);
}
int y=0;
void showArray(int y){
  for(int i=0;i<10;i++){
    fill(255);  rect(i*50, y, 50,50);
    fill(0);         text(a[i], i*50, y);
  }
}
void draw(){

}
void mousePressed(){
  for(int i=0; i<10-1;i++){
    if(a[i] > a[i+1]){
      int temp=a[i];
      a[i]=a[i+1];
      a[i+1]=temp;
      fill(255,0,0,128); rect(i*50, y, 100,50);
    }
  }
  y+=50;
  showArray(y);
}
改良過的泡泡排序法
int []a=new int[10];//Java's Array
//int []a={6,3,5,9,1,0,4,2,7,8};
//int []a={1,2,3,5,0,4,6,7,8,9};
//int []a={9,8,7,6,5,4,3,2,1,0};
void setup(){
  size(500,800);
  for(int i=0;i<10;i++){//random choose number
    a[i]=int(random(10));//亂數決定數字
  }/// Java是用 int(3.14)會轉成3, C/C++ int b=3.14變3
  textSize(32);
  textAlign(LEFT,TOP);//文字改用左上角
  showArray(y);
}
int y=0;
void showArray(int y){      //左上角
  for(int i=0;i<10;i++){//rect(x,y, w,h)四邊形
    fill(255);     rect(i*50, y, 50,50);
    fill(0); text(a[i], i*50, y);
  }      ///秀文字(字,  x,    y) 放哪裡 (左下角)
}
void draw(){
  
}
void mousePressed(){
  for(int i=0; i<10-1;i++){
    if(a[i] > a[i+1]){
      int temp=a[i];
      a[i]=a[i+1];
      a[i+1]=temp;
      fill(255,0,0,128); rect(i*50, y, 100,50);
    }
  }
  y+=50;
  showArray(y);
}

瘋狂程設進階題再複習
反序列印
#include<stdio.h> 
int main(){
   int a[11],co=0,n;
   while(scanf("%d",&n)==1){
       a[co++]=n;
       }
   for(int i=co-2;i>=0;i--){
      printf("%d ",a[i]);
      }
      printf("\n");
   }
大小寫轉換
#include<stdio.h>
int main(){
    char x;
    while(scanf("%c",&x)!=EOF){
       if(x>='A'&&x<='Z')
         x+=32;
       else if(x>='a'&&x<='z')
         x-=32;
      printf("%c",x);
      }
  }
做出次方函數
#include<stdio.h>
int MYPOWER(int x,int y){
     int s=x;
     for(int i=1;i<y;i++){
         s*=x;
         }
      return s;
}
int main(void)
{
 int a,b;
 scanf("%d%d",&a,&b);
 printf("[%d]",MYPOWER(a,b));
 return 0;
}
做出Lyto color遊戲了
void setup() {
   size(300, 500);
   colorMode(HSB);
}
int N=5;
int H=255,S=255,B=255;
void draw() {
  background(0);
  int R=300/N,w=R/2;
  for (int x=0; x<N; x++) {
    for (int y=0; y<N; y++) {
      fill(H,S,B);
      ellipse(0+w+x*R,200+w+y+R,R,R);
    }
  }
}
void mousePressed(){
    H+=16;
    if(H>255)H=0;
}



2020年4月30日 星期四

迴圈變得更理解了

反序數字
#include<stdio.h>
int main(){
    int n;
   scanf("%d",&n);
   int n1=n;
   int ans=0;
   while(n>0){
       ans*=10;
       int now=n%10;
       n/=10;
      ans+=now;
    }
     int n2=ans;
     printf("%d+%d=%d\n",n1,n2,n1+n2);
}
 
分式化簡
#include<stdio.h>
int gcd(int m,int n){
    if(m==0)return n;
    else return gcd(n%m,m);
        }
int main(){
    int a,b,x;
    scanf("%d%d",&a,&b);
    x=gcd(a,b);
    printf("%d %d\n",a/x,b/x);
    }
加分題Cola 
#include<stdio.h>
int main(){
     int n,c;
     while(scanf("%d",&n)==1){
          c=0;
          while(n>=3)
          {
          c+=3;
          n-=2;
          }
          if(n==2)c+=3;
          else c+=n;
          printf("%d\n",c);
          }

      }
要做出一個Lyto Different Color
    先有四個小球
void setup(){
     size(300,500);
}
int r=0;
void draw(){
     background(0); 
     ellipse(70,200+75,r,r);
     ellipse(70,200+75+150,r,r);
     ellipse(70+150,200+75,r,r);
     ellipse(70+150,200+75+150,r,r);
     if(r<145) r+=2;
     else r=0;

}

用迴圈是
void setup(){
     size(300,500);
}
int r=0;
void draw(){
     background(0); 
     for(int x=0;x<3;x++)
          for(int y=0;y<3;y++){
               ellipse(50+x*100,200+50+y*100,r,r);
          }
     if(r<100) r+=2;
     else r=0;
}
void setup() {
   size(screen.width, screen.height);
  ansX= 3;
  ansY= 2;
}
int r=0;
int ansX, ansY, win=0;
void draw() {
  if (win==1) background(255, 255, 0);
  else background(0);
  int n=5;
  int w=300/(2*n);
  for (int x=0; x<n; x++) {
    for (int y=0; y<n; y++) {
      if (x==ansX && y==ansY)      fill(150);
      else fill(255);
      int cx=w+x*2*w, cy=200+w+y*2*w;
      ellipse(cx, cy, r, r);
      if (mousePressed && dist(mouseX, mouseY, cx, cy)<w) {
        if (ansX==x && ansY==y) {
          win=1; 
          r=0;
          ansX= int(random(n));
          ansY= int(random(n));
        }
      }
    }
    if (r< 2*w) r+=2;
  }
}
   

2020年4月23日 星期四

今天用P語言重現小精靈


小精靈移動
void setup(){
     size(600,300);
}
int x=50,y=50,a=45,da=1;
void draw(){
    background(0);
    fill(#F5ED02);
    arc(x,y,100,100,radians(a),radians(360-a),PIE);
    x++;
    a+=da;
    if(a>60) da-=1;
    if(a<=0) da+=1;
  }

小精靈吃東西
void setup(){
     size(800,600);
}
int [][]bean={
  {1,1,1,1,1,1,1,1},
  {1,1,1,1,1,1,1,1},
  {1,1,1,1,1,1,1,1},
  {1,1,1,1,1,1,1,1},
  {1,1,1,1,1,1,1,1},
  {1,1,1,1,1,1,1,1}};
int x=50,y=50,a=45,da=1;
void draw(){
    background(0);
    fill(#F5ED02);
    for(int i=0;i<6;i++){
        for(int j=0;j<8;j++){
            if(bean[i][j]==1)ellipse(j*100+50,i*100+50,6,6);
            if(dist(x,y,j*100+50,i*100+50)<50)  bean[i][j]=0;
        }
    }
    arc(x,y,100,100,radians(a),radians(360-a),PIE);
    x+=3;
    if(x>800){
      x=0;
      y=y+100;
    }
    a+=da;
    if(a>60) da=-2;
    if(a<=0) da=+2;
  }


2020年4月16日 星期四

程式設計06160832


程式複習:
自訂函式最大值max與最小值min求出兩者之差
重點return要懂
#include<iostream>
using namespace std;
int max(int a,int b,int c,int d){
   int big=0;
   big=a;
   if(big<b)big=b;
   if(big<c)big=c;
   if(big<d)big=d;
   return big;
   }
int min(int a,int b,int c,int d){
   int sm=0;
   sm=a;
   if(sm>b)sm=b;
   if(sm>c)sm=c;
   if(sm>d)sm=d;
   return sm;
   }
int main(){
  int a,b,c,d;cin>>a>>b>>c>>d;
  cout<<(max(a,b,c,d)-min(a,b,c,d));
  return 0;
}
字串中的數字個數
#include<stdio.h>
int main(){
   char line[200];
   scanf("%s",line);
   int ans=0;
   for(int i=0;line[i]!=0;i++){
      char c=line[i];
      if(c>='0'&&c<='9')ans++;
      }
      printf("%d",ans);
      }
奇數之和
#include<stdio.h>
int main(){
   int n,s=0;
   scanf("%d",&n);
   for(int i=1;i<=n;i+=2){
      s+=i;
      }
   printf("%d",s);
 }
判斷回文
#include<stdio.h>
#include<string.h>
int main(){
    char c[85];
    int i,l,bad=0;
    scanf("%s",c);
       l=strlen(c);
       for(i=0;i<l;i++)
       {
       if(c[i]!=c[l-i-1])bad=1;
        
       }
    if(bad==1)printf("NO");
    else  
    printf("YES");
    }
Hashmat the brave warrior :  
#include<stdio.h>
int main(){
    long long int a,b,n=0;
    while(scanf("%lld %lld",&a,&b)!=EOF){ 
    if(a>0&&b>0){
    n=b-a;
    if(n>0){
    printf("%lld\n",b-a);
      }
      else
        printf("%lld\n",a-b);
     }
   }
}
小精靈嘴巴變大
void setup() {
  size(640, 360);
}
int angle=45;
void draw() { 
  background(255);
  angle=mouseX;
  arc(100,100,100,100,radians(angle),radians(360-angle),PIE);
  
}
嘴巴自動開合
void setup() {
  size(360, 360);
}
int angle=45;
void draw() { 
  background(255);
  angle=(frameCount*2)%120;
  if(angle>60) angle=120-angle;
  arc(100,100,100,100,radians(angle),radians(360-angle),PIE);
  
}



幫小精靈填顏色然後換方向
void setup() {
  size(360, 360);
}
int angle=45;
void draw() {
  background(255);
  angle=(frameCount*2)%120;
  if(angle>60) angle=120-angle;
  fill(255,251,0);
  arc(100,100,100,100,radians(angle+270),radians(360-angle+270),PIE);
}
 



2020年4月9日 星期四

06160832指標

一開始老師教我們指標
#include<stdio.h>
int main(){
 int a=100;
 int b=200;
 int *p;
 p=&a;
 printf("%d\n",*p);
 p=&b;
 printf("%d\n",*p);
 }
就是指到位置做處理
然後又寫了能切換圖片的程式
PImage img1;
PImage img2;
PImage img3;
PImage img;
void setup(){
     size(500,500);
     img1=loadImage("img1.png");
     img2=loadImage("img2.png");
     img3=loadImage("img3.png");
     img=img3;
     }
void draw(){
      background(255);
      image(img,0,0);
}
void keyPressed(){
     if(keyCode==LEFT)img=img2;
     if(keyCode==RIGHT)img=img1;
     }
void keyReleased(){
     img=img3;
}
按左右鍵會切換
接著讓他移動八
PImage img1;
PImage img2;
PImage img3;
PImage img;
float x=100,y=100,vx=0;
void setup(){
     size(500,500);
     img1=loadImage("img1.png");
     img2=loadImage("img2.png");
     img3=loadImage("img3.png");
     img=img3;
     }
void draw(){
      background(255);
      image(img,x,y);
      x+=vx;
}
void keyPressed(){
     if(keyCode==LEFT){
       img=img2;
       vx=-1;
     }
     else if(keyCode==RIGHT){
       img=img1;
       vx=+1;
     }
}
void keyReleased(){
     img=img3;
     vx=0;
}

2020年3月26日 星期四

複習程設GOGOGO

了解除餘數在C/C++裡的概念
#include<stdio.h>
int main(){
    int n;
    scanf("%d",&n);
    printf("%d   %d   %d   %d   %d",n/10000,n/1000%10,n/100%10,n%1000/10%10,n%10);
    }

了解質數的概念
#include <iostream>
using namespace std;
int prime(int n){
    for(int i=2;i<n;i++){
      if(n%i==0){
       return 0;
       }
    }
   return 1;
}

int main(){
  int n;cin>>n;
  cout<<"["<<prime(n)<<"]";
  return 0;
}
先繞過陣列講解字串的概念
#include<stdio.h>
int main(){
   int a=0,b=0,c=0,d=0,e=0,f=0;
   char n;
   while((n=getchar())!='\n'){
       if(n=='1')a++;
       if(n=='2')b++;
       if(n=='3')c++;
       if(n=='4')d++;
       if(n=='5')e++;
       if(n=='6')f++;
       }
       printf("1:%d\n",a);
       printf("2:%d\n",b);
       printf("3:%d\n",c);
       printf("4:%d\n",d);
       printf("5:%d\n",e);
       printf("6:%d\n",f);
      }
做一個球體往下
int []x=new int[1000];
int []y=new int[1000];
color [] c = new color[1000];
int n=0;
void setup(){
  size(400,400);
}
void draw(){
     background(255);
     for(int i=0;i<n;i++){
         fill(c[i]);
         circle(x[i],y[i],30);
         y[i]-=2;
     }
}
void mousePressed(){
     x[n]=mouseX;
     y[n]=mouseY;
     c[n]=color(random(255),random(255),random(255));
     n++;
}

點一個球體往上



int []x=new int[1000];
int []y=new int[1000];
int []r=new int[1000];
color [] c = new color[1000];
int n=0;
void setup(){
  size(400,400);
}
void draw(){
     background(255);
     for(int i=0;i<n;i++){
         fill(c[i]);
         circle(x[i],y[i],r[i]);
         y[i]-=2;
     }
}
void mousePressed(){
     x[n]=mouseX;
     y[n]=mouseY;
     r[n]=10;
     c[n]=color(random(255),random(255),random(255));
     n++;
}
改變球體的大小
int []x=new int[1000];
int []y=new int[1000];
int []r=new int[1000];
color [] c = new color[1000];
int n=0;
void setup(){
  size(400,400);
}
void draw(){
     background(255);
     for(int i=0;i<n;i++){
         fill(c[i]);
         circle(x[i],y[i],r[i]);
         y[i]-=2;
     }
     if(mousePressed)r[n-1]++;
}
void mousePressed(){
     x[n]=mouseX;
     y[n]=mouseY;
     r[n]=10;
     c[n]=color(random(255),random(255),random(255));
     n++;
}

學會用類別class
提取物件
Bubble [] b=new Bubble[1000];
int n=0;
void setup() {
  size(400, 400);
}
void draw() {
  background(255);
  for (int i=0; i<n; i++) {      
    b[i].drawAndUpdate();
  }
  if (mousePressed)b[n-1].r++;
}
void mousePressed() {
  b[n]=new Bubble(mouseX, mouseY, 10);
  n++;
}

class Bubble {
  int x;
  int y;
  int r;
  color c;
  Bubble(int _x,int _y,int _r){
    x=_x; y=_y; r=_r;
    c=color(random(255),random(255),random(255));
  }
  void drawAndUpdate(){
    fill(c);
    circle(x,y,r);
    y--;
  }
}
了解矩陣的概念
按按看
int [][]table=new int[6][6];
void setup() {
  size(300, 300);
}
void draw(){
  background(128);
  for (int i=0; i<6; i++) {
    for (int j=0; j<6; j++) {
      if (table[i][j]==1)fill(255, 0, 0);
      else fill(128);
      rect( j*50, i*50, 50, 50);
    }
  }
}
void mousePressed(){
     int x = (mouseX)/50;
     int y = (mouseY)/50;
     table[y][x]=1;
}



2020年3月19日 星期四

做一個可以移動的物件

做三張去背的圖
接著在程式裡把圖片讀入

PImage img0,img1,img2;
void setup() {
  size(1600,1000);
  img0 = loadImage("p1.png");
  img1 = loadImage("p2.png");
  img2 = loadImage("p3.png");

int userX=250,userY=250;
void draw() {
    background(128);
    if(keyPressed && keyCode==LEFT){
      image(img0,userX,userY);
      userX--;
    }
    else if(keyPressed && keyCode==RIGHT){
      image(img1,userX,userY);
      userX++;
    }
    else image(img2,userX,userY);
   }


接著背景也可以讀圖片

 PImage img;
void setup() {
  size(768,1280);
  img = loadImage("pic.png");
}
int userX=250,userY=1200;
void draw() {
    background(img);
    ellipse(userX,userY,50,50);
    if(keyPressed && keyCode==LEFT){
      userY-=3;
    }
    if(keyPressed && keyCode==RIGHT){
      userX++;
    }
   }
做出可以社子彈

PImage img;
void setup() {
  size(768,1280);
  img = loadImage("pic.png");
}
int userX=250,userY=1000;
int []buttetX={0,0,0,0,0,0,0,0,0,0,0,0,0};
int []buttetY={0,0,0,0,0,0,0,0,0,0,0,0,0};
int []buttetFlying={0,0,0,0,0,0,0,0,0,0,0,0,0};
int n=0;
void draw() {
    background(img);
    ellipse(userX,userY,50,50);
    if(keyPressed && keyCode==LEFT){
      userY-=3;
    }
    if(keyPressed && keyCode==RIGHT){
      userX++;
    }
    for(int i=0;i<n;i++){
      if(buttetFlying[i]==1){
        ellipse(buttetX[i],buttetY[i],10,5);
        buttetY[i]-=2;
      }
   }
}
void mousePressed(){
   buttetX[n]=userX;
   buttetX[n]=userX;
   buttetFlying[n]=1;
   n++;
}


2020年3月12日 星期四

學P語言06160832

複習上禮拜的畫畫
void setup()
{
  size(800,600);    //畫面大小  
}
void draw()
{
  line(mouseX,mouseY,pmouseX,pmouseY);   //畫線
}


做個隕石看看

在作多顆隕石,利用陣列複習概念

int []x={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
int []y={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
int n=0;
void setup()
{
  size(800, 600);
}
void draw()
{
  background(255);建立背景消殘影
  for (int i=0; i<n; i++) {本來沒有陣列[]方括號,現在在for迴圈裡,多了用陣列的方括號
    circle(x[i], y[i], 20);畫圓當作隕石
    y[i]++;往下掉
    if (y[i]>=600-10) y[i]=600-10;掉到底部會停住
  }
}
void mousePressed() {
  if (n<30) {
    x[n]=mouseX;
    y[n]=mouseY;
    n++;
  }
}