Игра начинающего программиста - 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);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д