Processing 程式碼
執行後跑出第一頁 mousePressed 後 跳到下一頁PImage img; void setup() { size(640, 480); img = loadImage("640x480.png"); } int page = 0; // 0:開場畫面 1:第1關 2:第2關 void draw() { if (page==0) { background(0); textSize(70); textAlign(CENTER, CENTER); text("Opening", 320, 240); } else if (page==1) { background(img); //小心, 圖檔大小, 要與size()相同, 才能變背景 } } void mousePressed() { if (page==0) page = 1; }在圖片上加上很多小格子 用來下一個步驟當基準用PImage img; void setup() { size(640, 480); //15格=480, 480/15=32 小圖 img = loadImage("640x480.png"); } void draw() { background(img); for (int i=0; i<15; i++) { //高度 480 對應 y 座標 左手i for (int j=0; j<20; j++) { //寬度 640 對應 x 座標 右手j noFill(); rect(j*32, i*32, 32, 32); //小格子的大小事 32x32 } } }加上 mouseMoved() 讓滑鼠游標經過畫面中的黑色格子時 會變成紅色再加上 mousePressed() 裡面加上 copy save可以把點到的那格的圖片存檔到 project的資料夾PImage img; void setup() { size(640, 480); //15格=480, 480/15=32 小圖 img = loadImage("640x480.png"); } void draw() { background(img); for (int i=0; i<15; i++) { //高度 480 對應 y 座標 左手i for (int j=0; j<20; j++) { //寬度 640 對應 x 座標 右手j noFill(); stroke(0); rect(j*32, i*32, 32, 32); //小格子的大小事 32x32 } } stroke(255, 0, 0); rect(J*32, I*32, 32, 32); } int I = -1, J = -1; void mouseMoved() {// voidMoved() 移動時, 要修改 I,J I = mouseY/32; //小心 Y J = mouseX/32; //小心 X } int N = 1; //圖檔的編號 void mousePressed() { //PImage now = create(640, 480, RGB); //now.copy(img, 0, 0, 640, 480, 0, 0, 640, 480); PImage now = createImage(32, 32, RGB); now.copy(img, J*32, I*32, 32, 32, 0, 0, 32, 32); now.save(N + ".png"); N++; }用 array[] 把上一個檔案儲存的圖片 按照檔名的數字一個一個key上去int [][] floor = { {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 3, 4, 5, 1, 1, 1, 5, 6, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 3, 4, 5, 1, 1, 1, 5, 6, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 3, 4, 5, 1, 1, 1, 5, 6, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 3, 4, 5, 1, 1, 1, 5, 6, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 3, 4, 5, 1, 1, 1, 5, 6, 1, 1}, //有20個數字 }; PImage img; PImage [] fimg = new PImage[40]; void setup() { size(640, 480); //15格=480, 480/15=32 小圖 img = loadImage("640x480.png"); for (int i=1; i<=20; i++) fimg[i] = loadImage(i+".png"); } void draw() { // background(img); for (int i=0; i<floor.length; i++) { //高度 480 對應 y 座標 左手i for (int j=0; j<20; j++) { //寬度 640 對應 x 座標 右手j int now = floor[i][j]; image(fimg[now], j*32, i*32); } } }加入 勇者 加上 keyPressed() 讓勇者動起來int [][] floor = { {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 3, 4, 5, 1, 1, 1, 5, 6, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 3, 4, 5, 1, 1, 1, 5, 6, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 3, 4, 5, 1, 1, 1, 5, 6, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 3, 4, 5, 1, 1, 1, 5, 6, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 20, 1, 1, 1, 1, 1, 1, 1, 1, 19, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 3, 4, 5, 1, 1, 1, 5, 6, 1, 1}, //有20個數字 }; PImage img, user; PImage [] fimg = new PImage[40]; void setup() { size(640, 480); //15格=480, 480/15=32 小圖 img = loadImage("640x480.png"); user = loadImage("18.png"); //勇者 使用者 for (int i=1; i<=20; i++) fimg[i] = loadImage(i+".png"); } int userI = 12, userJ = 15; void draw() { // background(img); for (int i=0; i<floor.length; i++) { //高度 480 對應 y 座標 左手i for (int j=0; j<20; j++) { //寬度 640 對應 x 座標 右手j int now = floor[i][j]; image(fimg[now], j*32, i*32); } } image(user, userJ*32, userI*32); } void keyPressed(){ if(keyCode==RIGHT) userJ++; if(keyCode==LEFT) userJ--; if(keyCode==UP) userI--; if(keyCode==DOWN) userI++; }利用偵測下一個陣列的數字 讓勇者碰到牆壁會被擋住不能過int [][] floor = { {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 3, 4, 5, 1, 1, 1, 5, 6, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 3, 4, 5, 1, 1, 1, 5, 6, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 3, 4, 5, 1, 1, 1, 5, 6, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 3, 4, 5, 1, 1, 1, 5, 6, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 20, 1, 1, 1, 1, 1, 1, 1, 1, 19, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 3, 4, 5, 1, 1, 1, 5, 6, 1, 1}, //有20個數字 }; PImage img, user; PImage [] fimg = new PImage[40]; void setup() { size(640, 480); //15格=480, 480/15=32 小圖 img = loadImage("640x480.png"); user = loadImage("18.png"); //勇者 使用者 for (int i=1; i<=20; i++) fimg[i] = loadImage(i+".png"); } int userI = 12, userJ = 15; void draw() { // background(img); for (int i=0; i<floor.length; i++) { //高度 480 對應 y 座標 左手i for (int j=0; j<20; j++) { //寬度 640 對應 x 座標 右手j int now = floor[i][j]; image(fimg[now], j*32, i*32); } } image(user, userJ*32, userI*32); } void keyPressed() { int newI = userI, newJ = userJ; //新的可能的位置 if (keyCode==RIGHT) newJ++; if (keyCode==LEFT) newJ--; if (keyCode==UP) newI--; if (keyCode==DOWN) newI++; if(floor[newI][newJ]!=3){ userI = newI; userJ = newJ; } }讓用者吃寶石 碰到樓梯 跑出綠色畫面 遊戲結束int [][] floor = { {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 3, 4, 5, 1, 1, 1, 5, 6, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 3, 4, 5, 1, 1, 1, 5, 6, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 3, 4, 5, 1, 1, 1, 5, 6, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 3, 4, 5, 1, 1, 1, 5, 6, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 20, 1, 1, 1, 1, 1, 1, 1, 1, 19, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 3, 4, 5, 1, 1, 1, 5, 6, 1, 1}, //有20個數字 }; PImage img, user; PImage [] fimg = new PImage[40]; void setup() { size(640, 480); //15格=480, 480/15=32 小圖 img = loadImage("640x480.png"); user = loadImage("18.png"); //勇者 使用者 for (int i=1; i<=20; i++) fimg[i] = loadImage(i+".png"); } int userI = 12, userJ = 15; void draw() { // background(img); for (int i=0; i<floor.length; i++) { //高度 480 對應 y 座標 左手i for (int j=0; j<20; j++) { //寬度 640 對應 x 座標 右手j int now = floor[i][j]; image(fimg[now], j*32, i*32); } } image(user, userJ*32, userI*32); if (gameOver) background(0, 255, 0); } boolean gameOver = false; void keyPressed() { int newI = userI, newJ = userJ; //新的可能的位置 if (keyCode==RIGHT) newJ++; if (keyCode==LEFT) newJ--; if (keyCode==UP) newI--; if (keyCode==DOWN) newI++; if (floor[newI][newJ]!=3) { //不是木頭才能過 userI = newI; userJ = newJ; if (floor[userI][userJ]==20) gameOver = true; floor[userI][userJ] = 6; } }加上左邊一排文字int [][] floor = { {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 3, 4, 5, 1, 1, 1, 5, 6, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 3, 4, 5, 1, 1, 1, 5, 6, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 3, 4, 5, 1, 1, 1, 5, 6, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 3, 4, 5, 1, 1, 1, 5, 6, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 20, 1, 1, 1, 1, 1, 1, 1, 1, 19, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 3, 4, 5, 1, 1, 1, 5, 6, 1, 1}, //有20個數字 }; PImage img, user; PImage [] fimg = new PImage[40]; void setup() { size(640, 480); //15格=480, 480/15=32 小圖 img = loadImage("640x480.png"); user = loadImage("18.png"); //勇者 使用者 for (int i=1; i<=20; i++) fimg[i] = loadImage(i+".png"); } int userI = 12, userJ = 15; void draw() { // background(img); for (int i=0; i<floor.length; i++) { //高度 480 對應 y 座標 左手i for (int j=0; j<20; j++) { //寬度 640 對應 x 座標 右手j int now = floor[i][j]; image(fimg[now], j*32, i*32); } } image(user, 16, 16); //左邊上面的圖 textSize(30); text("Level: " + level, 16, 90); textSize(20); text("Live: " + live, 16, 140); text("Attack: " + attack, 16, 170); text("Defense: " + defense, 16, 200); text("Magic: " + magic, 16, 230); text("Exp: " + exp, 16, 260); text("Coins: " + coin, 16, 290); image(user, userJ*32, userI*32); if (gameOver) background(0, 255, 0); } int level = 1, live = 2693, attack = 14, defense = 16, magic = 10, exp = 72, coin = 72; boolean gameOver = false; void keyPressed() { int newI = userI, newJ = userJ; //新的可能的位置 if (keyCode==RIGHT) newJ++; if (keyCode==LEFT) newJ--; if (keyCode==UP) newI--; if (keyCode==DOWN) newI++; if (floor[newI][newJ]!=3) { //不是木頭才能過 userI = newI; userJ = newJ; if (floor[userI][userJ]==20) gameOver = true; floor[userI][userJ] = 6; } }左邊一排文字的數值會跳int [][] floor = { {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 3, 4, 5, 1, 1, 1, 5, 6, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 3, 4, 5, 1, 1, 1, 5, 6, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 3, 4, 5, 1, 1, 1, 5, 6, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 3, 4, 5, 1, 1, 1, 5, 6, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 20, 1, 1, 1, 1, 1, 1, 1, 1, 19, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 1, 1, 1, 1, 1}, //有20個數字 {1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 3, 4, 5, 1, 1, 1, 5, 6, 1, 1}, //有20個數字 }; PImage img, user; PImage [] fimg = new PImage[40]; void setup() { size(640, 480); //15格=480, 480/15=32 小圖 img = loadImage("640x480.png"); user = loadImage("18.png"); //勇者 使用者 for (int i=1; i<=20; i++) fimg[i] = loadImage(i+".png"); } int userI = 12, userJ = 15; void draw() { // background(img); for (int i=0; i<floor.length; i++) { //高度 480 對應 y 座標 左手i for (int j=0; j<20; j++) { //寬度 640 對應 x 座標 右手j int now = floor[i][j]; image(fimg[now], j*32, i*32); } } image(user, 16, 16); //左邊上面的圖 textSize(30); text("Level: " + level, 16, 90); textSize(20); text("HP: " + hp, 16, 140); text("Attack: " + attack, 16, 170); text("Defense: " + defense, 16, 200); text("Magic: " + magic, 16, 230); text("Exp: " + exp, 16, 260); text("Coins: " + coin, 16, 290); image(user, userJ*32, userI*32); if (gameOver==1) background(0, 255, 0); if (gameOver==2) background(255, 0, 0); } int level = 1, hp = 2693, attack = 14, defense = 16, magic = 10, exp = 72, coin = 72; int gameOver = 0; void keyPressed() { int newI = userI, newJ = userJ; //新的可能的位置 if (keyCode==RIGHT) newJ++; if (keyCode==LEFT) newJ--; if (keyCode==UP) newI--; if (keyCode==DOWN) newI++; if (floor[newI][newJ]==5) { //遇到魔法師 if (hp-10<=0) gameOver = 2; else { hp -= 10; //扣你的血 coin += 10; //加錢 exp += 1; //加經驗值 userI = newI; userJ = newJ; floor[userI][userJ] = 2; } } else if (floor[newI][newJ]!=3) { //不是木頭才能過 userI = newI; userJ = newJ; if (floor[userI][userJ]==20) gameOver = 1; floor[userI][userJ] = 6; } }
沒有留言:
張貼留言