第十一週:
week11-1+week11-2:
step01:視窗大小設定600*500,背景設定白色,畫出點名表的格線:
step03:左手右手隨機亂數生成:
程式碼:
void setup(){ size(600,500); for(int i=0;i<4;i++){ for(int j=0;j<6;j++){ value[i][j]=int(random(40)); } } } int[][]value=new int[4][6]; void draw(){ background(255); for(int i=0;i<4;i++){//左手i for(int j=0;j<6;j++){//右手j fill(#F5B4B4);rect(j*100,i*100,100,100); fill(0); text(value[i][j],j*100+25,i*100+50); } } }
week11-3:
step01:給他一個初始值,從十開始數字不重複,左手i、右手j做交換
step02:每次挑兩個數做交換,k<2可以修改數值
程式碼:
void setup(){ size(600,500); for(int i=0;i<4;i++){ for(int j=0;j<6;j++){ value[i][j]=i*6+j+10; } } for(int k=0;k<2;k++){ int i=int (random(4)),j=int(random(6)); int i2=int (random(4)),j2=int(random(6)); int temp=value[i][j]; value[i][j]=value[i2][j2]; value[i2][j2]=temp; } } int[][]value=new int[4][6]; void draw(){ background(255); for(int i=0;i<4;i++){//左手i for(int j=0;j<6;j++){//右手j fill(#F5B4B4);rect(j*100,i*100,100,100); fill(0); text(value[i][j],j*100+25,i*100+50); } } }week11-4:
step01:設定三個狀態state,第0關白色,第1關紅色,第2關藍色,目前只有白色背景
step02:增加跳關按鍵,設定視窗中間位置,mousepressed給滑鼠觸發功能
程式碼:int state=0; void setup(){ size(400,400); textSize(50); } void draw(){ if(state==0){//白色 background(255); fill(0); text("Click to Start",80,200); }else if(state==1){//紅色 background(255,0,0); }else if(state==1){//藍色 background(0,0,255); } } void mousePressed(){ if(state==0) state=1; }week11-5:
step01:右上角新增白色方塊,左上角黑色方塊
step02:加上黑色方塊移動功能,如果按下右方向鍵,可以移動
step03:當移動到白色方塊上面,跳到下一個狀態,藍色的關卡
程式碼:int state=0; void setup(){ size(400,400); textSize(50); } int x=50,y=50; void draw(){ if(state==0){//白色 background(255); fill(0); text("Click to Start",80,200); }else if(state==1){//紅色 background(255,0,0); fill(255); rect(300,50,50,50); fill(128); rect(x,y,50,50); }else if(state==2){//藍色 background(0,0,255); } } void mousePressed(){ if(state==0) state=1; } void keyPressed(){ if(state==1&&keyCode==RIGHT){ x+=10; if(x==300) state=2; } }week11-6:
step01:在藍色狀態倒數十秒鐘。
step02:當滑鼠按下state數值,可以做循環
程式碼:int state=0; void setup(){ size(400,400); textSize(50); } int x=50,y=50,t=100; void draw(){ if(state==0){//白色 background(255); fill(0); text("Click to Start",80,200); x=50; }else if(state==1){//紅色 background(255,0,0); fill(255); rect(300,50,50,50); fill(128); rect(x,y,50,50); t=100; }else if(state==2){//藍色 background(0,0,255); fill(255,255,0); text("Wait "+t,80,200); t--; if(t==0) state=1; } } void mousePressed(){ if(state==0) state=1; } void keyPressed(){ if(state==1&&keyCode==RIGHT){ x+=10; if(x==300) state=2; } }week11-7:
step01:投籃機射擊曲線,做出籃框。
step02:做出籃球加上顏色
step03:增加滑鼠拉動籃球
程式碼:PImage imgRack; void setup(){ size(300,300); imgRack=loadImage("rack.jpg"); } void draw(){ background(255); image(imgRack,0,0); if(mousePressed){ fill(255); ellipse(posX,posY,20,20); line(posX,posY,mouseX,mouseY); } fill(#FFA652); ellipse(mouseX,mouseY,20,20); } float posX=-100,posY=-100; void mousePressed(){ posX=mouseX; posY=mouseY; }week11-8:
step01:如果滑鼠放開,增加在飛行中跟沒有飛行的程式碼。
step02:按下滑鼠不飛行,放開飛行
step03:把posX posY去掉,換成x,y軸,再增加GameOver的功能,按下任意鍵固定球。
程式碼:PImage imgRack; void setup(){ size(300,300); imgRack=loadImage("rack.jpg"); } boolean gameOver=false; void keyPressed(){ gameOver=true; } void draw(){ background(255); image(imgRack,0,0); if(flying){ if(!gameOver){ x+=vx; y+=vy; vy+=0.98; } }else{ x=mouseX; y=mouseY; if(mousePressed){ fill(255); ellipse(posX,posY,20,20); line(posX,posY,x,y); } } fill(#FFA652); ellipse(x,y,20,20); } boolean flying=false; float x,y,vx,vy; float posX=-100,posY=-100; void mousePressed(){ x=posX=mouseX; y=posY=mouseY; flying=false; } void mouseReleased(){ vx=posX-mouseX; vy=posY-mouseY; flying=true; }week11-A:
踩地雷遊戲
程式碼:int[][]mine=new int [9][9]; void setup() { size(450,450); for(int i=0;i<9;i++) { mine[i][0]=9; } for(int k=0;k<1000;k++) { int i=int(random(9)),j=int(random(9)); int i2=int(random(9)),j2=int(random(9)); int temp=mine[i][j]; mine[i][j]=mine[i2][j2]; mine[i2][j2]=temp; } for(int i=0;i<9;i++) { for(int j=0;j<9;j++) { if(mine[i][j]==9) { addNumber(i-1,j-1); addNumber(i-1,j); addNumber(i-1,j+1); addNumber(i,j-1); addNumber(i-1,j); addNumber(i,j+1); addNumber(i+1,j-1); addNumber(i+1,j+1); } } } } void addNumber(int i,int j) { if(i<0||j<0||i>=9||j>=9) return; if(mine[i][j]!=9)mine[i][j]++; } void draw() { for(int i=0;i<9;i++) { for(int j=0;j<9;j++) { if(mine[i][j]==9) fill(255,128,128); else fill(255); rect(j*50,i*50,45,45); if(mine[i][j]!=0) { fill(0); text(""+mine[i][j],j*50+23,i*50+23,45,45) ; } } } }貪食蛇:程式碼:void setup(){ size(600,400); } float x=300,y=200,dir=0; void draw(){ //background(0); joker(x,y,dir); x+=cos(dir); y+=sin(dir); } void joker(float x,float y,float dir){ ellipse(x,y,50,50); line(x,y,x+25*cos(dir),y+25*sin(dir)); } void keyPressed(){ if(keyCode==RIGHT) dir+=0.1; if(keyCode==LEFT) dir-=0.1; }


沒有留言:
張貼留言