踩怪物遊戲
主畫面
遊戲說明
遊戲內
GameOver
以下是部分程式碼講解
Q:為何要用陣列讀圖片
A:這樣就能用變數控制圖片,方便切換角色動作
String[] imageNames = { "playerR.png", "playerL.png"};//需要的圖片名稱
PImage[] images = new PImage[imageNames.length];//根據上面圖的量來宣告陣列長度
int z=0;//人物初始圖片
for (int i=0; i < imageNames.length; i++){//for迴圈讀圖片
String imageName = imageNames[i];
images[i] = loadImage(imageName);
}
PImage img = images[z]; // 隨時更新為圖片z(變數z)
image(img, x, y); // //隨時更新人物位置
if(!playerdie){
if(keyright){z=0;x+=vx;}
if(keyleft) {z=1;x-=vx;}
這樣就可以按右向右(z=0),按左向左(z=1),之後也能增加更多動作
Q:如何存取分數
A:分數是數字,文字檔是文字,你需要把數字(int)轉成字串(String),才能用saveStrings("檔案名稱.txt",宣告為陣列的字串); 來進行儲存。讀取則要將文字檔讀取成宣告為陣列的字串,再將字串轉成數字才行,所以你需要 loadStrings("檔案名稱.txt");。那沒有讀到檔案怎麼辦,只要用if()去控制「沒有檔案就不要存成數字」,就不會有程式錯誤了。
int score,highscore;
String highscoreToText = "";
String[] highscoreRecord = split(highscoreToText, ' ');
String[] highscoreRecord = loadStrings("highscore.txt");//讀txt
if(highscoreRecord!=null) highscore = int(highscoreRecord[0]);//有就存
if(score >= highscore){//如果破紀錄
highscoreToText = str(highscore);
highscoreRecord[0] = highscoreToText;
saveStrings("highscore.txt",highscoreRecord);
highscore = score;
}
Q:如何重置遊戲呢?
A:重置,所以要將所有數值都歸為,那就將set()中設置數值的程式碼都複製到reset()中。之後要重置只要呼叫reset()就會重置了。
void reset()
{
重製玩家
重製怪物
重製飛彈
重製雲
}
但注意,如果你將宣告寫在set()裡,其他人是讀不到的,所以宣告要寫在外面,設定數值才寫在set()裡
Q:按鈕的位置會重疊!
A:用不同的boolean去控制,一個按鈕用一個boolean,這樣位置重疊也不衝突了
void mousePressed() {
if(rectOver){
if(state == 0){
if(helpopen) helpopen=false;
else helpopen=true;
Click.rewind();
Click.play();
}
}
if(restartOver){
if(playerdie){
if(state == 1){
reset();
Click.rewind();
Click.play();
}
}
}
if(backtomenuOver){
if(playerdie){
if(state == 1){
reset();
state = 0;
Click.rewind();
Click.play();
}
}
}
}
這裡是按下滑鼠後的判斷
void update(int x, int y) {
if ( overRect(181, 350, 150, 60) ) {
rectOver = true;
} else {
rectOver = false;
}
if ( overRect(81, 350, 150, 60) ) {
restartOver = true;
} else {
restartOver = false;
}
if ( overRect(281, 350, 150, 60) ) {
backtomenuOver = true;
} else {
backtomenuOver = false;
}
}
這裡判斷滑鼠的位置
boolean overRect(int x, int y, int width, int height) {
if (mouseX >= x && mouseX <= x+width && mouseY >= y && mouseY <= y+height) {
return true;
}
else {
return false;
}
}
這個用在上面的判斷式中
以上
沒有留言:
張貼留言