2016-05-04 25 views
0

Ich bin neu in Java und arbeite gerade an meinem ersten Spiel! Ich frage mich aber, ich weiß, wie Knöpfe und ähnliche Dinge dank dem Buch, das ich lese, machen. Allerdings ein BufferedImage in ein anklickbares Objekt machen? Dies wurde nie abgedeckt, aber ich brauche es, da es ein Clicker-Spiel ist und ich möchte, dass der Benutzer auf das Monster klicken muss, das in seiner eigenen Klasse ist und dann über drawImage gemalt wird.Probleme bei der Erstellung eines BufferedImage klickbar

Kann mir jemand Unterstützung geben, damit dies geschieht? Ist es auch möglich, dies in der Monsterklasse zu tun und die klickbare Eigenschaft auch nach dem Malen beizubehalten? Ich habe versucht, darüber zu recherchieren und es scheint, ich brauche einen Maushörer, aber es deckt nicht ganz wie; jedenfalls nicht auf einer Ebene meines Verständnisses. Ich entschuldige mich; Ich bin ziemlich dumm.

//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)]; 
    } 
    } 

Antwort

0

Ich denke, als Starter für 10 Sie könnte in Erwägung ziehen das Bild in ein JButton drehen - JButton erweitern und die paintComponents -Methodenüberladung - das wäre es anklickbar.

+0

Ich denke, als Starter für 10 könnten Sie in Betracht ziehen, das Bild in ein JButton - JButton zu erweitern und die paintComponents-Methode zu überladen - dies würde es klickbar machen. Ich dachte das! Aber ich möchte in der Lage sein, die Grafik auch zu ändern, ich habe es nicht versucht, aber könnte ich einen JButton dazu bringen, das Bild für eine halbe Sekunde zu verändern, wenn es angeklickt wird und wieder zurück geht? Egal, ich denke darüber nach, das als eine vorübergehende Lösung zu tun, so dass ich zumindest weiterhin die Grundlagen des Spiels selbst programmieren kann. Es war etwas, worüber ich einfach nachdenken wollte. –

+0

Das Überladen von JButton ist ein Standard-Swing-Axiom, wenn Sie etwas wünschen, das auf Mausklick-Ereignisse wartet. Sie müssen die paintComponent-Methode überschreiben, um das Bild zu rendern. – Lee

+0

Oh! jetzt, dass ich darüber nachdenke! Ich kann auch kein JButton an einem benutzerdefinierten Ort speichern, oder? Wie mein Monster ist Sprite bei x, y Koordinaten. Soweit ich weiß, müsste ich eine JButton zu einem JPanel hinzufügen; also wäre es nicht so flexibel, wo das Monster in der gamescene platziert werden könnte? –