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; //回收子彈,下次用到最舊的那顆
}
沒有留言:
張貼留言