2011-04-26 65 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