Java 如何使我的主菜单按钮在我的游戏中工作
我正在为我的游戏制作主菜单,但我不知道如何使我的按钮正常工作。Java 如何使我的主菜单按钮在我的游戏中工作,java,lwjgl,Java,Lwjgl,我正在为我的游戏制作主菜单,但我不知道如何使我的按钮正常工作。 我正在使用Slic2D和LWJGL库 我的游戏菜单类: package lt.CobaltPlanet.nelixus.state; import org.newdawn.slick.*; import org.newdawn.slick.state.*; public class GameMenu extends BasicGameState{ Image Backgruond,Game_Title; I
我正在使用
Slic2D
和LWJGL
库
我的游戏菜单类:
package lt.CobaltPlanet.nelixus.state;
import org.newdawn.slick.*;
import org.newdawn.slick.state.*;
public class GameMenu extends BasicGameState{
Image Backgruond,Game_Title;
Image play,play_hover,play_pressed;
Image option,option_hover,option_pressed;
Image quit,quit_hover,quit_pressed;
public GameMenu(int state){
}
public void init(GameContainer gamecontainer1, StateBasedGame statebasedgame1) throws SlickException{
Game_Title = new Image("res/Game_Title.png");
Backgruond = new Image("res/BG.png");
play = new Image("res/Main_menu_buttons/play.png");
play_hover = new Image("res/Main_menu_buttons/play_hover.png");
play_pressed = new Image("res/Main_menu_buttons/play_pressed.png");
quit = new Image("res/Main_menu_buttons/quit.png");
quit_hover = new Image("res/Main_menu_buttons/quit_hover.png");
quit_pressed = new Image("res/Main_menu_buttons/quit_pressed.png");
option = new Image("res/Main_menu_buttons/options.png");
option_hover = new Image("res/Main_menu_buttons/options_hover.png");
option_pressed = new Image("res/Main_menu_buttons/options_pressed.png");
}
public void render(GameContainer gamecontainer1, StateBasedGame statebasedgame1, Graphics g1) throws SlickException{
Backgruond.draw(0,0);
play.draw(205,206);
option.draw(205,286);
quit.draw(205, 366);
Game_Title.draw(0,-100);
//Mouse Position
g1.drawString(mousePos, 10, 25);
}
public void update(GameContainer gamecontainer1, StateBasedGame statebasedgame1, int delta1) throws SlickException{
}
public int getID(){
return 1;
}
}
看一看,看一看。您需要鼠标位置:
int mousePosX = Mouse.getX();
int mousePosY = Mouse.getY();
并检查是否单击了鼠标:
Mouse.isButtonDown(0);
使用Slick的矩形。包含(float x,float y)
查看该点是否在按钮的点击框中。假设您有一个设置了光滑矩形的按钮:
if(Mouse.isButtonDown(0) && buttonHitbox.contains(mousePosX, mousePosY)) {
System.out.println("The button was clicked!");
}
更新:
if(quitRect.contains(Mouse.getX(), Mouse.getY()) {
//draw hover image
quit_hover.draw();
//check if button is pressed
if(Mouse.isButtonDown(0)) {
System.out.println("Button pressed");
}
}
package lt.CobaltPlanet.nelixus.state;
import org.newdawn.slick.*;
import org.newdawn.slick.state.*;
import org.newdawn.slick.geom.*;
public class GameMenu extends BasicGameState{
boolean playHover = false;
Rectangle playRect;
Image Backgruond,Game_Title;
Image play,play_hover,play_pressed;
Image option,option_hover,option_pressed;
Image quit,quit_hover,quit_pressed;
public GameMenu(int state){
}
public void init(GameContainer gamecontainer1, StateBasedGame statebasedgame1) throws SlickException{
Game_Title = new Image("res/Game_Title.png");
Backgruond = new Image("res/BG.png");
play = new Image("res/Main_menu_buttons/play.png");
playRect = new Rectangle(205, 206, play.getWidth(), play.getHeight());
play_hover = new Image("res/Main_menu_buttons/play_hover.png");
play_pressed = new Image("res/Main_menu_buttons/play_pressed.png");
quit = new Image("res/Main_menu_buttons/quit.png");
quit_hover = new Image("res/Main_menu_buttons/quit_hover.png");
quit_pressed = new Image("res/Main_menu_buttons/quit_pressed.png");
option = new Image("res/Main_menu_buttons/options.png");
option_hover = new Image("res/Main_menu_buttons/options_hover.png");
option_pressed = new Image("res/Main_menu_buttons/options_pressed.png");
}
public void render(GameContainer gamecontainer1, StateBasedGame statebasedgame1, Graphics g1) throws SlickException{
Backgruond.draw(0,0);
play.draw(205,206);
option.draw(205,286);
quit.draw(205, 366);
if(playHover) play_hover.draw(205, 206);
Game_Title.draw(0,-100);
//Mouse Position
g1.drawString(mousePos, 10, 25);
}
public void update(GameContainer gamecontainer1, StateBasedGame statebasedgame1, int delta1) throws SlickException{
playHover = false;
if(playRect.contains(Mouse.getX(), Mouse.getY()) {
playHover = true;
if(Mouse.isbuttonDown(0)) {
System.out.println("The button was pressed!");
}
}
}
public int getID(){
return 1;
}
}
这也会绘制悬停图像
更新II:
if(quitRect.contains(Mouse.getX(), Mouse.getY()) {
//draw hover image
quit_hover.draw();
//check if button is pressed
if(Mouse.isButtonDown(0)) {
System.out.println("Button pressed");
}
}
package lt.CobaltPlanet.nelixus.state;
import org.newdawn.slick.*;
import org.newdawn.slick.state.*;
import org.newdawn.slick.geom.*;
public class GameMenu extends BasicGameState{
boolean playHover = false;
Rectangle playRect;
Image Backgruond,Game_Title;
Image play,play_hover,play_pressed;
Image option,option_hover,option_pressed;
Image quit,quit_hover,quit_pressed;
public GameMenu(int state){
}
public void init(GameContainer gamecontainer1, StateBasedGame statebasedgame1) throws SlickException{
Game_Title = new Image("res/Game_Title.png");
Backgruond = new Image("res/BG.png");
play = new Image("res/Main_menu_buttons/play.png");
playRect = new Rectangle(205, 206, play.getWidth(), play.getHeight());
play_hover = new Image("res/Main_menu_buttons/play_hover.png");
play_pressed = new Image("res/Main_menu_buttons/play_pressed.png");
quit = new Image("res/Main_menu_buttons/quit.png");
quit_hover = new Image("res/Main_menu_buttons/quit_hover.png");
quit_pressed = new Image("res/Main_menu_buttons/quit_pressed.png");
option = new Image("res/Main_menu_buttons/options.png");
option_hover = new Image("res/Main_menu_buttons/options_hover.png");
option_pressed = new Image("res/Main_menu_buttons/options_pressed.png");
}
public void render(GameContainer gamecontainer1, StateBasedGame statebasedgame1, Graphics g1) throws SlickException{
Backgruond.draw(0,0);
play.draw(205,206);
option.draw(205,286);
quit.draw(205, 366);
if(playHover) play_hover.draw(205, 206);
Game_Title.draw(0,-100);
//Mouse Position
g1.drawString(mousePos, 10, 25);
}
public void update(GameContainer gamecontainer1, StateBasedGame statebasedgame1, int delta1) throws SlickException{
playHover = false;
if(playRect.contains(Mouse.getX(), Mouse.getY()) {
playHover = true;
if(Mouse.isbuttonDown(0)) {
System.out.println("The button was pressed!");
}
}
}
public int getID(){
return 1;
}
}
这是您的代码,我添加了播放按钮的功能。现在你应该可以自己做剩下的事了。什么特别的不起作用?我需要测试玩家何时按下按钮或没有任何帮助?请帮助我使按钮起作用:)没有帮助?我不知道如何设置位置:
如果((xpos>683)和((xpos<920)和((ypos>440)和((ypos<478)){
ohh我有自定义按钮你是什么意思,自定义按钮?我看到你在使用图像。我使用图像作为按钮,在你在某些位置绘制它们,对吗?现在,对于每个图像,你创建一个矩形实例,其位置/大小与它们绘制的位置/大小相同。然后,对于每个按钮矩形,你进行我在中提到的检查我的答案是肯定的,但我不知道如何设置posif((xpos>683)和&(xpos<920)和&(ypos>440)和&(ypos<478))