2023年11月23日 星期四

UU_week11

2023/11/23

隨機座位抽籤

1. 畫格子放文字

void setup() { size(600, 500); } void draw() { background(255); for (int i=0; i<4; i++){ for (int j=0; j<6; j++){ fill(#F5B4B4); rect(j*100, i*100, 100, 100); fill(0); text("Hello", j*100+25, i*100+50); } } }

2. 隨機亂數
亂數決定數字會出現重複的數字

void setup() { size(600, 500); for (int i=0; i<4; i++){ for (int j=0; j<5; j++){ value[i][j] = int(random(40)); } } } int [][]value = new int[4][6]; void draw() { background(255); for (int i=0; i<4; i++){ for (int j=0; j<6; j++){ fill(#F5B4B4); rect(j*100, i*100, 100, 100); fill(0); text(value[i][j], j*100+25, i*100+50); } } }

3. 挑兩個數字交換
for (int k=0; k<2; k++)決定要交換幾次數字

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 tmp = value[i][j]; value[i][j] = value[i2][j2]; value[i2][j2] = tmp; } } int [][]value = new int[4][6]; void draw() { background(255); for (int i=0; i<4; i++){ for (int j=0; j<6; j++){ fill(#F5B4B4); rect(j*100, i*100, 100, 100); fill(0); text(value[i][j], j*100+25, i*100+50); } } }


4. 5. 6. 切換場景

state=0時會在初始畫面白色背景, 按下滑鼠後會切換到紅色背景遊戲畫面,
上下鍵移動方塊到指定白色位置後, 就會跳到完成畫面藍色背景state=2

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; } }

image image

7. 修正, 結束遊戲後會倒數10秒再回到初始白色畫面

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=0; } } void mousePressed(){ if (state == 0){ state = 1; } } void keyPressed(){ if (state==1 && keyCode==RIGHT){ x+=10; if (x==300) state=2; } }

投球機

PImage imgRack; void setup() { size(300, 300); imgRack = loadImage("rack.jpg"); } void draw(){ background(255); image(imgRack, 0, 0); if (flying){ fill(#FFA652); ellipse(mouseX, mouseY, 20, 20); 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); } float posX=-100, posY=-100, vx, vy, x, y; boolean flying = false; void mousePressed(){ x = posX = mouseX; y = posY = mouseY; flying = false; } void mouseReleased(){ vx=posX-mouseX; vy=posY-mouseY; flying = true; }

踩地雷

/** 踩地雷 **/ 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 tmp = mine[i][j]; mine[i][j] = mine[i2][j2]; mine[i2][j2] = tmp; } for (int i=0; i<9; i++){ for (int j=0; j<9; j++){ // 遇到紅色的地雷附近要+1 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]++; // 不是地雷就可以+1 } 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); } } } }

imageimage

貪吃蛇(做一半)

/** 貪吃蛇 **/ 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; }

image


沒有留言:

張貼留言