week13_01_animated_background
1.一張一張放,做出動圖背景
程式碼
//week13_01_animated_background
PImage [] img = new PImage[3];
void setup(){
size(550,370);
img[0] = loadImage("101.png");
img[1] = loadImage("102.png");
img[2] = loadImage("103.png");
}
int I = 0;
void draw(){
background(img[I]);
if(frameCount%60==0) I = (I+1)%3;
}
week13_02_animated_background_frameCount_x
1.程式碼for迴圈動圖
程式碼
//week13_02_animated_background_frameCount_x
void setup(){
size(500,300);//寬度500,2被視1000
}
void draw(){
background(#FFFFF2);
float x = (frameCount*5%1000);
if(x>500) x = 1000-x;//超過500就來回折返
for(int y=30;y<300;y+=50) {
ellipse(x,y,30,30);
}
}
week13_03_animated_background_turkey_pushMatrix_translate_rotate
1.可以用去被網站
2.跟著mouse動
程式碼
//week13_03_animated_background_turkey_pushMatrix_translate_rotate
PImage img;
void setup(){
size(500,300);
img = loadImage("turkey.png");
imageMode(CENTER);
}
void turkey(int x,int y) {
pushMatrix();
translate(x,y);
rotate(radians(frameCount));
image(img,0,0);
popMatrix();
}
void draw(){
background(255);
turkey(mouseX,mouseY);
turkey(100,100);
turkey(400,100);
turkey(100,200);
turkey(400,200);
}
week13_04_PShape_gundam_loadShape_obj_mtl_jpg
1.放入3D模型,obj_mtl_jpg
程式碼
///week13_04_PShape_gundam_loadShape_obj_mtl_jpg
PShape gundam;
void setup(){
size(500, 500, P3D); // 設定視窗大小與 P3D 渲染模式
gundam = loadShape("Gundam.obj");
}
void draw(){
shape(gundam, 0, 0, 250, 500);
}
week13_05_PShape_gundam_loadShape_shape_pushMatrix_scale_translate_rotate_popMatrix
1.模型需要上學期教過的,擺好位置
程式碼
///week13_05_PShape_gundam_loadShape_shape_pushMatrix_scale_translate_rotate_popMatrix
PShape gundam;
void setup(){
size(500, 500, P3D); // 設定視窗大小與 P3D 渲染模式
gundam = loadShape("Gundam.obj");
}
void draw(){
background(#BBFF81);
pushMatrix();
translate(mouseX,mouseY);
rotateY(radians(frameCount));
rotate(radians(180));
scale(5,5,5);
shape(gundam, 0, 0); //原本shape(gundam, 0, 0, 250/2, 500/2);
popMatrix();
}
week13_06_PShape_gundam_loadShape_for_loop
1.用迴圈增加數量
2.很多細節
程式碼
///week13_06_PShape_gundam_loadShape_for_loop
PShape gundam;
void setup(){
size(500, 500, P3D); // 設定視窗大小與 P3D 渲染模式
gundam = loadShape("Gundam.obj");
}
void draw(){
background(#BBFF81);
drawGundam(mouseX,mouseY);
for(int x=0;x<=500;x+=500/4) { //寬切成四等分
drawGundam(x,300);
}
}
void drawGundam(int x,int y){
pushMatrix();
translate(x,y);
rotateY(radians(frameCount));
rotate(radians(180));
scale(5,5,5);
shape(gundam, 0, 0); //原本shape(gundam, 0, 0, 250/2, 500/2);
popMatrix();
}
week13_7_tetris_falling
1.簡單掉下來
程式碼
// week13_7_tetris_falling
// 這個程式模擬了一個 Tetris 方塊隨時間下降的動作,並可透過左右方向鍵移動方塊。
void setup(){
size(300, 600); // 設定畫布大小為 300x600 像素
}
float x = 50, y = 50; // 初始方塊的位置 (x, y)
void draw(){
background(0); // 將背景設為黑色
fill(153, 0, 204); // 設定方塊的顏色 (紫色)
// 繪製一個由四個小方塊組成的 Tetris 方塊
rect(x, y-25, 25, 25); // 上方的方塊
rect(x+25, y, 25, 25); // 上方右邊的方塊
rect(x, y, 25, 25); // 左下角的方塊
rect(x, y+25, 25, 25); // 右下角的方塊
// 每 50 幀讓方塊下降 25 像素
if(frameCount % 50 == 0) {
y += 25; // 每次下降 25 像素
}
}
void keyPressed(){
// 檢測按鍵輸入,左右移動方塊
if(keyCode == RIGHT) x += 25; // 按右方向鍵,向右移動 25 像素
if(keyCode == LEFT) x -= 25; // 按左方向鍵,向左移動 25 像素
}
week13_08_tetris_grid_2d_array_fill_rect
1.用陣列做出背景
程式碼
week13_9_tetris_color_array_c_now
1.定義顏色、填充顏色
程式碼
// week13_9_tetris_color_array_c_now
color[] c = {#000000, #777777, #9900CC, #CCCC00, #00B500, #CC0000}; // 定義顏色
void setup() {
size(240, 440); // 畫布大小
}
void draw() {
for (int i = 0; i < 22; i++) { // 行
for (int j = 0; j < 12; j++) { // 列
int now = grid[i][j]; // 當前格子數字
fill(c[now]); // 填充顏色
rect(j * 20, i * 20, 20, 20); // 畫格子
}
}
}
int [][] grid = {
{1,1,1,1,1,1,1,1,1,1,1,1},
{1,0,0,0,0,2,0,0,0,0,0,1},
{1,0,0,0,0,2,2,0,0,0,0,1},
{1,0,0,0,0,2,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1}
};
week13_10_tetris_falling_if_frameCount_for_for_if
1.碰到底部要停下來
程式碼
// week13_10_tetris_falling_if_frameCount_for_for_if
color[] c = {#000000, #777777, #9900CC, #CCCC00, #00B500, #CC0000}; // 顏色陣列
void setup() {
size(240, 440); // 畫布大小
}
void draw() {
// 繪製棋盤
for (int i = 0; i < 22; i++) {
for (int j = 0; j < 12; j++) {
int now = grid[i][j]; // 當前格子數字
fill(c[now]); // 填充顏色
rect(j * 20, i * 20, 20, 20); // 畫格子
}
}
if (frameCount % 50 == 0) { // 每 50 幀執行下落
int bad = 0; // 開始沒有撞擊
// 從下到上檢查每一格
for (int i = 20; i >= 1; i--) {
for (int j = 1; j < 12-1; j++) {
if (grid[i][j] == 2) { // 找到移動中的方塊
if (grid[i + 1][j] != 2 && grid[i + 1][j] != 0) { // 如果到達底部或撞擊靜止方塊
bad = 1; // 標記無法下移
}
}
}
}
if (bad == 0) { // 如果可以下移
for (int i = 20; i >= 1; i--) {
for (int j = 1; j < 12-1; j++) {
if (grid[i][j] == 2) {
grid[i + 1][j] = 2; // 方塊下移
grid[i][j] = 0; // 清除原位置
}
}
}
} else { // 如果無法下移
for (int i = 20; i >= 0; i--) {
for (int j = 0; j < 12; j++) {
if (grid[i][j] == 2) {
grid[i][j] = 1; // 方塊變為靜止狀態
}
}
}
}
}
}
int [][] grid = {
{1,1,1,1,1,1,1,1,1,1,1,1},
{1,0,0,0,0,2,0,0,0,0,0,1},
{1,0,0,0,0,2,2,0,0,0,0,1},
{1,0,0,0,0,2,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1}
};
week13_11_live_can_move
1.白色活著會動
程式碼
// week13_11_live_can_move
color[] c = {#000000, #777777, #9900CC, #CCCC00, #00B500, #CC0000, #0000CC, #CC9900, #0000CC, #FFFFFF}; // 顏色陣列
int T = 2;
void setup() {
size(240, 440); // 畫布大小
}
void draw() {
// 繪製棋盤
for (int i = 0; i < 22; i++) {
for (int j = 0; j < 12; j++) {
int now = grid[i][j]; // 當前格子數字
fill(c[now]); // 填充顏色
rect(j * 20, i * 20, 20, 20); // 畫格子
}
}
if (frameCount % 50 == 0) { // 每 50 幀執行下落
int bad = 0; // 開始沒有撞擊
// 從下到上檢查每一格
for (int i = 20; i >= 1; i--) {
for (int j = 1; j < 12-1; j++) {
if (grid[i][j] == 9) { // 找到移動中的方塊
if (grid[i + 1][j] != 0 && grid[i + 1][j] != 9) { // 如果到達底部或撞擊靜止方塊
bad = 1; // 標記無法下移
}
}
}
}
if (bad == 0) { // 如果可以下移
for (int i = 20; i >= 1; i--) {
for (int j = 1; j < 12-1; j++) {
if (grid[i][j] == 9) {
grid[i + 1][j] = 9; // 方塊下移
grid[i][j] = 0; // 清除原位置
}
}
}
} else { // 如果無法下移
for (int i = 20; i >= 1; i--) {
for (int j = 1; j < 12-1; j++) {
if (grid[i][j] == 9) {
grid[i][j] = T; // 9代表活著可以動,T方塊變為靜止狀態
}
}
}
}
}
}
int [][] grid = {
{1,1,1,1,1,1,1,1,1,1,1,1},
{1,0,0,0,0,9,0,0,0,0,0,1},
{1,0,0,0,0,9,9,0,0,0,0,1},
{1,0,0,0,0,9,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1}
};













沒有留言:
張貼留言