20200515 區間測速&You can say 11&簡易版憤怒鳥
今天一開始老師先教了108年程設會考的區間測速
#include <stdio.h>
int main()
{
int t;
scanf("%d",&t);
int ans=60*60*1.2/t;//因為除法不精確,所以要先做完乘法再除
printf("%d",ans);
return 0;
}
--------------------------------------------------------------------------------------------------------------------------
再來教了進階的區間測速-超速之王
#include <stdio.h>
int main()
{
int ansN=0,ansT=999;
for(int i=1;i<=10;i++)
{
int nowT;
scanf("%d",&nowT);
if(nowT<ansT)
{
ansT=nowT;
ansN=i;
}
}
int ans=60*60*1.2/ansT;
printf("%d %d",ansN,ans);
return 0;
}
--------------------------------------------------------------------------------------------------------------------------
然後教了實習課的You can say 11
(11的倍數的條件:如果奇數位跟偶數位相差的值是11的倍數 這個數就是11的倍數)
一開始先全部印出來
#include <stdio.h>
int main()
{
while(1)//1.用while迴圈全部印出來
{
int n;
scanf("%d",&n);
if(n==0) break;
printf("%d is a multiple of 11.\n",n);
}
return 0;
}
-------------------------------------------------------------------------------------------------------------------------
因為有很長的數字 int不夠用 所以改成用字串讀入
#include <stdio.h>
#include <string.h>
char line[1001];
int main()
{
while(1)//1.用while迴圈全部印出來
{
scanf("%s",line);//2.用字串讀入
if(strcmp(line,"0")==0) break;//2.如果line跟0相等就break
if(1) printf("%s is a multiple of 11.\n",line);
else printf("%s is not a multiple of 11.\n",line);
}
return 0;
}
--------------------------------------------------------------------------------------------------------------------------
再來我們要把奇數位跟偶數位分開加起來
#include <stdio.h>
#include <string.h>
char line[1001];
int main()
{
while(1)//1.用while迴圈全部印出來
{
scanf("%s",line);//2.用字串讀入
if(strcmp(line,"0")==0) break;//2.如果line跟0相等就break
int ans1=0,ans2=0;
for(int i=0;???;i++)
{
int c=line[i];
if(i%2==0) ans2+=???;//3.把偶數位加起來
else ans1+=???;//3.把奇數位加起來
}
if(1) printf("%s is a multiple of 11.\n",line);
else printf("%s is not a multiple of 11.\n",line);
}
return 0;
}
--------------------------------------------------------------------------------------------------------------------------
再來我們要把字串讀入的字元變成數字 所以要減'0'
#include <stdio.h>
#include <string.h>
char line[1001];
int main()
{
while(1)//1:用while迴圈全部印出來
{
scanf("%s",line);//2.用字串讀入
if(strcmp(line,"0")==0) break;//2.如果line跟0相等就break
int ans1=0,ans2=0;
for(int i=0;???;i++)
{
int c=line[i];
if(i%2==0) ans2+=c-'0';//3.把偶數位加起來 4.要把字元變成數字要減'0'
else ans1+=c-'0';//3.把奇數位加起來 4.要把字元變成數字要減'0'
}
if(1) printf("%s is a multiple of 11.\n",line);
else printf("%s is not a multiple of 11.\n",line);
}
return 0;
}
--------------------------------------------------------------------------------------------------------------------------
再來要放for迴圈的條件
因為是到0停止 所以只要line[i]不等於0就繼續
#include <stdio.h>
#include <string.h>
char line[1001];
int main()
{
while(1)//1:用while迴圈全部印出來
{
scanf("%s",line);//2.用字串讀入
if(strcmp(line,"0")==0) break;//2.如果line跟0相等就break
int ans1=0,ans2=0;
for(int i=0;line[i]!=0;i++)//5.只要line[i]不等於0就一直做for迴圈
{
int c=line[i];
if(i%2==0) ans2+=c-'0';//3.把偶數位加起來 4.要把字元變成數字要減'0'
else ans1+=c-'0';//3.把奇數位加起來 4.要把字元變成數字要減'0'
}
if(1) printf("%s is a multiple of 11.\n",line);
else printf("%s is not a multiple of 11.\n",line);
}
return 0;
}
--------------------------------------------------------------------------------------------------------------------------
最後要放if的條件
如果奇數位跟偶數位相差的值是11的倍數 這個數就是11的倍數
這樣就完成了!
#include <stdio.h>
#include <string.h>
char line[1001];
int main()
{
while(1)//1:用while迴圈全部印出來
{
scanf("%s",line);//2.用字串讀入
if(strcmp(line,"0")==0) break;//2.如果line跟0相等就break
int ans1=0,ans2=0;
for(int i=0;line[i]!=0;i++)//5.只要line[i]不等於0就一直做for迴圈
{
int c=line[i];
if(i%2==0) ans2+=c-'0';//3.把偶數位加起來 4.要把字元變成數字要減'0'
else ans1+=c-'0';//3.把奇數位加起來 4.要把字元變成數字要減'0'
}
if((ans1-ans2)%11==0) printf("%s is a multiple of 11.\n",line);
//6.如果奇數位跟偶數位相差的值是11的倍數 那這個數就是11的倍數
else printf("%s is not a multiple of 11.\n",line);
}
return 0;
}
--------------------------------------------------------------------------------------------------------------------------
再來複習一下前面用到的小技巧!
小技巧1:把字元減掉'0' 就可以變成數字
#include <stdio.h>
#include <string.h>
int main()
{
char c;
scanf("%c",&c);
printf("你現在讀到的字母是%c,他的值是%d\n",c,c);
printf("小技巧:c-'0'會得到:%d\n",c-'0');
return 0;
}
--------------------------------------------------------------------------------------------------------------------------
小技巧2:line[i]=0的時候停止
#include <stdio.h>
int main()
{
char line[30]="Dreamcatcher";
for(int i=0;line[i]!=0;i++)
{
char c=line[i];
printf("==%c==%d==\n",c,c);
}
return 0;
}
--------------------------------------------------------------------------------------------------------------------------
最後 要開始做憤怒鳥遊戲了!
一開始我們先把憤怒鳥的圖片放進程式裡
PImage imgBird;
void setup()
{
size(500,500);
imgBird=loadImage("bird.png");
}
void draw()
{
background(255);
image(imgBird,mouseX,mouseY,100,100);//image(照片,x坐標,y坐標,寬,高);
}
--------------------------------------------------------------------------------------------------------------------------
因為滑鼠預設是在圖片的左上角 所以要改成在圖片的中間
PImage imgBird;
void setup()
{
size(500,500);
imgBird=loadImage("bird.png");
imageMode(CENTER);//讓滑鼠在圖片中間
}
void draw()
{
background(255);
image(imgBird,mouseX,mouseY,100,100);//image(照片,x坐標,y坐標,寬,高);
}
--------------------------------------------------------------------------------------------------------------------------
心得
今天教了很多程式,有108年程設會考的區間測速跟進階版,還有實習課的You can say 11,也學到幾個新的技巧,感覺之後會很實用!不過這次做遊戲的部分就比較少了,只有把圖片放進程式裡,還有把滑鼠改到圖片中間而已,感覺憤怒鳥遊戲做完之後會很有趣,所以希望下次可以繼續做憤怒鳥遊戲!












沒有留言:
張貼留言