1.第一節上課程式碼
//week08_1_int_page_if_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;
}
利用滑鼠點擊文字來切換畫面
//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對應y座標 左手j
for(int j=0;j<20;j++){//寬度對應640對應x座標 右手j
noFill();
rect(j*32,i*32,32,32);//小格子大小事32*32
}
}
}
畫出按照整個介面大小的小格子
//week08_3_RPG_PImage_copy_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對應y座標 左手j
for(int j=0;j<20;j++){//寬度對應640對應x座標 右手j
noFill();
stroke(0);
rect(j*32,i*32,32,32);//小格子大小事32*32
}
}
stroke(255,0,0);
rect(J*32,I*32,32,32);
}
int I = -1,J = -1;
void mouseMoved(){//void Move()移動時要修改I,J
I = mouseY/32;//小心Y
J = mouseX/32;//小心X
}
int N=1;//圖檔的編號
void mousePressed(){
//PImage now;
//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++;
}
將滑鼠在格子上會直接擷取那格的圖片,加上標註的幾行可以顯示出黨名
//week08_5_RPG_user_move_userJ_userI_keyPressed
int [][] floor = {
{4, 1, 1, 1, 5, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5},//有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("15.png");
for(int i=1;i<=22;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座標 左手j
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++;
}
3.第三節上課程式碼
//week08_6_RPG_wall_deterction
int [][] floor = {
{4, 1, 1, 1, 5, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5},//有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("15.png");
for(int i=1;i<=22;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座標 左手j
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]!=1&&floor[newI][newJ]!=3){
userI=newI;
userJ=newJ;
}
}
//week08_7_RPG_eat_good
int [][] floor = {
{4, 1, 1, 1, 5, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5},//有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("15.png");
for(int i=1;i<=22;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座標 左手j
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]!=1&&floor[newI][newJ]!=3){
userI=newI;
userJ=newJ;
if(floor[userI][userJ]==21)gameOver = true;
floor[userI][userJ] = 2;
}
}
//week08_8_RPG_show_info
int [][] floor = {
{4, 1, 1, 1, 5, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5},//有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("15.png");
for(int i=1;i<=22;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座標 左手j
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=13,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){
userI=newI;
userJ=newJ;
if(floor[userI][userJ]==21)gameOver = true;
floor[userI][userJ] = 2;
}
}
增加一些背景等級畫面
//week08_9_RPG_attack_mage
int [][] floor = {
{4, 1, 1, 1, 5, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1,19, 3,22, 3,22, 9, 2, 2, 2, 9, 2,16, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5},//有20個數字
{4, 1, 1, 1, 5, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5},//有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("15.png");
for(int i=1;i<=22;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座標 左手j
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=13,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]==9){
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){
userI=newI;
userJ=newJ;
if(floor[userI][userJ]==21)gameOver = true;
floor[userI][userJ] = 2;
}
}
4.上傳github
沒有留言:
張貼留言