Игра начинающего программиста - Java

Узнай цену своей работы

Формулировка задачи:

В общем проблема такая есть игра, когда её запускаешь, то какой бы ты не выбрал уровень сложности то все равно выпадают только 2 вида картинок, а их 7! Код игры: okno:
// Подключения необходимых библиотек
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
 
// Класс окна, в котором размещено игровое поле
class okno extends JFrame
{   
    private static final long serialVersionUID = 1L;
    private pole gameP; // Закрытая Переменная класса - игровое поле
    private int slogn; // Закрытая Переменная класса - сложность игры
    
    // Обработчик событий нажатий на клавиши
    private class myKey implements KeyListener  
    {
            // Метод, который срабатывает при нажатии
            public void keyPressed(KeyEvent e)
            {
                // Получение кода нажатой клавиши
                int key_ = e.getKeyCode();
                
                // Выход из программы, если нажат - Esc 
                if (key_==27) System.exit(0);                               
                
                else if (key_==37) // Если нажата стрелка влево
                {
                    // Контроль перемещения влево за пределы окна
                    if (gameP.x-30>-48) gameP.x-=30;
                    else gameP.x=752;
                }
                
                /*else if (key_==38) // Если нажата стрелка вверх
                {
                    // Контроль перемещения вверх за пределы окна
                    if (gameP.y-30>0) gameP.y-=30;
                    else gameP.y=465;
                }
                
            else if (key_==40) // Если нажата стрелка down
            {
                // Контроль перемещения down за пределы окна
                if (gameP.y+30<465) gameP.y+=30;
                else gameP.y=0;
            }*/
                
                else if (key_==39) // Если нажата стрелка вправо
                {
                    // Контроль перемещения вправо за пределы окна                  
                    if (gameP.x+30<752) gameP.x+=30;
                    else gameP.x=-48;
                }
                
            }
            public void keyReleased(KeyEvent e) {}
            public void keyTyped(KeyEvent e) {}
       }                
    
    // Конструктор класса
    public okno(int slogn)
    {
        // Помещение сложности, выбранной пользователем в переменную класса
        this.setSlogn(slogn);
        // Подключение обработчика события для клавиатуры к окну        
        addKeyListener(new myKey());
        // Установка активности окна
        setFocusable(true);
        
        // Задание размеров и положения окна
        setBounds(10,10,800,600);
        // Задание заголовка окна
        setTitle("Игра: Помоги системному администратору");
        // Запрет изменения размеров окна
        setResizable(false);
        // Операция завершения работы приложения при 
        // закрытии окна
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        // Создание объекта - игрового поля
        gameP = new pole(slogn);
        // Прикрепление (вложение) панели - игрового поля в окно
        Container con = getContentPane();
        con.add(gameP);
        
        // Сделать окно видимым 
        setVisible(true);
    }
 
    public int getSlogn() {
        return slogn;
    }
 
    public void setSlogn(int slogn) {
        this.slogn = slogn;
    }
}
 
game:
 
// Подключения необходимых библиотек
import javax.swing.*;
 
// Главный класс игры
public class game {
 
    //private static okno window;
 
    private static okno window;
 
    // Главный метод, который запускает игру
    public static void main(String[] args) {
        
           // Вызов диалогового окна для ввода сложности игры
           String rez = JOptionPane.showInputDialog(null,"Введите сложность игры от 1 до 7:","Сложность игры",1);
           
           // Помещение результата выбора в переменную целого типа
           int slogn = rez.charAt(0)-'0';
           
           // Проверка, что введена цифра от 1 до 7
           if ((slogn>=1)&&(slogn<=7))
           {
              setWindow(new okno(slogn));
           }
    }
 
    public static okno getWindow() {
        return getWindow();
    }
 
    public static void setWindow(okno window) {
        game.window = window;
    }
 
}
 
pole:
 
import javax.imageio.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
 
class pole extends JPanel
{
      private Image shapka; 
      private Image fon; 
      public int x = 400;
      private int slogn; 
      public int summ=0;
      private podar[] gamePodar; 
 
      private podar[] gameBomb;
 
      private Image end_game; 
      public Timer timerUpdate,timerDraw; 
 
       public pole(int slogn)
       {           
           this.slogn = slogn;            
           try
           {
             shapka = ImageIO.read(new File("shapka.png"));
           }
           catch(IOException ex) {}
 
           try
           {
             fon = ImageIO.read(new File("fon.png"));
           }
           catch(IOException ex) {}
 
           try
           {
             end_game = ImageIO.read(new File("end_game.png"));
           }
           catch(IOException ex) {}        
 
           gamePodar = new podar[7];
           for (int n=0;n<7;n++)
           {
               try
               {
                   gamePodar[n] = new podar(ImageIO.read(new File("n"+n+".png")));
               }
               catch (IOException ex) {}
           }
       
           gameBomb = new podar[7];
           for (int i=0;i<7;i++)
           {
               try
               {
                   gameBomb[i] = new podar(ImageIO.read(new File("d"+i+".png")));
               }
               catch (IOException ex) {}
           }

           timerUpdate = new Timer(3000,new ActionListener() {              
                public void actionPerformed(ActionEvent e) {
                   updateStart();
                }
            });         
           timerUpdate.start();                
           
           timerDraw = new Timer(50,new ActionListener() {              
                public void actionPerformed(ActionEvent e) {
                   repaint(); 
                }
            });         
           timerDraw.start(); 
                                                                            
       }
           
       public void paintComponent(Graphics gr)
       {
           super.paintComponent(gr);
           gr.drawImage(fon, 0, 0, null); 
           gr.drawImage(shapka, x, 465, null); 
           ///!!!!!!!!!!!!!!!!!!!!!!!!!ОТРИСОВКА СЧЕТА ИГРЫ
           String str=Integer.toString(summ);
            gr.setFont(new Font("Courier New", Font.ITALIC, 30));
            gr.setColor(Color.white);
            gr.drawString(str, 50, 50);

           for (int i=0;i<7;i++)
           {
                   gamePodar[i].draw(gr); 
                   if (gamePodar[i].act==true) 
                   {
                   if ((gamePodar[i].y+gamePodar[i].img.getHeight(null))>=470)
                   {
                        if (Math.abs(gamePodar[i].x - x) > 75) 
                        {
                            gr.drawImage(end_game, 0, 0, null); 
                            timerDraw.stop();
                            timerUpdate.stop(); 
                            break; 
                        }
                        else {
                            gamePodar[i].act=false;
                            //СЧЕТ
                            summ=summ+1;
                        
                        }
                   }
                   }
           }
       
       //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
       for (int i=0;i<7;i++)
       {
               gameBomb[i].draw(gr); 
               if (gameBomb[i].act==true) 
               {
               if ((gamePodar[i].y+gameBomb[i].img.getHeight(null))>=470)
               {
                    if (Math.abs(gameBomb[i].x - x) < 75) 
                    {
                        gr.drawImage(end_game, 0, 0, null); 
                        timerDraw.stop();
                        timerUpdate.stop(); 
                        break; 
                    }
                    else gameBomb[i].act=false;
                  //СЧЕТ
                    summ=summ+1;
                    
               }
               }
       }

        }
      
       private void updateStart()
       {
           int kol=0; 
           for (int i=0;i<7;i++) 
           {
              if (gamePodar[i].act==false) 
              {
                 if (kol<slogn) 
                 {
                   gamePodar[i].start(); 
                   gameBomb[i].start();
                   break; 
                 }
              }
              else kol++; 
           }
       }       
}
 
podar:
/* Подключения необходимых библиотек*/
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
 
// Класс для подарка, падающего сверху
class podar {
    
    public Image img; // Изображение подарка
    public int x,y; // Положение подарка на игровом поле, в пикселях, x - отступ слева, y - отступ сверху
    public Boolean act; // Переменная логического типа, показывающая активность подарка, есть он игровом поле или нет
    Timer timerUpdate; // Таймер, отвечающий за движение подарка вниз
    
    // Конструктор класса
    public podar(Image img)
    {
        // Создание и настройка таймера, отвечающего за движение подарка вниз
        timerUpdate = new Timer(150,new ActionListener() {              
            public void actionPerformed(ActionEvent e) {
                vniz(); // Метод, осуществляющий движение подарка вниз
        }
        });     
        this.img = img; // Передача изображения из круглых скобок Конструктора класса в переменную класса
        act=false; // Изначально делаем подарок неактивным, отсутствующим на игровом поле       
    }
    
    // Метод, выполняющий активизацию подарка на игровом поле, вывод его сверху игрового поля
    public void start()
    {
        timerUpdate.setDelay(100); // Установка временной задержки для таймера
        timerUpdate.start(); // Запуск таймера
        y = 0; // Отступ сверху в пикселях
        x = (int)(Math.random()*700); // Отступ слева в пикселях, получаем случайным образом от 0 до 700
        act = true; // 
    }
    
    // Метод, осуществляющий движение подарка вниз 
    public void vniz()
    {
       if (act==true) // Если подарок активен на игровом поле
       {
          y+=9; // Увеличение отступа сверху на 10 пикселей
       }
       if ((y+img.getHeight(null))>=470) // Если подарок достиг нижней границы
       {
          timerUpdate.stop(); // Остановка таймера
       }
    }
    
    // Метод, выполянющий отрисовку подарка на игровом поле, если он активен
    public void draw(Graphics gr)
    {
        if (act==true)
        {
           gr.drawImage(img,x,y,null); // Рисование изображения
        }       
    }
}

Решение задачи: «Игра начинающего программиста»

textual
Листинг программы
gr.setFont(font);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5
Похожие ответы