首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >让游戏正确结束时出现问题

让游戏正确结束时出现问题
EN

Stack Overflow用户
提问于 2011-04-26 21:45:17
回答 3查看 134关注 0票数 0

这是我在开始工作时遇到问题的代码。

代码语言:javascript
复制
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!");
    }
}

下面是代码的其余部分

代码语言:javascript
复制
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){}

}
EN

回答 3

Stack Overflow用户

发布于 2011-04-26 21:49:20

在“问题”代码块中,如果第二个" if“为真,那么第一个也总是真的,对吧?所以第一个总是运行,第二个被"else“阻塞,永远不会运行。您可以将"else“条件放在第一位,或者更好的做法是,像这样

代码语言:javascript
复制
if(curloc==10)
{
    if (fightcount==0) {
        JOptionPane.showMessageDialog(null, "You Win!");
    } else {    
        fightcount=fightcount-1;
    }
}
票数 4
EN

Stack Overflow用户

发布于 2011-04-26 21:51:02

好的,我假设你说的是fight方法中的fightcount变量?如果是这样,那么它不会改变,因为您正在递减传递的int,一旦该方法完成,这将不会产生任何影响。

代码语言:javascript
复制
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字段。即不是方法参数...

票数 3
EN

Stack Overflow用户

发布于 2011-04-26 21:52:33

fight()方法仅更改fightcount的本地副本。如果您传递10,那么它将更改为9,但在fight()方法外部不是

如果你想全局改变它,把它声明为static,不要把它传递给fight() (无伤大雅,但容易混淆)

一些解释:

int是一个java原语,原语是通过值传递的。因此,实际上您将值10发送到该方法,而不是对外部fightcount变量的引用。在该方法内部,传入的值10被分配给一个新的局部变量(fightcount),并且该变量的值被递减。

快速修复(如上所述):

替换

代码语言:javascript
复制
int strength=0, health=100, curloc=1,randomnumber=0,fightcount=10;

使用

代码语言:javascript
复制
static int fightcount = 10;
int strength=0, health=100, curloc=1,randomnumber=0;

和方法签名

代码语言:javascript
复制
public void fight (Graphics canvas, int fightcount,int curloc)

使用

代码语言:javascript
复制
public void fight (Graphics canvas, int curloc)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5791287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档