Я новичок в 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)];
}
}
Я думаю, что в качестве стартера для 10 вы можете рассмотреть возможность превратить изображение в JButton - расширить JButton и перегрузить метод paintComponents - это сделало бы его интерактивным. Я так думал! Но я хочу, чтобы иметь возможность изменять графику на нем тоже, я не пробовал, но могу ли я заставить JButton изменить изображение на нем сам на полсекунды, когда его щелкнули и изменили? Несмотря на это, я думаю о том, чтобы сделать это как временное решение, чтобы я мог, по крайней мере, продолжить кодирование основ игры. Это было то, о чем я просто хотел спросить, прежде чем делать это. –
Перегрузка JButton - это стандартная аксиома Swing, если вы хотите что-то, что прослушивает события щелчка мыши. Для рендеринга изображения вам необходимо переопределить метод paintComponent. – Lee
О! теперь, когда я думаю об этом! Я не могу поставить JButton в пользовательское местоположение, могу ли я? Как мой монстрSprite находится в координатах x, y. Насколько я знаю, мне пришлось бы добавить JButton в JPanel; так что это было бы не так гибко, как там, где монстр мог быть помещен в игруScene? –