Week11
--------------------------------------------------------------------------------------------------------------------------------
1.先畫出4*6的方格,並在裡面填色和填字
void setup(){ size(600,400); } void draw(){ background(255); for(int i=0;i<4;i++){//y for(int j=0;j<6;j++){//x fill(#F5B4B4); rect(j*100,i*100,100,100); fill(0); text("Hello",j*100+25,i*100+50); } } }
2.再新增一個迴圈,讓格子內隨機填充24個數字
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++){//y for(int j=0;j<6;j++){//x fill(#F5B4B4); rect(j*100,i*100,100,100); fill(0); text(value[i][j],j*100+25,i*100+50); } } }
3.先挑一個i、j,接著進行洗牌
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;//從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++){//y for(int j=0;j<6;j++){//x fill(#F5B4B4); rect(j*100,i*100,100,100); fill(0); text(value[i][j],j*100+25,i*100+50); } } }
4.在視窗中間填字,同時加了點擊滑鼠可以讓視窗變色的功能
int state=0;//0:white 1:red 2:blue void setup(){ size(400,400); textSize(50); } void draw(){ if(state==0){//第0關 白色 background(255); fill(0); text("Click to start",80,200); }else if(state==1){//第1關 紅色 background(255,0,0); }else if(state==2){//第二關 藍色 background(0,0,255); } } void mousePressed(){ if(state==0) state=1; }
5.新增第二關,在視窗上加了一個灰色和一個白色的方塊,灰色方塊可以透過鍵盤移動,當2色方塊百分百重疊時算做通關,同時視窗也會變藍色
int state=0;//0:white 1:red 2:blue void setup(){ size(400,400); textSize(50); } int x=50,y=50; void draw(){ if(state==0){//第0關 白色 background(255); fill(0); text("Click to start",80,200); }else if(state==1){//第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; } }6.在第2關變為藍色視窗那部分做變動(新增t變數),關卡通關視窗變成藍色時會進入倒數計時,
計時結束後會返回第0關
int state=0;//0:white 1:red 2:blue void setup(){ size(400,400); textSize(50); } int x=50,y=50,t=100; void draw(){ if(state==0){//第0關 白色 background(255); fill(0); text("Click to start",80,200); x=50; }else if(state==1){//第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=0; } } void mousePressed(){ if(state==0) state=1; } void keyPressed(){ if(state==1&&keyCode==RIGHT){ x+=10; if(x==300) state=2; } }
7.籃球遊戲試做,
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; }8.新增單純點擊滑鼠球會往下掉,以及點擊滑鼠後長按再放開可以把球射出去
PImage imgRack; void setup(){ size(400,400); imgRack=loadImage("rack.jpg"); } void draw(){ background(255); image(imgRack,0,0); if(flying){ 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; }
ex.踩地雷
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, j); addNumber(i, j + 1); addNumber(i + 1, j - 1); addNumber(i + 1, j); 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++) { // y for (int j = 0; j < 9; j++) { // x 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); } } } }






沒有留言:
張貼留言