Я недавно работал над следующим, после нажатия кнопки run, а затем, пройдя через несколько графических интерфейсов, он загрузится на Panal, который запускает игру, проблема в том, что он не делает то, что должен делать. ниже приведен код, который доставляет мне неприятности. я обратился к своему преподавателю по ИТ за помощью, он тоже не уверен, что идет не так.
package edge;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.ImageIcon;
import javax.swing.Timer;
public class Dungeon1 extends javax.swing.JPanel implements ActionListener, KeyListener {
private static final long serialVersionUID = 1L;
Timer timer = new Timer(1, this);
Player player = new Player();
DungeonBackground db = new DungeonBackground(0, 0);
Enemy e1 = new Enemy(200, 200);
/**
* Creates new form Dungeon1
*/
public Dungeon1() {
initComponents();
setSize(1366, 706);
timer.start();
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jLabel1 = new javax.swing.JLabel();
setBackground(new java.awt.Color(0, 0, 0));
setRequestFocusEnabled(false);
jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edge/Dundeon 1 - 1.jpg"))); // NOI18N
jLabel1.setText("\n");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, 707, Short.MAX_VALUE)
);
}// </editor-fold>
public void Paint(Graphics g) {
super.paint(g);
Graphics2D g2d = (Graphics2D) g;
ImageIcon img = new ImageIcon("Dundeon 1 - 1.jpg");
IMG = img.getImage();
g2d.drawImage(IMG, 0, 0, null);
if (firstform == true && secondform == false && thirdform == false) {
ImageIcon imageIcon2 = new ImageIcon("enemy1.bmp");
g2d.drawImage(imageIcon2.getImage(), e1.getX(), e1.getY(), this);
} else if (secondform == true && firstform == false && thirdform == false) {
ImageIcon imageIcon3 = new ImageIcon("enemy1-1.bmp");
g2d.drawImage(imageIcon3.getImage(), e1.getX(), e1.getY(), this);
secondform = false;
thirdform = true;
firstform = false;
} else if (thirdform == true && firstform == false && secondform == false) {
ImageIcon imageIcon4 = new ImageIcon("enemy1-2.bmp");
g2d.drawImage(imageIcon4.getImage(), e1.getX(), e1.getY(), this);
firstform = true;
secondform = false;
thirdform = false;
RageGUI rg1 = new RageGUI();
rg1.setVisible(true);
}
ImageIcon imageIcon = new ImageIcon("characterfinal.jpg");
g2d.drawImage(imageIcon.getImage(), player.getX(), player.getY(), this);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e1.getX() == (player.getX() + 190) && e1.getY() == player.getY()
|| e1.getY() == (player.getY() - 190) && e1.getX() == player.getX()) {
firstform = false;
secondform = true;
}
if (e1.getX() == (player.getX() - 190) && e1.getY() == player.getY()) {
firstform = false;
secondform = true;
}
if (e1.getY() == (player.getY() - 190) && e1.getX() == player.getX()) {
firstform = false;
secondform = true;
}
while (e1isalive == true) {
double rdn = Math.random();
if (rdn <= 0.25) {
e1.MoveSequence1();
}
if (rdn <= 0.5) {
e1.MoveSequence2();
}
if (rdn <= 0.75) {
e1.MoveSequence3();
}
if (rdn <= 1) {
e1.MoveSequence4();
}
}
if (player.getX() == 87 && player.getY() == 81 && player.getDirection() == 4) {
player.MoveLeft();
player.MoveDown();
}
if (player.getX() == 380 && player.getY() == 500 && player.getDirection() == 4) {
player.MoveLeft();
}
if (player.getX() == 91 && player.getY() == 520 && player.getDirection() == 4) {
player.MoveLeft();
}
if (player.getX() == 85 && player.getY()== 355 && player.getDirection() == 4) {
player.MoveLeft();
}
if (player.getX() == 284 && player.getY() == 399 && player.getDirection() == 3) {
player.MoveRight();
}
if (player.getX() == 284 && player.getY() == 399 && player.getDirection() == 1) {
player.MoveDown();
}
if (player.getX() == 649 && player.getY() == 515 && player.getDirection() == 3) {
player.MoveRight();
}
if (player.getX() == 811 && player.getY() == 243 && player.getDirection() == 2) {
player.MoveUp();
}
if (player.getX() == 811 && player.getY() == 243 && player.getDirection() == 1) {
player.MoveDown();
}
if (player.getX() == 671 && player.getY() == 365 && player.getDirection() == 4) {
player.MoveLeft();
}
if (player.getX() == 940 && player.getY() == 350 && player.getDirection() == 3) {
player.MoveLeft();
}
if (player.getX() == 812 && player.getY() == 513 && player.getDirection() == 1) {
player.MoveDown();
}
if (player.getX() == 140 && player.getY() == 150 && player.getDirection() == 4) {
player.MoveLeft();
}
if (player.getX() == 900 && player.getY() == 600 && player.getDirection() == 3 ) {
player.MoveRight();
}
if (player.getX() == 1159 && player.getY() == 461 && player.getDirection() == 3 ) {
player.MoveRight();
}
if (player.getX() == 660 && player.getY() == 110 && player.getDirection() == 4 ) {
player.MoveLeft();
}
if (player.getX() == 995 && player.getY() == 285 && player.getDirection() == 1) {
player.MoveDown();
}
if (player.getX() == 1160 && player.getY() == 120 && player.getDirection() == 3 ) {
player.MoveRight();
}
if (player.getX() == 393 && player.getY() == 634 && player.getDirection() == 4) {
System.out.println("do you want to die???"
+ " or did you think you found a secret way out of the dungeon??"
+ " well you are right, you win");
RageQuitGUI rg = new RageQuitGUI() ;
rg.setVisible(true) ;
}
repaint();
}
@Override
public void keyTyped(KeyEvent ke) {
}
@Override
public void keyPressed(KeyEvent ke) {
if (ke.getKeyCode() == KeyEvent.VK_W) {
player.MoveUp();
System.out.println("w key has been pressed");
} else if (ke.getKeyCode() == KeyEvent.VK_A) {
player.MoveLeft();
System.out.println("a key has been pressed");
} else if (ke.getKeyCode() == KeyEvent.VK_D) {
player.MoveRight();
System.out.println("d key has been pressed");
} else if (ke.getKeyCode() == KeyEvent.VK_S) {
player.MoveDown();
System.out.println("s key has been pressed");
}
if (ke.getKeyCode() == KeyEvent.VK_ALT + KeyEvent.VK_F4) {
RageQuitGUI rg = new RageQuitGUI();
rg.setVisible(true);
}
}
@Override
public void keyReleased(KeyEvent ke) {
}
boolean e1isalive = true;
boolean firstform = true;
boolean secondform = false;
boolean thirdform = false;
Image IMG;
// sometimes the code works and soetimes it doesnt.
// Variables declaration - do not modify
private javax.swing.JLabel jLabel1;
// End of variables declaration
}