как ??? В игре Добавить кнопку перезагрузки после проигрыша, чтобы кнопка появлялись в JPanel после проигрыша и при нажатии на неё приложение стартовало снова.
k`
public class MainWindow extends JFrame {
public MainWindow(){
setTitle("Snake");
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setSize(340,370);
setResizable(false);
setLocation(300,200);
add(new GameField());
setVisible(true);
}
public static void main(String[] args) {
MainWindow mw = new MainWindow();
}
}
public class GameField extends JPanel
implements ActionListener{
private final int SIZE =300;
private final int DOT_SIZE = 16;
private final int ALL_DOTS = 400;
private Image dot;
private Image apple;
private int appleX;
private int appleY;
private int[] x = new int[ALL_DOTS];
private int[] y = new int[ALL_DOTS];
private int dots;
private Timer timer;
private boolean left = false;
private boolean right = true;
private boolean up = false;
private boolean down = false;
private boolean inGame = true;
public GameField() {
setBackground(Color.gray);
loadImages();
initGame();
addKeyListener(new FieldKeyListener());
setFocusable(true);
}
public void initGame(){
dots = 3;
for (int i = 0; i < dots; i++) {
x[i] = 48 - i*DOT_SIZE;
y[i] = 48;
}
timer = new Timer(250,this);
timer.start();
createApple();
}
public void createApple(){
appleX = new
Random().nextInt(20)*DOT_SIZE;
appleY = new
Random().nextInt(20)*DOT_SIZE;
}
public void loadImages(){
ImageIcon iia = new ImageIcon("apple.png");
apple = iia.getImage();
ImageIcon iid = new ImageIcon("dot.png");
dot = iid.getImage();
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
for(int x=0; x <= SIZE*DOT_SIZE;
x+=DOT_SIZE){
g.drawLine(x, 0, x, SIZE*DOT_SIZE);
}
for(int y=0; y <= SIZE*DOT_SIZE;
y+=DOT_SIZE){
g.drawLine(0, y,SIZE*DOT_SIZE, y );
}
if(inGame){
g.drawImage(apple,appleX,appleY,this);
for (int i = 0; i < dots; i++) {
g.drawImage(dot,x[i],y[i],this);
}
}
else {
String str = "Game Over !!!";
Font f = new Font(
"Arial",Font.BOLD, 24); //размер шрифта
в конце
g.setColor(Color.red);
g.setFont (f);
g.drawString (str, 85, SIZE/2);
}
}
public void move(){
for (int i = dots; i > 0; i--) {
x[i] = x[i-1];
y[i] = y[i-1];
}
if(left){
x[0] -= DOT_SIZE;
}
if(right){
x[0] += DOT_SIZE;
} if(up){
y[0] -= DOT_SIZE;
} if(down){
y[0] += DOT_SIZE;
}
}
public void checkApple(){
if(x[0] == appleX && y[0] == appleY){
dots++;
createApple();
}
}
public void checkCollisions(){
for (int i = dots; i >0 ; i--) {
if(i>4 && x[0] == x[i] && y[0] ==
y[i]){
inGame = false;
}
}
if(x[0]>SIZE){
inGame = false;
}
if(x[0]<0){
inGame = false;
}
if(y[0]>SIZE){
inGame = false;
}
if(y[0]<0){
inGame = false;
}
}
@Override
public void actionPerformed(ActionEvent e) {
if(inGame){
checkApple();
checkCollisions();
move();
}
repaint();
}
class FieldKeyListener extends KeyAdapter{
@Override
public void keyPressed(KeyEvent e) {
super.keyPressed(e);
int key = e.getKeyCode();
if(key == KeyEvent.VK_LEFT &&
!right){
left = true;
up = false;
down = false;
}
if(key == KeyEvent.VK_RIGHT &&
!left){
right = true;
up = false;
down = false;
}
if(key == KeyEvent.VK_UP && !down){
right = false;
up = true;
left = false;
}
if(key == KeyEvent.VK_DOWN && !up){
right = false;
down = true;
left = false;
}`
могу только написать как это делал я в свое время, хоть Вы и просите немного другое, вдруг это поможет.
newGame.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
remove(gameField);
gameField = new GameField();
add(gameField);
gameField.revalidate();
}
});
gameField
- это мой класс со всей прорисовкой, т.е. по нажатию на кнопку newGame
выполняется удаление прорисовки, и ее повторное создание, но у меня кнопка постоянно видна, но если вы хотите сделать ее изначально невидимой, просто создайте ее заранее, и потом после срабатывания метода о завершении игры, дайте ей setVisible(true);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть приложение которое работает с wordpress, контент открывается через webviewИ вот когда я нажимаю на ссылку в webview она открывается во внешнем браузере,...
В учебных целях делаю приложение которое собирает строку (банковский счёт) из разных значений согласно этой таблице первые 3 символа счёта...
Как правильно обрабатывать RuntimeException? Например, у меня есть следующий код: