这是我在开始工作时遇到问题的代码。
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){}
}发布于 2011-04-26 21:49:20
在“问题”代码块中,如果第二个" if“为真,那么第一个也总是真的,对吧?所以第一个总是运行,第二个被"else“阻塞,永远不会运行。您可以将"else“条件放在第一位,或者更好的做法是,像这样
if(curloc==10)
{
if (fightcount==0) {
JOptionPane.showMessageDialog(null, "You Win!");
} else {
fightcount=fightcount-1;
}
}发布于 2011-04-26 21:51:02
好的,我假设你说的是fight方法中的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字段。即不是方法参数...
发布于 2011-04-26 21:52:33
fight()方法仅更改fightcount的本地副本。如果您传递10,那么它将更改为9,但在fight()方法外部不是。
如果你想全局改变它,把它声明为static,不要把它传递给fight() (无伤大雅,但容易混淆)
一些解释:
int是一个java原语,原语是通过值传递的。因此,实际上您将值10发送到该方法,而不是对外部fightcount变量的引用。在该方法内部,传入的值10被分配给一个新的局部变量(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)https://stackoverflow.com/questions/5791287
复制相似问题