2016-05-04 2 views
0

Я новичок в java и в настоящее время работаю над своей первой игрой! Мне было интересно, хотя, я знаю, как сделать кнопки и вещи, подобные этому, благодаря книге, которую я читал. Однако создание BufferedImage в кликабельный объект? Это никогда не было закрыто, но я нуждаюсь в нем, так как это игра-кликер, и я бы хотел, чтобы пользователь щелкнул монстра, который находится в его собственном классе, а затем нарисовал через drawImage.Имея некоторые проблемы с созданием BufferedImage clickable

Может ли кто-нибудь оказать мне поддержку в совершении этого? Также возможно ли это сделать в классе монстров и поддерживать интерактивную функцию даже после рисования? Я пробовал исследовать это, и мне кажется, что мне нужно прослушивать мышь, но это не распространяется на то, как; не до уровня моего понимания в любом случае. Я приношу извинения; Я довольно глупый.

//Imports 
    import javax.swing.*; 
    import javax.swing.event.*; 
    import java.awt.event.*; 
    import java.awt.*; 
    import java.awt.image.*; 
    import java.io.*; 
    import javax.imageio.*; 
    import java.util.*; 

    public class Monster 
    { 
    static final double BASE_MONSTER_HEALTH = 10; 

    static double monsterHealth; 
    static double monsterDamage; 

    BufferedImage monsterSprite; 
    String monsterName; 
    Random rand = new Random(); 

    public Monster() 
    { 
     monsterHealth = Math.pow(RPGClicker.room, 2) * BASE_MONSTER_HEALTH; 
     monsterDamage = RPGClicker.room + 1 - RPGClicker.defenceLevel; 
    //Types of monsters. 
     String monster[] = {"Ork", "Mermaid", "Goblin", "Fish", "Griffen", "Cerberus", "Empousai", "Gorgon", "Stymphalian Bird", "Chimera", "Ichthyocentaur", "Typhon", "Minotaur", "Fury", "Hydra", "Sphinx"}; 
     String monsterType = monster[rand.nextInt(monster.length)]; 
     monsterSprite = ImageLoader.loadImage("rec/alpha/monster/" + monsterType + ".png"); 
    //Friends. <3 
     String[] firstName = {"Lucas", "Ben", "Caytlynn", "Fay", "Seth", "Jostein", "Paige", "Luis", "Josefiina", "Patricia", "Angus", "David", "Manjit", "Matt", "Maya", "Richard", "Roman", "Rudy", "Téa", "Fi"}; 
     String connection1 = " the "; 
    //Adjectives 
     String[] secondName = {"Powerful ", "Unstoppable ", "Almighty ", "Vigourous ", "Formidible ", "Mighty ", "Cowardly ", "Intoxicated "}; 
     String connection2 = " of "; 
    //The seven deadly sins/the sins of which each demon represents. 
     String[] thirdName = {"Sloth", "Wrath", "Pride", "Greed", "Lust", "Envy", "Gluttony"}; 

     monsterName = firstName[rand.nextInt(firstName.length)] + connection1 + secondName[rand.nextInt(secondName.length)] + monsterType + connection2 + thirdName[rand.nextInt(thirdName.length)]; 
    } 
    } 

ответ

0

Я думаю, что в качестве стартера в течение 10 вы могли бы рассмотреть возможность поворота изображения в JButton - расширить JButton и перегрузить метод paintComponents - это сделало бы его интерактивным.

+0

Я думаю, что в качестве стартера для 10 вы можете рассмотреть возможность превратить изображение в JButton - расширить JButton и перегрузить метод paintComponents - это сделало бы его интерактивным. Я так думал! Но я хочу, чтобы иметь возможность изменять графику на нем тоже, я не пробовал, но могу ли я заставить JButton изменить изображение на нем сам на полсекунды, когда его щелкнули и изменили? Несмотря на это, я думаю о том, чтобы сделать это как временное решение, чтобы я мог, по крайней мере, продолжить кодирование основ игры. Это было то, о чем я просто хотел спросить, прежде чем делать это. –

+0

Перегрузка JButton - это стандартная аксиома Swing, если вы хотите что-то, что прослушивает события щелчка мыши. Для рендеринга изображения вам необходимо переопределить метод paintComponent. – Lee

+0

О! теперь, когда я думаю об этом! Я не могу поставить JButton в пользовательское местоположение, могу ли я? Как мой монстрSprite находится в координатах x, y. Насколько я знаю, мне пришлось бы добавить JButton в JPanel; так что это было бы не так гибко, как там, где монстр мог быть помещен в игруScene? –

Смежные вопросы