2020年3月27日 星期五

正課 Week 04_07166046

PImage imgBG;
int []x={0,0,0,0,0}; //宣告陣列
int []y={0,0,0,0,0}; //宣告陣列
void setup(){
  size(261,435); //size要與背景圖相同
  imgBG=loadImage("background.jpg");
}
void draw(){
  background(imgBG);
  circle(x[0] ,y[0] ,40); 
}
void mousePressed(){
  x[0]= mouseX;  //滑鼠點擊時,子彈 (圓圈) 出現在x[0],y[0]的位置
  y[0]= mouseY;
}


















PImage imgBG;
int []x={0,0,0,0,0};
int []y={0,0,0,0,0};
int n=0;   //子彈的數目,現在子彈數量設為0;
void setup(){
  size(261,435);
  imgBG=loadImage("background.jpg");
}
void draw(){
  background(imgBG);
  for(int i=0;i<5;i++){     //for迴圈,最多5顆子彈
    circle(x[i] ,y[i] ,40);
  }
}
void mousePressed(){
  if(n>=5) return;    //當子彈數目>=5 , 讓程式不出錯(因為陣列只有5個位置)
  x[n]= mouseX;    
  y[n]= mouseY;
  n++;

}

















PImage imgBG;
int []x={0,0,0,0,0};
int []y={0,0,0,0,0};
int n=0;
void setup(){
  size(261,435);
  imgBG=loadImage("background.jpg");
}
void draw(){
  background(imgBG);
  for(int i=0;i<5;i++){
    circle(x[i] ,y[i] ,40);
  }
}
void mousePressed(){
  //if(n>=5) return;
  x[n]= mouseX;
  y[n]= mouseY;
  n++;
  n= (n+1)%5;   //當子彈超過5顆,第6顆會拿第1顆的來補上
}























瘋狂程設進階題複習

(函數找最大整數的數字)












#include<iostream>
using namespace std;
int max_digit(int n)
{
int ans= 0;  //先將答案設為0
while(n>0)  //n>0 時就執行迴圈
{
int now= n%10;  //變數now等於輸入的正整數n除10取餘數(找個位數)
if(now>ans) ans= now; 
n= n/10;   
}
return ans;  //回傳答案值給函數
}
int main(){
  int n;cin>>n;
  cout<<"["<<max_digit(n)<<"]";
  return 0;
}
/* 上方C++ 的 main 函數 等價於 下方 C 的 main 函數
int main(void){
  int n;
  scanf("%d", &n);
  printf("[%d]", max_digit(n));
  return 0;
}

*/
------------------------------------------------------------------

(擲骰統計)











#include <stdio.h>
int main()
{
int a1=0, a2=0, a3=0, a4=0, a5=0, a6=0;
char now;
while(scanf("%c", &now)==1) 
{
if(now=='1') a1++;
if(now=='2') a2++;
if(now=='3') a3++;
if(now=='4') a4++;
if(now=='5') a5++;
if(now=='6') a6++;
}
printf("1:%d\n", a1);
printf("2:%d\n", a2);
printf("3:%d\n", a3);
printf("4:%d\n", a4);
printf("5:%d\n", a5);
printf("6:%d\n", a6);

}


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

(函數判斷質數)











#include <iostream>
using namespace std;
int prime(int n)
{
int bad=0;
for(int i=2;i<n;i++)          //質數: 除了1和n可整除,其他都不可
{
if(n%i==0) bad=1;   //整除的話就不是質數
}
if(bad==0) return 1;  //是質數,回傳1給函式
else return 0;

}
int main(){
  int n;cin>>n;
  cout<<"["<<prime(n)<<"]";
  return 0;
}
/* 上方 C++ 的 main 函數 等價於 下方 C 的 main 函數
int main(void){
    int n;
    scanf("%d", &n);
    printf("[%d]", prime(n));
    return 0;
}

*/


-------------------------------
回到P語言

















int []x={1,1,1,0};
size(400,100);
for(int i=0;i<4;i++)
{
  if(x[i]== 1) fill(255,0,0);    //陣列位置等於1時,填入紅色
  else fill(255);                   //不是的話填入白色  
  rect(i*100, 0, 100, 100);  //方塊xy座標,大小

}


-------------------------------------
(改良: 二維陣列)
















(5x5)

int [][]x={           //口訣: 左手i右手j
  {0,1,1,0,1},
  {1,1,0,1,0},
  {1,0,1,0,0},
  {0,1,0,0,1},
  {0,1,1,1,1} };
size(500,500);
for(int i=0;i<5;i++){
  for(int j=0;j<5;j++){
     if(x[i][j]==1) fill(255,0,0);
     else fill(128);
     rect(j*100, i*100, 100, 100);   //j對應x座標,i對應y座標
  }

}


----------------------------------------
(回到射擊子彈)


















PImage imgBG;
int []x={0,0,0,0,0};
int []y={0,0,0,0,0};
int []r={10,10,10,10,10};  //表示圓的大小
int n=0;
void setup(){
  size(261,435);
  imgBG=loadImage("background.jpg");
}
void draw(){
  background(imgBG);
  for(int i=0;i<5;i++){
    circle(x[i] ,y[i] ,r[i]);   //座標xy,圓大小
  }
  if(mousePressed) r[now]++;  //如果點擊滑鼠,圓大小增加
}
int now=0;
void mousePressed(){
  x[n]= mouseX;
  y[n]= mouseY;
  r[n]=10;    //設回原來大小
  now=n;    //現在在用的那顆是誰
  n= (n+1)%5;   //回收子彈,下次用到最舊的那顆

}


沒有留言:

張貼留言