⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 squaregameframe.java

📁 Java编写的俄罗斯方块游戏 Java编写的俄罗斯方块游戏
💻 JAVA
字号:
package game;

import javax.swing.*;

import java.awt.event.*;
import java.awt.*;
import java.io.*;
import java.util.*;

public class SquareGameFrame extends JFrame
{
	public SquareGameFrame()
	{
		setTitle("俄罗斯方块");
		setSize(WIDTH, HEIGHT);
		setResizable(false);
		
		JMenuBar menuBar = new JMenuBar();
		setJMenuBar(menuBar);
		
		JMenu setMenu = new JMenu("Set");
		JMenu helpMenu = new JMenu("Help");
		
		setMenu.setMnemonic('s');
		setMenu.setMnemonic('H');
		
		menuBar.add(setMenu);
		menuBar.add(helpMenu);
		
		setMenu.add(startMI);
		setMenu.add(pauseMI);
		setMenu.addSeparator();
		
		setMenu.add(loadMI);
		setMenu.add(saveMI);
		setMenu.add(recordMI);
		
		setMenu.addSeparator();
		setMenu.add(speedMenu);
		setMenu.addSeparator();
		setMenu.add(exitMI);
		
		ButtonGroup group = new ButtonGroup();
		group.add(speedMI1);
		group.add(speedMI2);
		group.add(speedMI3);
		group.add(speedMI4);
		group.add(speedMI5);
		
		speedMenu.add(speedMI1);
		speedMenu.add(speedMI2);
		speedMenu.add(speedMI3);
		speedMenu.add(speedMI4);
		speedMenu.add(speedMI5);
		
		startMI.addActionListener(new StartAction());
		pauseMI.addActionListener(new PauseAction());
		loadMI.addActionListener(new LoadAction());
		saveMI.addActionListener(new SaveAction());
		recordMI.addActionListener(new RecordAction());
		exitMI.addActionListener(new ExitAction());
		speedMI1.addActionListener(new SpeedAction());
		speedMI2.addActionListener(new SpeedAction());
		speedMI3.addActionListener(new SpeedAction());
		speedMI4.addActionListener(new SpeedAction());
		speedMI5.addActionListener(new SpeedAction());
		
		helpMenu.add(aboutMI);
		aboutMI.addActionListener(new AboutAction());
		
		contentPane = getContentPane();
		panel = new SquareGamePanel(this);
		contentPane.add(panel);
		
		startMI.setEnabled(true);
		pauseMI.setEnabled(false);
	}
	
	public void setGameStateIsPause()
	{
		pauseMI.setEnabled(false);
		startMI.setEnabled(true);
		runFlag = false;
	}
	
	private class StartAction implements ActionListener
	{
		public void actionPerformed(ActionEvent event)
		{
			startMI.setEnabled(false);
			pauseMI.setEnabled(true);
			runFlag = true;
			beginDraw = true;
			
		}
	}
	
	private class PauseAction implements ActionListener
	{
		public void actionPerformed(ActionEvent event)
		{
			setGameStateIsPause();
		}
	}
	
	private class LoadAction implements ActionListener
	{
		public void actionPerformed(ActionEvent event)
		{
			FileDialog dialog = new FileDialog(SquareGameFrame.this, "Open", FileDialog.LOAD);
			dialog.setVisible(true);
			String dir = dialog.getDirectory();
			String fileName = dialog.getFile();
			String filePath = dir + fileName;
			
			if(fileName != null && fileName.trim().length() != 0)
			{
				File file = new File(filePath);
				panel.readSelfFromFile(file);
			}
			else
			{
				JOptionPane.showConfirmDialog(SquareGameFrame.this, "文件名为空\n装载游戏进度失败", "俄罗斯方块", JOptionPane.DEFAULT_OPTION);
			}
			
		}
	}
	
	private class SaveAction implements ActionListener
	{
		public void actionPerformed(ActionEvent event)
		{
			if(!runFlag)
			{
				JOptionPane.showConfirmDialog(SquareGameFrame.this, "游戏没有运行\n不能保存游戏进度", "俄罗斯方块", JOptionPane.DEFAULT_OPTION);
				return;
			}
			
			FileDialog dialog = new FileDialog(SquareGameFrame.this, "Save", FileDialog.SAVE);
			dialog.setVisible(true);
			String dir = dialog.getDirectory();
			String fileName = dialog.getFile();
			String filePath = dir + fileName;
			if(fileName != null && fileName.trim().length() != 0)
			{
				File file = new File(filePath);
				panel.writeSelfToFile(file);
			}
			else
			{
				JOptionPane.showConfirmDialog(SquareGameFrame.this, "文件名为空\n保存游戏进度失败", "俄罗斯方块", JOptionPane.DEFAULT_OPTION);
			}
			
		}
	}
	
	private class RecordAction implements ActionListener
	{
		
		public void actionPerformed(ActionEvent event)
		{
			ReadAndWriteFile.setPath("file.dat");
			JScrollPane panel = ReadAndWriteFile.getRecordPanel();

			JDialog recordDialog = new JDialog(SquareGameFrame.this, "俄罗斯方块");
			recordDialog.setBounds(300, 300, 189, 219);

			Container container = recordDialog.getContentPane();
			container.add(panel);
			recordDialog.show();
		}
	}
	
	private class SpeedAction implements ActionListener
	{
		public void actionPerformed(ActionEvent event)
		{
			Object speed = event.getSource();
			if(speed == speedMI1)
			{
				speedFlag = 1;
			}
			else if(speed == speedMI2)
			{
				speedFlag = 2;
			}
			else if(speed == speedMI3)
			{
				speedFlag = 3;
			}
			else if(speed == speedMI4)
			{
				speedFlag = 4;
			}
			else if(speed == speedMI5)
			{
				speedFlag = 5;
			}
		}
	}
	
	private class ExitAction implements ActionListener
	{
		public void actionPerformed(ActionEvent event)
		{
			int result =JOptionPane.showConfirmDialog(SquareGameFrame.this, 
					"Are you sure quit?", "俄罗斯方块", JOptionPane.YES_NO_OPTION);
			if(result == JOptionPane.YES_OPTION)
			{
				System.exit(0);
			}
		}
	}
	
	
	private class AboutAction implements ActionListener
	{
		public void actionPerformed(ActionEvent event)
		{
			String string="说明:\n1.按左键向左移动\n2.按右键向右移动\n3.按向上键翻滚\n4.按向下键加速下降";
			JOptionPane.showMessageDialog(SquareGameFrame.this, string);
		}
	}
	
	private final int WIDTH = 340;
	private final int HEIGHT = 460;
	
	private SquareGamePanel panel;
	private Container contentPane;
	
	private JMenuItem startMI = new JMenuItem("Start");
	private JMenuItem pauseMI = new JMenuItem("Pause");
	private JMenuItem recordMI = new JMenuItem("Record");
	private JMenu speedMenu = new JMenu("Speed");
	private JMenuItem exitMI = new JMenuItem("Exit");
	private JMenuItem aboutMI = new JMenuItem("About");
	private JMenuItem loadMI = new JMenuItem("Open");
	private JMenuItem saveMI = new JMenuItem("Save");
	
    private JRadioButtonMenuItem speedMI1 = new JRadioButtonMenuItem("Speed1", true);
	private JRadioButtonMenuItem speedMI2 = new JRadioButtonMenuItem("Speed2", false);
	private JRadioButtonMenuItem speedMI3 = new JRadioButtonMenuItem("Speed3", false);
	private JRadioButtonMenuItem speedMI4 = new JRadioButtonMenuItem("Speed4", false);
	private JRadioButtonMenuItem speedMI5 = new JRadioButtonMenuItem("Speed5", false);
	
	public boolean runFlag;
	public int speedFlag = 1;
	public boolean beginDraw;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -