2011-04-26 62 views
0

這裏是我有問題開始工作的代碼。遊戲正常結束的問題

public void fight (Graphics canvas, int fightcount,int curloc) 
{ 

    if(curloc==10) 
    { 
     fightcount=fightcount-1; 
    } 
    else if (curloc==10 && fightcount==0) 
    { 
     JOptionPane.showMessageDialog(null, "You Win!"); 
    } 
} 

這裏是代碼

import java.awt.*; 
import javax.swing.*; 
import java.awt.event.*; 
import java.applet.Applet; 

import java.applet.*; 
import java.awt.image.*; 
import java.util.*; 
import java.net.*; 
public class AlcatrazEscape extends JApplet implements KeyListener, FocusListener 
{ 
    int strength=0, health=100, curloc=1,randomnumber=0,fightcount=10; 
    boolean focus = false; 
    boolean left=false, right=false, up=false, down=false, space=false, enter=false; 
    boolean start=false,train=false,showers=false,CBC=false,tunnel=false,SecRoom1=false,SecRoom2=false,courtyard=false,fight=false,free=false,GP=false,SolCon=false; 
    boolean key1=false, key2=false; 

    public void init() 
    { 

     addKeyListener(this); 
     addFocusListener(this); 
     play(getCodeBase(), "SpyHunter.mid"); 

    } 
    public void paint(Graphics canvas) 
    { 
     clearScreen(canvas); 

     canvas.setColor(Color.BLACK); // Must do this so words will 
             // display on the screen 

     if (!focus) 
     { 
      canvas.setColor(Color.WHITE); 
      canvas.drawString("Welcome to Alcatraz Breakout! The objective of the game is to escape Alcatraz.",10,10); 
      canvas.drawString("Click the screen to begin the game.",10,30); 
      return; 
     } 
     else 
     { 
      makeMove(canvas); 
      dispLoc(canvas); 
      stats(canvas); 
      randomnumber=randomnum(); 
      ran(randomnumber,curloc,canvas); 
      health(canvas, health); 
      fight(canvas, curloc, fightcount); 
      System.out.println(fightcount); 
      left=right=up=down=space=enter=false; 
     } 


    } 
    public void room1(Graphics canvas) 
    { 
     canvas.setColor(Color.WHITE); 
     canvas.drawString("You are in your cell.", 10, 10); 
     canvas.drawString("Left: To the Training Room", 10, 30); 
     canvas.drawString("Right: To the Showers", 10, 50); 

    } 
    public void room2(Graphics canvas) 
    { 
     canvas.setColor(Color.WHITE); 
     canvas.drawString("You are in the Training Room.", 10, 10); 
     canvas.drawString("Right: To your Cell", 10, 30); 
    } 
    public void room3(Graphics canvas) 
    { 
     canvas.setColor(Color.WHITE); 
     canvas.drawString("You are in the Showers.", 10, 10); 
     canvas.drawString("Left: To your Cell", 10, 30); 
     canvas.drawString("Up: To Cell Block C", 10, 50); 
    } 
    public void room4(Graphics canvas) 
    { 
     canvas.setColor(Color.WHITE); 
     canvas.drawString("You are in Cell Block C.", 10, 10); 
     canvas.drawString("Down: To the Showers", 10, 30); 
     canvas.drawString("Up: To Security Room 1", 10, 50); 
    } 
    public void room5(Graphics canvas) 
    { 
     canvas.setColor(Color.WHITE); 
     canvas.drawString("You are in the first security room.", 10, 10); 
     canvas.drawString("Left: To the Guard Post", 10, 30); 
     canvas.drawString("Down: To Cell Block C", 10, 50); 
    } 
    public void room6(Graphics canvas) 
    { 
     canvas.setColor(Color.WHITE); 
     canvas.drawString("You are in the Guard Post.", 10, 10); 
     canvas.drawString("Right: To Security Room 1", 10, 30); 
     canvas.drawString("Left: To The Courtyard", 10, 50); 
     canvas.drawString("Up: To Solitary Confinement", 10, 70); 
    } 
    public void room7(Graphics canvas) 
    { 
     canvas.setColor(Color.WHITE); 
     canvas.drawString("You are in the Courtyard.", 10, 10); 
     canvas.drawString("Up: To the Guard Post", 10, 30); 
     canvas.drawString("Down: To Security Room 2", 10, 50); 
    } 
    public void SolCon(Graphics canvas) 
    { 
     canvas.setColor(Color.WHITE); 
     canvas.drawString("You are in Solitary Confinement.", 10, 10); 
     canvas.drawString("Down: To the Guard Post", 10, 30); 
    } 
    public void room8(Graphics canvas) 
    { 
     canvas.setColor(Color.WHITE); 
     canvas.drawString("You are in the second security room.", 10, 10); 
     canvas.drawString("Right: Leave", 10, 30); 
     canvas.drawString("Up: To The Couryard", 10, 50); 
    } 
    public void room9(Graphics canvas) 
    { 
     canvas.setColor(Color.WHITE); 
     canvas.drawString("You walk by a blown up tank... weird.", 10, 10); 
     canvas.drawString("Right: Freedom!", 10, 30); 
    } 
    public void room10(Graphics canvas) 
    { 
     canvas.setColor(Color.WHITE); 
     canvas.drawString("You are FREE!!.", 10, 10); 

    } 
    public void room11(Graphics canvas) 
    { 
     canvas.setColor(Color.WHITE); 
     canvas.drawString("You are in SOLITARY CONFINEMENT: HOME OF THE FREAKS!!.", 10, 10); 
     canvas.drawString("Down: To the Guard Post.", 10, 30); 
    } 
    public void guardFight1(Graphics canvas) 
    { 
     int GuardHP=75,GATK=10; 
    } 
    public void guardFight2(Graphics canvas) 
    { 
     int GuardHP=150,GATK=25; 
    } 
    public void makeMove(Graphics canvas) 
    { 
     if (curloc==1 && left) 
     { 
      curloc=2; 
     } 
     else if (curloc==1 && right) 
     { 
      curloc=3; 
     } 
     else if (curloc==2 && right) 
     { 
      curloc=1; 
     } 
     else if (curloc==3 && left) 
     { 
      curloc=1; 
     } 
     else if (curloc==3 && up) 
     { 
      curloc=4; 
     } 
     else if (curloc==4 && down) 
     { 
      curloc=3; 
     } 
     else if (curloc==4 && up) 
     { 
      curloc=5; 
     } 
     else if (curloc==5 && down) 
     { 
      curloc=4; 
     } 
     else if (curloc==5 && left) 
     { 
      curloc=6; 
     } 
     else if (curloc==6 && right) 
     { 
      curloc=5; 
     } 
     else if (curloc==6 && left) 
     { 
      curloc=7; 
     } 
     else if (curloc==6 && up) 
     { 
      curloc=11; 
     } 
     else if (curloc==7 && up) 
     { 
      curloc=6; 
     } 
     else if (curloc==7 && down) 
     { 
      curloc=8; 
     } 
     else if (curloc==8 && up) 
     { 
      curloc=7; 
     } 
     else if (curloc==8 && right) 
     { 
      curloc=9; 
     } 
     else if (curloc==9 && right) 
     { 
      curloc=10; 
     } 
     else if (curloc==10) 
     { 
      //freedom! 
     } 
     else if (curloc==11 && down) 
     { 
      curloc=6; 
     } 
    } 
    public void ran(int randomnumber,int curloc ,Graphics canvas) 
    { 
     if (curloc==2 && randomnumber==1) 
     { 
      canvas.drawString("Random Events: ",10,80); 
      canvas.drawString("You have gained 10 health", 10, 100); 
      health=health+10; 
     } 
     if (curloc==2 && randomnumber==2) 
     { 
      canvas.drawString("Random Events: ",10,80); 
      canvas.drawString("None", 10, 100); 
     } 
     if (curloc==2 && randomnumber==3) 
     { 
      canvas.drawString("Random Events: ",10,80); 
      canvas.drawString("None", 10, 100); 
     } 
     if (curloc==2 && randomnumber==4) 
     { 
      canvas.drawString("Random Events: ",10,80); 
      canvas.drawString("None", 10, 100); 
     } 
     if (curloc==2 && randomnumber==5) 
     { 
      canvas.drawString("Random Events: ",10,80); 
      canvas.drawString("You have gained 10 strength", 10, 100); 
      strength=strength+10; 
     } 
     if (curloc==2 && randomnumber==6) 
     { 
      canvas.drawString("Random Events: ",10,80); 
      canvas.drawString("None", 10, 100); 
     } 
     if (curloc==2 && randomnumber==7) 
     { 
      canvas.drawString("Random Events: ",10,80); 
      canvas.drawString("None", 10, 100); 
     } 
     if (curloc==2 && randomnumber==8) 
     { 
      canvas.drawString("Random Events: ",10,80); 
      canvas.drawString("None", 10, 100); 
     } 
     if (curloc==2 && randomnumber==9) 
     { 
      canvas.drawString("Random Events: ",10,80); 
      canvas.drawString("None", 10, 100); 
     } 
     if (curloc==2 && randomnumber==10) 
     { 
      canvas.drawString("Random Events: ",10,80); 
      canvas.drawString("You trip and fall and break your ankle", 10, 100); 
      canvas.drawString("You lose 5 health",10,120); 
      health=health-5; 
     } 
     //showers 
     if (curloc==3 && randomnumber==1) 
     { 
      canvas.drawString("Random Events: ",10,80); 
      canvas.drawString("None", 10, 100); 
     } 
     if (curloc==3 && randomnumber==2) 
     { 
      canvas.drawString("Random Events: ",10,80); 
      canvas.drawString("None",10,100); 
     } 
     if (curloc==3 && randomnumber==3) 
     { 
      canvas.drawString("Random Events: ",10,80); 
      canvas.drawString("You find an Energy Drink", 10, 100); 
      canvas.drawString("You gain 10 strength",10,120); 
      strength=strength+10; 
     } 
     if (curloc==3 && randomnumber==4) 
     { 
      canvas.drawString("Random Events: ",10,80); 
      canvas.drawString("None", 10, 100); 
     } 
     if (curloc==3 && randomnumber==5) 
     { 
      canvas.drawString("Random Events: ",10,80); 
      canvas.drawString("None", 10, 100); 
     } 
     if (curloc==3 && randomnumber==6) 
     { 
      canvas.drawString("Random Events: ",10,80); 
      canvas.drawString("You trip and fall and break your ankle", 10, 100); 
      canvas.drawString("You lose 5 health",10,120); 
      health=health-5; 
     } 
     if (curloc==3 && randomnumber==7) 
     { 
      canvas.drawString("Random Events: ",10,80); 
      canvas.drawString("You find a First Aid Kit", 10, 100); 
      canvas.drawString("You gain 25 health",10,120); 
      health=health+25; 
     } 
     if (curloc==3 && randomnumber==8) 
     { 
      canvas.drawString("Random Events: ",10,80); 
      canvas.drawString("You trip and fall and break your ankle", 10, 100); 
      canvas.drawString("You lose 5 health",10,120); 
      health=health-5; 
     } 
     if (curloc==3 && randomnumber==9) 
     { 
      canvas.drawString("Random Events: ",10,80); 
      canvas.drawString("none", 10, 100); 
     } 
     if (curloc==3 && randomnumber==10) 
     { 
      canvas.drawString("Random Events: ",10,80); 
      canvas.drawString("You slip and fall and break your nose", 10, 100); 
      canvas.drawString("You lose 5 health",10,120); 
      health=health-5; 
     } 
     if (curloc==10 && randomnumber==1) 
     { 
      canvas.drawString("You lunge at the warden. ",10,80); 
      canvas.drawString("He dodges and you lose 5 health", 10, 100); 
      health=health-5; 
     } 
     if (curloc==10 && randomnumber==2) 
     { 
      canvas.drawString("You lunge at the warden. ",10,80); 
      canvas.drawString("He dodges and you lose 5 health", 10, 100); 
      health=health-5; 
     } 
     if (curloc==10 && randomnumber==3) 
     { 
      canvas.drawString("You lunge at the warden. ",10,80); 
      canvas.drawString("He dodges and you lose 0 health", 10, 100); 
     } 
     if (curloc==10 && randomnumber==4) 
     { 
      canvas.drawString("You lunge at the warden. ",10,80); 
      canvas.drawString("He attacks and you lose 5 health", 10, 100); 
      health=health-5; 
     } 
     if (curloc==10 && randomnumber==5) 
     { 
      canvas.drawString("You lunge at the warden. ",10,80); 
      canvas.drawString("He attacks and you lose 0 health", 10, 100); 
     } 
     if (curloc==10 && randomnumber==6) 
     { 
      canvas.drawString("You lunge at the warden. ",10,80); 
      canvas.drawString("He attacks and you lose 5 health", 10, 100); 
      health=health-5; 
     } 
     if (curloc==10 && randomnumber==7) 
     { 
      canvas.drawString("You lunge at the warden. ",10,80); 
      canvas.drawString("He attacks and you lose 0 health", 10, 100); 
     } 
     if (curloc==10 && randomnumber==8) 
     { 
      canvas.drawString("You lunge at the warden. ",10,80); 
      canvas.drawString("He attacks and you lose 5 health", 10, 100); 
      health=health-5; 
     } 
     if (curloc==10 && randomnumber==9) 
     { 
      canvas.drawString("You lunge at the warden. ",10,80); 
      canvas.drawString("He attacks and you lose 0 health", 10, 100); 
     } 
     if (curloc==10 && randomnumber==10) 
     { 
      canvas.drawString("You lunge at the warden. ",10,80); 
      canvas.drawString("He attacks and you lose 5 health", 10, 100); 
      health=health-5; 
     } 


    } 
    public void fight (Graphics canvas, int fightcount,int curloc) 
    { 

     if(curloc==10) 
     { 
      fightcount=fightcount-1; 
     } 
     else if (curloc==10 && fightcount==0) 
     { 
      JOptionPane.showMessageDialog(null, "You Win!"); 
     } 
    } 
    { 

    } 
    public void dispLoc(Graphics canvas) 
    { 
     if (curloc==1) 
     { 
      room1(canvas); 
      //cell 
     } 
     if (curloc==2) 
     { 
      room2(canvas); 
      //training 
     } 
     if (curloc==3) 
     { 
      room3(canvas); 
      //showers 
     } 
     if (curloc==4) 
     { 
      room4(canvas); 
      //Cell Block C 
     } 
     if (curloc==5) 
     { 
      room5(canvas); 
      //Security Room1 
     } 
     if (curloc==6) 
     { 
      room6(canvas); 
      //Guard Post 
     } 
     if (curloc==7) 
     { 
      room7(canvas); 
      //Courtyard 
     } 
     if (curloc==8) 
     { 
      room8(canvas); 
      //Security Room 2 
     } 
     if (curloc==9) 
     { 
      room9(canvas); 
      //Tank 
     } 
     if (curloc==10) 
     { 
      room10(canvas); 
      //Freedom 
     } 
     if (curloc==11) 
     { 
      room11(canvas); 
      //Solitary Confinement 
     } 
    } 
    public void stats(Graphics canvas) 
    { 
     canvas.drawString("Health: " + health, 750, 10); 
     canvas.drawString("Strength: " + strength, 750, 30); 
    } 
    public void health(Graphics canvas, int health) 
    { 
     if (health==0) 
     { 
      JOptionPane.showMessageDialog(null,"You Died Game over!"); 
      System.exit(0); 
     } 
    } 
    public void delayGame(double numSecs) 
    { 
     double delayTime = 1000 * numSecs; 
     long startDelay = System.currentTimeMillis(); 
     long endDelay = 0; 

     while (endDelay - startDelay < delayTime) 
     { 
      endDelay = System.currentTimeMillis(); 
     } 
    } 
    public int randomnum() 
    { 
     int n1=0; 
     n1=(int) (Math.random()*10+1); 
     return n1; 
    } 
    public void clearScreen(Graphics g) 
    { 
     g.setColor(Color.BLACK); 
     g.fillRect(0,0,5000,5000); 
    } 
    public void keyPressed(KeyEvent e) 
    { 
     int key = e.getKeyCode(); 


     if (key == KeyEvent.VK_LEFT) 
     { 
     left = true; 
     repaint(); 
     } 

     if (key == KeyEvent.VK_DOWN) 
     { 
     down = true; 
     repaint(); 
     } 

     if (key == KeyEvent.VK_RIGHT) 
     { 
     right = true; 
     repaint(); 
     } 

     if (key == KeyEvent.VK_UP) 
     { 
     up = true; 
     repaint(); 
     } 

     if (key == KeyEvent.VK_SPACE) 
     { 
     space = true; 
     repaint(); 
     } 

     if (key == KeyEvent.VK_ENTER) 
     { 
     enter = true; 
     repaint(); 
     } 

    } 
    public void focusGained(FocusEvent evt) {focus=true; repaint();} 
    public void focusLost(FocusEvent evt) {focus=false;} 
    public void keyReleased(KeyEvent e){} 
    public void keyTyped(KeyEvent e) {} 
    public void restart(Graphics g){} 

} 
+2

哇TL;博士...什麼是錯誤您收到? – alpian 2011-04-26 13:46:51

+0

老闆打鬥易變不會改變。我不知道如何解決它。 – chriss 2011-04-26 13:48:13

+1

結束遊戲有什麼問題?當你粘貼這些代碼時,你自然必須解釋一些有關這些問題的信息,如果有的話。 – asgs 2011-04-26 13:48:39

回答

4

的其餘部分的代碼,「問題」塊,如果第二個「如果」是真實的,第一個將永遠是真實的,以及,右?因此,第一個將始終運行,第二個被「其他」阻止,並且永遠不會運行。你可以把「其他」的條件首先,或更好地做類似

if(curloc==10) 
{ 
    if (fightcount==0) { 
     JOptionPane.showMessageDialog(null, "You Win!"); 
    } else {  
     fightcount=fightcount-1; 
    } 
} 
+0

讓我試試這真的很快 – chriss 2011-04-26 13:50:23

+0

nope,仍然沒有工作 – chriss 2011-04-26 13:52:34

+0

fightcount變量保持在10. – chriss 2011-04-26 13:52:56

3

好的,我假設你在談論fightcount變量的戰鬥方法?如果是這樣,那麼它不會改變,因爲你正在遞減傳入的int,一旦該方法完成,這將不起作用。

int fightcount; 
public void fight (Graphics canvas, int curloc) 
{ 
    if(curloc==10) 
    { 
     fightcount=fightcount-1; 
    } 
    else if (curloc==10 && fightcount==0) 
    { 
     JOptionPane.showMessageDialog(null, "You Win!"); 
    } 
} 

我不建議你真正做到這一點,因爲這是可怕的代碼和上面只是一個例子,但你需要更新生活的方法外fightcount場。即不是方法參數...

+0

我不明白你想說什麼 – chriss 2011-04-26 13:54:42

+0

我已經添加了一些解釋代碼 – alpian 2011-04-26 13:58:02

2

fight()方法只改變fightcount的本地副本。如果你通過10,那麼它會改變爲9但而不是以外的fight()方法。

如果你想在全球範圍內改變它,聲明它static,不要把它傳遞給fight()(不傷害,但混淆)


一些解釋:

int是java基元和原語是,值爲。所以實際上您將值發送給方法,並且而不是對外部fightcount變量的引用。在該方法中,輸入值被分配給新的局部變量(fightcount),並且該變量的值遞減。


快速修復(如上面所建議的):

取代

int strength=0, health=100, curloc=1,randomnumber=0,fightcount=10; 

static int fightcount = 10; 
int strength=0, health=100, curloc=1,randomnumber=0; 

和方法簽名

public void fight (Graphics canvas, int fightcount,int curloc) 

public void fight (Graphics canvas, int curloc) 
+0

所以我必須使它成爲一個int而不是一個無效的方法並返回戰鬥計數。 – chriss 2011-04-26 13:55:20

+0

我相信他意味着你需要將它變成一個靜態字段,而不是該方法的一個參數。 – IanGilham 2011-04-26 14:06:24

+0

@wardedmocha - 我編輯了我的答案幷包含代碼片段以解決您的問題 – 2011-04-26 14:10:36