Вот основной код
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 AlcatrazBreakout extends JApplet implements KeyListener, FocusListener {
int choice=0,curloc=0;
boolean focus = false;
boolean left=false, right=false, up=false, down=false, space=false, enter=false;
public double randNum(Graphics canvas)
{
double x;
x=Math.random()*100;
return x;
}
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 if (focus)
{
startbody(canvas);
}
}
public void showstats(Graphics canvas)
{
int hp=10,hpmax=10,defense=0,attack=0;
canvas.drawString("HP: " + hp ,1750,10);
canvas.drawString("/" + hpmax,1790,10);
canvas.drawString("Attack: " + attack,1750,30);
canvas.drawString("Defense: " + defense,1750,50);
}
public void startbody(Graphics canvas)
{
space=enter=left=right=up=down=false;
clearScreen(canvas);
canvas.setColor(Color.WHITE);
showstats(canvas);
canvas.drawString("You are in your cell.",0,10);
canvas.drawString("Left: To the Training Room.",0,30);
canvas.drawString("Right: To the Showers",0,50);
curloc=0;
makeMove(canvas,curloc, left,right,up,down);
canvas.drawString(" "+curloc,0,70);
}
public void train(Graphics canvas)
{
System.out.println("You are at train");
space=enter=left=right=up=down=false;
clearScreen(canvas);
canvas.setColor(Color.WHITE);
showstats(canvas);
canvas.drawString("You are in the training room.",0,10);
canvas.drawString("Right: To your cell.",0,30);
makeMove(canvas,curloc,left,right,up,down);
}
public void showers(Graphics canvas)
{
System.out.println("You are in the showers");
space=enter=left=right=up=down=false;
clearScreen(canvas);
canvas.setColor(Color.WHITE);
showstats(canvas);
canvas.drawString("You are in the showers.",0,10);
canvas.drawString("Left: To your cell.",0,30);
curloc=1;
makeMove(canvas,curloc, left,right,up,down);
}
public void cellBlockC(Graphics canvas)
{
space=enter=left=right=up=down=false;
clearScreen(canvas);
canvas.setColor(Color.WHITE);
canvas.drawString("You are in CellBlock C", 0, 10);
canvas.drawString("Left: Back to your cell",0,20);
canvas.drawString("Up: to security room 1", 0, 40);
curloc=2;
makeMove(canvas,curloc, left,right,up,down);
}
public void SecRoom1(Graphics canvas)
{
space=enter=left=right=up=down=false;
clearScreen(canvas);
canvas.setColor(Color.WHITE);
canvas.drawString("Your in Secrity room 1.", 0, 10);
canvas.drawString("Down: Back to Cell Block C",0,20);
canvas.drawString("Up: Left to Guard Post", 0, 40);
curloc=3;
makeMove(canvas,curloc, left,right,up,down);
}
public void tunnel(Graphics canvas)
{
space=enter=left=right=up=down=false;
clearScreen(canvas);
canvas.setColor(Color.WHITE);
canvas.drawString("Your in Secrity room 1.", 0, 10);
canvas.drawString("Down: Back to Cell Block C",0,20);
canvas.drawString("Up: Left to Guard Post", 0, 40);
curloc=7;
makeMove(canvas,curloc, left,right,up,down);
}
public void guardPost(Graphics canvas)
{
space=enter=left=right=up=down=false;
clearScreen(canvas);
canvas.setColor(Color.WHITE);
canvas.drawString("Your in the Guard Post.", 0, 10);
canvas.drawString("Left: to go to the Court Yard",0,20);
canvas.drawString("Right: to go to Security room 1", 0, 40);
canvas.drawString("Up: to go to Solitary Confinement",0,60);
curloc=4;
makeMove(canvas,curloc, left,right,up,down);
}
public void courtyard(Graphics canvas)
{
space=enter=left=right=up=down=false;
clearScreen(canvas);
canvas.setColor(Color.WHITE);
canvas.drawString("Your in the Court Yard", 0, 10);
canvas.drawString("Down: to Security Room 2.",0,20);
canvas.drawString("Up: To Guard Post", 0, 40);
curloc=8;
makeMove(canvas,curloc, left,right,up,down);
}
public void SecRoom2(Graphics canvas)
{
space=enter=left=right=up=down=false;
clearScreen(canvas);
canvas.setColor(Color.WHITE);
canvas.drawString("Your in Security Room 2.", 0, 10);
canvas.drawString("Up: To the Court Yard", 0, 40);
curloc=9;
makeMove(canvas,curloc, left,right,up,down);
}
public void fight(Graphics canvas)
{
space=enter=left=right=up=down=false;
clearScreen(canvas);
canvas.setColor(Color.WHITE);
canvas.drawString("Your at the Final Fight!!!", 0, 10);
curloc=11;
makeMove(canvas,curloc, left,right,up,down);
}
public void free(Graphics canvas)
{
space=enter=left=right=up=down=false;
clearScreen(canvas);
canvas.setColor(Color.WHITE);
canvas.drawString("You Won!!!!", 0, 10);
curloc=11;
makeMove(canvas,curloc, left,right,up,down);
}
public void solitaryConfinement(Graphics canvas)
{
space=enter=left=right=up=down=false;
clearScreen(canvas);
canvas.setColor(Color.WHITE);
canvas.drawString("Your in Solitary Confinement.", 0, 10);
canvas.drawString("Down: Guard Post",0,20);
curloc=5;
makeMove(canvas,curloc, left,right,up,down);
}
public void makeMove(Graphics canvas,int curloc,boolean left, boolean right, boolean up, boolean down )
{
if (curloc==0)
{
if(left)
{
train(canvas);
left=right=up=down=false;
}
}
}
public void delayGame(int numSecs)
{
int delayTime = 1000 * numSecs;
long startDelay = System.currentTimeMillis();
long endDelay = 0;
while (endDelay - startDelay < delayTime)
{
endDelay = System.currentTimeMillis();
}
}
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){}
}
, поэтому номер для curloc is bing передается в makeMove и программные ключи не работают.
спасибо
Крис с
редактирование:
You are at train
[message repeated 1075 time]
You are at train
Exception in thread "AWT-EventQueue-1" java.lang.StackOverflowError
at sun.nio.cs.SingleByteEncoder.encodeArrayLoop(Unknown Source)
at sun.nio.cs.SingleByteEncoder.encodeLoop(Unknown Source)
at java.nio.charset.CharsetEncoder.encode(Unknown Source)
at sun.nio.cs.StreamEncoder.implWrite(Unknown Source)
at sun.nio.cs.StreamEncoder.write(Unknown Source)
at java.io.OutputStreamWriter.write(Unknown Source)
at java.io.BufferedWriter.flushBuffer(Unknown Source)
at java.io.PrintStream.write(Unknown Source)
at java.io.PrintStream.print(Unknown Source)
at java.io.PrintStream.println(Unknown Source)
at AlcatrazBreakout.train(AlcatrazBreakout.java:75)
at AlcatrazBreakout.makeMove(AlcatrazBreakout.java:196)
at AlcatrazBreakout.train(AlcatrazBreakout.java:81)
at AlcatrazBreakout.makeMove(AlcatrazBreakout.java:196)
at AlcatrazBreakout.train(AlcatrazBreakout.java:81)
at AlcatrazBreakout.makeMove(AlcatrazBreakout.java:196)
at AlcatrazBreakout.train(AlcatrazBreakout.java:81)
at AlcatrazBreakout.makeMove(AlcatrazBreakout.java:196)
at AlcatrazBreakout.train(AlcatrazBreakout.java:81)
at AlcatrazBreakout.makeMove(AlcatrazBreakout.java:196)
at AlcatrazBreakout.train(AlcatrazBreakout.java:81)
at AlcatrazBreakout.makeMove(AlcatrazBreakout.java:196)
at AlcatrazBreakout.train(AlcatrazBreakout.java:81)
at AlcatrazBreakout.makeMove(AlcatrazBreakout.java:196)
at AlcatrazBreakout.train(AlcatrazBreakout.java:81)
at AlcatrazBreakout.makeMove(AlcatrazBreakout.java:196)
at AlcatrazBreakout.train(AlcatrazBreakout.java:81)
это мой вывод консоли в Eclipse