[TODO]
上課內容:
遊戲頁面切換
// week08_1_int_page_0_1 PImage img; void setup(){ size(640,480); img = loadImage("640x480.png"); } int page = 0; //0:開場畫面 1:第一關 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; }
遊戲RPG// week08_2_RPG_background_640_480_rect_32_32 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 for(int j=0; j<20; j++){ //寬度 640 noFill(); rect(j*32, i*32, 32, 32); //小格子的大小是 32x32 } } }
遊戲RPG// week08_3_RPG_PImage_createImage_copy_save 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 for(int j=0; j<20; j++){ //寬度 640 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(){ // void Moved() 移動時,要修改I, J I = mouseY/32; //小心Y J = mouseX/32; //小心X } void mousePressed(){ //PImage now = createImage(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("1.png"); }
*按Ctrl+K 開啟檔案目錄,看圖片變化遊戲RPG// week08_4_RPG_2d_array_floor_map 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,19,3,22,3,22,9,2,2,2,9,1,16,5}, //有20個數字 {1,1,1,1,1,1,1,2,3,18,3,9,9,9,2,2,2,9,1,5}, {1,1,1,1,1,1,1,2,3,2,3,9,9,9,2,2,2,9,1,5}, {1,1,1,1,1,1,1,2,3,7,8,9,10,9,2,2,2,9,1,5}, {1,1,1,1,1,1,1,2,3,18,3,11,10,9,2,2,2,9,1,5}, {1,1,1,1,1,1,1,2,3,18,3,9,7,9,2,2,2,9,1,5}, {1,1,1,1,1,1,1,2,3,18,3,9,5,9,6,2,2,9,1,5}, {1,1,1,1,1,1,1,2,3,18,3,9,8,10,2,2,2,9,1,5}, {1,1,1,1,1,1,1,2,3,7,8,9,10,9,2,2,2,9,1,5}, {1,1,1,1,1,1,1,2,3,18,3,11,10,9,2,2,2,9,1,5}, {1,1,1,1,1,1,1,2,3,2,3,9,9,9,2,2,2,9,1,5}, {1,1,1,1,1,1,1,2,3,18,3,11,10,9,2,2,2,9,1,5}, {1,1,1,1,1,1,1,2,3,18,3,11,10,9,2,2,2,9,1,5}, }; 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<=22; i++){ fimg[i] = loadImage(i+".png"); } } void draw(){ //background(img); for(int i=0; i<floor.length; i++){ //高度 480 for(int j=0; j<20; j++){ //寬度 640 int now = floor[i][j]; image(fimg[now], j*32, i*32); } } }
遊戲RPG// week08_5_RPG_user_move_userJ_userI_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,4,4,4,4,4,4,4,4,4,4,4,4,1,1}, //有20個數字 {1,1,1,1,1,1,4,2,3,18,3,9,9,9,2,2,2,4,1,1}, {1,1,1,1,1,1,4,11,3,2,3,9,9,9,2,2,2,4,1,1}, {1,1,1,1,1,1,4,10,3,7,8,9,10,9,2,2,2,4,1,1}, {1,1,1,1,1,1,4,2,6,18,3,11,10,9,2,2,2,4,1,1}, {1,1,1,1,1,1,4,21,6,18,3,9,7,9,2,2,2,4,1,1}, {1,1,1,1,1,1,4,22,7,18,3,9,11,9,6,2,2,4,1,1}, {1,1,1,1,1,1,4,9,11,18,3,9,8,10,2,2,2,4,1,1}, {1,1,1,1,1,1,4,2,10,7,8,9,10,9,2,2,2,4,1,1}, {1,1,1,1,1,1,4,14,20,18,3,11,10,9,2,2,2,4,1,1}, {1,1,1,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, }; PImage img,user; PImage [] fimg = new PImage[40]; void setup(){ size(640,480); //15格=480,480/15=32小圖 img = loadImage("640x480.png"); user = loadImage("5.png"); //勇者/使用者 for(int i=1; i<=22; i++){ fimg[i] = loadImage(i+".png"); } } int userI = 11, userJ = 15; void draw(){ //background(img); for(int i=0; i<floor.length; i++){ //高度 480 for(int j=0; j<20; j++){ //寬度 640 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++; }
遊戲RPG// week08_6_RPG_wall_detection 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,4,4,4,4,4,4,4,4,4,4,4,4,1,1}, //有20個數字 {1,1,1,1,1,1,4,2,3,18,3,9,9,9,2,2,2,4,1,1}, {1,1,1,1,1,1,4,11,3,2,3,9,9,9,2,2,2,4,1,1}, {1,1,1,1,1,1,4,10,3,7,8,7,10,9,6,2,2,4,1,1}, {1,1,1,1,1,1,4,2,6,18,3,11,10,9,2,7,2,4,1,1}, {1,1,1,1,1,1,4,21,6,18,3,9,7,9,2,2,8,4,1,1}, {1,1,1,1,1,1,4,22,7,18,3,9,11,9,6,2,2,4,1,1}, {1,1,1,1,1,1,4,9,11,18,3,9,8,10,2,2,2,4,1,1}, {1,1,1,1,1,1,4,2,10,7,8,9,10,9,2,2,2,4,1,1}, {1,1,1,1,1,1,4,14,20,18,3,11,10,9,2,2,2,4,1,1}, {1,1,1,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, }; PImage img,user; PImage [] fimg = new PImage[40]; void setup(){ size(640,480); //15格=480,480/15=32小圖 img = loadImage("640x480.png"); user = loadImage("5.png"); //勇者/使用者 for(int i=1; i<=22; i++){ fimg[i] = loadImage(i+".png"); } } int userI = 11, userJ = 15; void draw(){ //background(img); for(int i=0; i<floor.length; i++){ //高度 480 for(int j=0; j<20; j++){ //寬度 640 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]!=1 && floor[newI][newJ]!=3 && floor[newI][newJ]!=4 && floor[newI][newJ]!=9){ //不是石頭牆,也不是木頭牆,才能走過去 userI = newI; userJ = newJ; } }
遊戲RPG// week08_7_RPG_eat_good 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,4,4,4,4,4,4,4,4,4,4,4,4,1,1}, //有20個數字 {1,1,1,1,1,1,4,20,3,18,3,9,9,9,11,10,8,4,1,1}, {1,1,1,1,1,1,4,11,15,2,3,9,9,9,13,12,7,4,1,1}, {1,1,1,1,1,1,4,10,3,7,8,7,10,9,6,10,8,4,1,1}, {1,1,1,1,1,1,4,13,6,20,3,11,10,9,11,7,6,4,1,1}, {1,1,1,1,1,1,4,21,6,18,3,9,7,9,12,20,8,4,1,1}, {1,1,1,1,1,1,4,22,7,3,3,9,11,9,6,13,22,4,1,1}, {1,1,1,1,1,1,4,9,11,10,3,9,8,10,22,16,17,4,1,1}, {1,1,1,1,1,1,4,12,10,7,8,9,10,9,21,17,22,4,1,1}, {1,1,1,1,1,1,4,14,20,17,3,11,10,9,13,16,16,4,1,1}, {1,1,1,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, }; PImage img,user; PImage [] fimg = new PImage[40]; void setup(){ size(640,480); //15格=480,480/15=32小圖 img = loadImage("640x480.png"); user = loadImage("5.png"); //勇者/使用者 for(int i=1; i<=22; i++){ fimg[i] = loadImage(i+".png"); } } int userI = 11, userJ = 15; void draw(){ //background(img); for(int i=0; i<floor.length; i++){ //高度 480 for(int j=0; j<20; j++){ //寬度 640 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]!=1 && floor[newI][newJ]!=3 && floor[newI][newJ]!=4 && floor[newI][newJ]!=9){ //不是石頭牆,也不是木頭牆,才能走過去 userI = newI; userJ = newJ; if(floor[userI][userJ]==14) gameOver = true; //走到樓上,結束囉 floor[userI][userJ] = 19; } }
遊戲RPG// week08_8_RPG_show_info 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,4,4,4,4,4,4,4,4,4,4,4,4,1,1}, //有20個數字 {1,1,1,1,1,1,4,20,3,18,3,9,9,9,11,10,8,4,1,1}, {1,1,1,1,1,1,4,11,15,2,3,9,9,9,13,12,7,4,1,1}, {1,1,1,1,1,1,4,10,3,7,8,7,10,9,6,10,8,4,1,1}, {1,1,1,1,1,1,4,13,6,20,3,11,10,9,11,7,6,4,1,1}, {1,1,1,1,1,1,4,21,6,18,3,9,7,9,12,20,8,4,1,1}, {1,1,1,1,1,1,4,22,7,3,3,9,11,9,6,13,22,4,1,1}, {1,1,1,1,1,1,4,9,11,10,3,9,8,10,22,16,17,4,1,1}, {1,1,1,1,1,1,4,12,10,7,8,9,10,9,21,17,22,4,1,1}, {1,1,1,1,1,1,4,14,20,17,3,11,10,9,13,16,16,4,1,1}, {1,1,1,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, }; PImage img,user; PImage [] fimg = new PImage[40]; void setup(){ size(640,480); //15格=480,480/15=32小圖 img = loadImage("640x480.png"); user = loadImage("5.png"); //勇者/使用者 for(int i=1; i<=22; i++){ fimg[i] = loadImage(i+".png"); } } int userI = 11, userJ = 15; void draw(){ //background(img); for(int i=0; i<floor.length; i++){ //高度 480 for(int j=0; j<20; j++){ //寬度 640 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]!=1 && floor[newI][newJ]!=3 && floor[newI][newJ]!=4 && floor[newI][newJ]!=9){ //不是石頭牆,也不是木頭牆,才能走過去 userI = newI; userJ = newJ; if(floor[userI][userJ]==14) gameOver = true; //走到樓上,結束囉 floor[userI][userJ] = 19; } }
遊戲RPG// week08_9_RPG_attack_amge 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,4,4,4,4,4,4,4,4,4,4,4,4,1,1}, //有20個數字 {1,1,1,1,1,1,4,20,3,18,3,9,9,9,11,10,8,4,1,1}, {1,1,1,1,1,1,4,11,15,2,3,9,9,9,13,12,7,4,1,1}, {1,1,1,1,1,1,4,10,3,7,8,7,10,9,6,10,8,4,1,1}, {1,1,1,1,1,1,4,13,6,20,3,11,10,9,11,7,6,4,1,1}, {1,1,1,1,1,1,4,21,6,18,3,9,7,9,12,20,8,4,1,1}, {1,1,1,1,1,1,4,22,7,3,3,9,11,9,6,13,22,4,1,1}, {1,1,1,1,1,1,4,9,11,10,3,9,8,10,22,16,17,4,1,1}, {1,1,1,1,1,1,4,12,10,7,8,9,10,9,21,17,22,4,1,1}, {1,1,1,1,1,1,4,14,20,17,3,11,10,9,13,16,16,4,1,1}, {1,1,1,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, }; PImage img,user; PImage [] fimg = new PImage[40]; void setup(){ size(640,480); //15格=480,480/15=32小圖 img = loadImage("640x480.png"); user = loadImage("5.png"); //勇者/使用者 for(int i=1; i<=22; i++){ fimg[i] = loadImage(i+".png"); } } int userI = 11, userJ = 15; void draw(){ //background(img); for(int i=0; i<floor.length; i++){ //高度 480 for(int j=0; j<20; j++){ //寬度 640 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]==11){ //遇到魔法師 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]!=1 && floor[newI][newJ]!=3 && floor[newI][newJ]!=4 && floor[newI][newJ]!=9){ //不是石頭牆,也不是木頭牆,才能走過去 userI = newI; userJ = newJ; if(floor[userI][userJ]==14) gameOver = 1; //走到樓上,結束囉 floor[userI][userJ] = 19; } }
沒有留言:
張貼留言