「java按钮游戏」游戏按钮教程
今天给各位分享java按钮游戏的知识,其中也会对游戏按钮教程进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
java游戏开发,怎么实现点击按钮进入游戏
我觉得可以这样:
假设欢迎界面用的是一个JPanel 叫WelcomePanel
游戏界面用的是一个GamePanel
开始按钮在WelcomePanel内,点击后调用JFrame的移除方法移除WelcomePanel,并添加GamePanel
以前写游戏的时候到从来没用过你这种思想,一般都是搞一个狭长的MenuPanel在傍边,
像开始游戏,暂停之类的功能按钮都写在那一个panel里面。
JAVA 我想在界面按钮里(开始游戏)按一下就可以进入游戏..该怎麼辨?十分紧急!
把按钮添加当前JFrame(也就是你这里的Exam_s5s17)为监听者,把Exam_s5s17实现ActionListener接口, 最后在事件处理方法(actionPerformed)里面写 按钮被点击,关闭当前面板打开开始游戏后的面板(也就是new 一个开始游戏后的面板) 因为你这里也没给其他的代码,所以我也不知道怎么具体写给你, 只能给你讲步骤。不知道我说的 是不是你想要的
用JAVA编一个带按钮边框的游戏,程序少点,谢谢了。
//我做的一个简单的拼图游戏
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.border.LineBorder;
public class Pingtu extends JFrame implements MouseListener,KeyListener{
private static final long serialVersionUID = 1L;
private JList listResult;
private JPanel panMain;
private JPanel panGame;
private JPanel panRight;
private DefaultComboBoxModel dcbm;
private JTextField txtCount;
private JTextField txtLevel;
private JLabel [][] labels;
private final int MAX_LEVEL = 10;
private int[][] nums;
private int level;
private long clickCount = 0L;
/**
* Create the frame
*/
public Pingtu() {
super();
addComponentListener(new ComponentAdapter() {
public void componentResized(final ComponentEvent e) {
JFrame jf = (JFrame)e.getSource();
if(jf.getHeight()400) jf.setSize(jf.getWidth(),400);
if(jf.getWidth()600) jf.setSize(600,jf.getHeight());
panRight.setBounds(jf.getWidth()-panRight.getWidth()-10,10,panRight.getWidth(),jf.getContentPane().getHeight()-20);
panGame.setBounds(10,10,jf.getWidth()-panRight.getWidth()-30,jf.getContentPane().getHeight()-20);
listResult.setSize(listResult.getWidth(), panRight.getHeight()-listResult.getY()-10);
}
});
setName("frmMain");
setTitle("拼图");
setBounds(100, 100, 579, 438);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panMain = new JPanel();
panMain.setLayout(null);
getContentPane().add(panMain, BorderLayout.CENTER);
panGame = new JPanel();
panGame.setLayout(null);
panGame.setBounds(10, 10, 358, 385);
panMain.add(panGame);
panRight = new JPanel();
panRight.setBackground(Color.CYAN);
panRight.setLayout(null);
panRight.setBounds(374, 10, 187, 385);
panMain.add(panRight);
txtLevel = new JTextField();
txtLevel.setText("3");
txtLevel.setBounds(62, 43, 87, 22);
panRight.add(txtLevel);
final JLabel label = new JLabel();
label.setText("行数:");
label.setBounds(10, 45, 39, 18);
panRight.add(label);
final JButton btnStart = new JButton();
btnStart.addMouseListener(new MouseAdapter() {
public void mouseReleased(final MouseEvent e) {
newGame();
}
});
btnStart.setText("开始");
btnStart.setBounds(10, 95, 73, 22);
panRight.add(btnStart);
final JLabel labCount = new JLabel();
labCount.setText("步数:");
labCount.setBounds(10, 176, 39, 18);
panRight.add(labCount);
txtCount = new JTextField();
txtCount.setBounds(62, 174, 87, 22);
panRight.add(txtCount);
dcbm = new DefaultComboBoxModel();
listResult = new JList();
listResult.setModel(dcbm);
listResult.setBounds(13, 245, 164, 130);
panRight.add(listResult);
final JLabel labResult = new JLabel();
labResult.setText("结果:(级别 每局步数)");
labResult.setBounds(10, 221, 167, 18);
panRight.add(labResult);
newGame();
//
}
public boolean newGame(){
boolean rs = false;
try{
level = Integer.parseInt(txtLevel.getText());
if(level 2 || level MAX_LEVEL){
JOptionPane.showMessageDialog(this, "请输入大于2且小于" + MAX_LEVEL + "的数值.");
rs=false;
}
nums = new int[level][level];
for(int i = 0;ilevel;i++)
for(int j =0;jlevel;j++){
nums[i][j] = i*level+j +1;
}
nums[level-1][level-1] = 0;
randomNums();
creatNewLabel();
}catch (NumberFormatException e) {
JOptionPane.showMessageDialog(this, "请输入整数!");
rs = false;
}
return rs;
}
public void creatNewLabel() {
panGame.removeAll();
panGame.repaint();
int len =( panGame.getWidth()panGame.getHeight() ? panGame.getHeight() : panGame.getWidth()) / level;
labels =new JLabel[level][level];
for(int i = 0;ilevel;i++)
for(int j =0;jlevel;j++){
labels[i][j] = new JLabel();
labels[i][j].setFont(new Font("Arial", Font.BOLD, len/2));
labels[i][j].setHorizontalTextPosition(SwingConstants.CENTER);
labels[i][j].setHorizontalAlignment(SwingConstants.CENTER);
labels[i][j].setBorder(new LineBorder(Color.black, 1, false));
labels[i][j].setBounds(j*len, i*len, len, len);
if(nums[i][j] != 0)labels[i][j].setText(""+nums[i][j]);
else labels[i][j].setText("");
labels[i][j].addMouseListener(this);
labels[i][j].setOpaque(true);
labels[i][j].setBackground(Color.lightGray);
panGame.add(labels[i][j]);
}
clickCount = 0L;
txtCount.setText("0");
}
/**
* Launch the application
* @param args
*/
public static void main(String args[]) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Pingtu frame = new Pingtu();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public void mouseClicked(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
if(e.getSource().getClass().equals(labels[0][0].getClass())){
((JLabel) e.getSource()).setBackground(Color.orange);
}
}
public void mouseExited(MouseEvent e) {
if(e.getSource().getClass().equals(labels[0][0].getClass())){
((JLabel) e.getSource()).setBackground(Color.lightGray);
}
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
if(e.getSource().getClass().equals(labels[0][0].getClass())){
JLabel lab =(JLabel) e.getSource();
int i = lab.getY() / lab.getWidth();
int j = lab.getX() / lab.getWidth();
if(i0 nums[i-1][j]==0){
labels[i-1][j].setText(lab.getText());
labels[i][j].setText("");
nums[i-1][j] = nums[i][j];
nums[i][j] = 0;
clickCount++;
}
else if(ilevel-1 nums[i+1][j]==0){
labels[i+1][j].setText(lab.getText());
labels[i][j].setText("");
nums[i+1][j] = nums[i][j];
nums[i][j] = 0;
clickCount++;
}
else if(j0 nums[i][j-1]==0){
labels[i][j-1].setText(lab.getText());
labels[i][j].setText("");
nums[i][j-1] = nums[i][j];
nums[i][j] = 0;
clickCount++;
}
else if(jlevel-1 nums[i][j+1]==0){
labels[i][j+1].setText(lab.getText());
labels[i][j].setText("");
nums[i][j+1] = nums[i][j];
nums[i][j] = 0;
clickCount++;
}
if( checkNums()){
JOptionPane.showMessageDialog(this, "恭喜你过关!\r\n你点击次数是:" + clickCount);
dcbm.addElement(""+level+" " + clickCount);
//(DefaultListModel)listResult.getModel();//.add(new JLabel(""+level+" " + clickCount));
newGame();
}
txtCount.setText(""+clickCount);
}
}
private boolean checkNums() {
for(int i = 0;ilevel;i++)
for(int j =0;jlevel;j++){
if( (i*level+j != level*level-1) nums[i][j] != i*level+j +1 ){
return false;
}
}
return true;
}
public void randomNums(){
int x1=0,y1=0, x2=0,y2=0,tem=0;
for(int i = 0; ilevel*level;i++){
x1 =(int)(Math.random()*level);
y1 =(int)(Math.random()*level);
x2 =(int)(Math.random()*level);
y2 =(int)(Math.random()*level);
tem = nums[x1][y1];
nums[x1][y1] = nums[x2][y2];
nums[x2][y2] = tem;
}
}
public void keyPressed(KeyEvent e) {
System.out.println(e.getKeyCode());
}
public void keyReleased(KeyEvent e) {
System.out.println(e.getKeyCode());
}
public void keyTyped(KeyEvent e) {
System.out.println(e.getKeyCode());
}
}
关于java按钮游戏和游戏按钮教程的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-12-18,除非注明,否则均为
原创文章,转载请注明出处。