📄 greedsnakeframe.java
字号:
package gameproject;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import com.borland.jbcl.layout.*;
import javax.swing.border.*;
import java.util.*;
import java.awt.image.*;
import java.applet.*;
public class GreedSnakeFrame extends Applet {
JPanel contentPane;
JMenuBar jMenuBar1 = new JMenuBar();
JMenu jMenuGame = new JMenu();
JMenuItem jMenuGameExit = new JMenuItem();
JMenu jMenuHelp = new JMenu();
JMenuItem jMenuHelpAbout = new JMenuItem();
JMenuItem jMenuGamePlay = new JMenuItem();
JMenuItem jMenuGamePause = new JMenuItem();
JMenuItem jMenuGameReplay = new JMenuItem();
JMenu jMenuSpeed = new JMenu();
JMenu jMenuAudio = new JMenu();
JCheckBoxMenuItem jCheckBoxAudioVoice = new JCheckBoxMenuItem();
JMenuItem jMenuHelpHowToPlay = new JMenuItem();
JRadioButtonMenuItem jRadioButtonSpeed1 = new JRadioButtonMenuItem();
JRadioButtonMenuItem jRadioButtonSpeed2 = new JRadioButtonMenuItem();
JRadioButtonMenuItem jRadioButtonSpeed3 = new JRadioButtonMenuItem();
JRadioButtonMenuItem jRadioButtonSpeed4 = new JRadioButtonMenuItem();
JRadioButtonMenuItem jRadioButtonSpeed5 = new JRadioButtonMenuItem();
JRadioButtonMenuItem jRadioButtonSpeed6 = new JRadioButtonMenuItem();
JRadioButtonMenuItem jRadioButtonSpeed7 = new JRadioButtonMenuItem();
JRadioButtonMenuItem jRadioButtonSpeed8 = new JRadioButtonMenuItem();
JRadioButtonMenuItem jRadioButtonSpeed9 = new JRadioButtonMenuItem();
ButtonGroup buttonGroup1 = new ButtonGroup();
XYLayout xYLayout1 = new XYLayout();
JPanel jPanel1 = new JPanel();
JPanel paintCanvas = new JPanel();
TitledBorder titledBorder1;
TitledBorder titledBorder2;
TitledBorder titledBorder3;
TitledBorder titledBorder4;
JPanel jPanel3 = new JPanel();
TitledBorder titledBorder5;
TitledBorder titledBorder6;
TitledBorder titledBorder7;
TitledBorder titledBorder8;
JPanel jPanel4 = new JPanel();
JPanel jPanel5 = new JPanel();
TitledBorder titledBorder9;
TitledBorder titledBorder10;
TitledBorder titledBorder11;
TitledBorder titledBorder12;
GridLayout gridLayout1 = new GridLayout();
JLabel record = new JLabel();
JLabel jLabel2 = new JLabel();
JLabel level = new JLabel();
JLabel jLabel4 = new JLabel();
JLabel jLabel5 = new JLabel();
JLabel jLabel6 = new JLabel();
XYLayout xYLayout2 = new XYLayout();
GridLayout gridLayout2 = new GridLayout();
JLabel score = new JLabel();
JLabel jLabel8 = new JLabel();
JLabel speed = new JLabel();
JLabel jLabel10 = new JLabel();
TitledBorder titledBorder13;
TitledBorder titledBorder14;
TitledBorder titledBorder15;
BorderLayout borderLayout1 = new BorderLayout();
BorderLayout borderLayout2 = new BorderLayout();
JLabel jLabel1 = new JLabel();
//----------------------------------------------
public static final int squareLength=5; //every node consist of nine square
public static final int horizontalNumber=20; //there are 20 nodes in a line
public static final int verticalNumber=11; //there are 11 nodes in a row
public int timeInterval=104;
public SnakeModel snakeModel=null;
DrawCanvas canvas=new DrawCanvas();
//Construct the frame
public GreedSnakeFrame() {
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
//Component initialization
private void jbInit() throws Exception {
contentPane = (JPanel) this.getContentPane();
titledBorder1 = new TitledBorder("");
titledBorder2 = new TitledBorder("");
titledBorder3 = new TitledBorder("");
titledBorder4 = new TitledBorder("");
titledBorder5 = new TitledBorder("");
titledBorder6 = new TitledBorder("");
titledBorder7 = new TitledBorder("");
titledBorder8 = new TitledBorder("");
titledBorder9 = new TitledBorder("");
titledBorder10 = new TitledBorder("");
titledBorder11 = new TitledBorder("");
titledBorder12 = new TitledBorder("");
titledBorder13 = new TitledBorder("");
titledBorder14 = new TitledBorder("");
titledBorder15 = new TitledBorder("");
contentPane.setLayout(xYLayout1);
this.setSize(new Dimension(410, 335));//????????????????????????(405,285)
this.setTitle("GreedSnake");
this.addKeyListener(new GreedSnakeFrame_this_keyAdapter(this));
jMenuGame.setForeground(SystemColor.activeCaption);
jMenuGame.setText("游戏");
jMenuGameExit.setForeground(SystemColor.desktop);
jMenuGameExit.setText("退出");
jMenuGameExit.addActionListener(new GreedSnakeFrame_jMenuGameExit_ActionAdapter(this));
jMenuHelp.setForeground(SystemColor.activeCaption);
jMenuHelp.setText("帮助");
jMenuHelpAbout.setForeground(SystemColor.desktop);
jMenuHelpAbout.setText("关于游戏");
jMenuHelpAbout.addActionListener(new GreedSnakeFrame_jMenuHelpAbout_ActionAdapter(this));
jMenuGamePlay.setForeground(SystemColor.desktop);
jMenuGamePlay.setText("开始");
jMenuGamePlay.addActionListener(new GreedSnakeFrame_jMenuGamePlay_actionAdapter(this));
jMenuGamePause.setForeground(SystemColor.desktop);
jMenuGamePause.setText("暂停");
jMenuGamePause.addActionListener(new GreedSnakeFrame_jMenuGamePause_actionAdapter(this));
jMenuGameReplay.setForeground(SystemColor.desktop);
jMenuGameReplay.setText("重新开始");
jMenuGameReplay.addActionListener(new GreedSnakeFrame_jMenuGameReplay_actionAdapter(this));
jMenuSpeed.setForeground(SystemColor.activeCaption);
jMenuSpeed.setText("速度");
jMenuAudio.setForeground(SystemColor.activeCaption);
jMenuAudio.setText("声音");
jCheckBoxAudioVoice.setForeground(SystemColor.desktop);
jCheckBoxAudioVoice.setSelected(true);
jCheckBoxAudioVoice.setText("场景声音");
jMenuHelpHowToPlay.setForeground(SystemColor.desktop);
jMenuHelpHowToPlay.setText("玩家必读");
jMenuHelpHowToPlay.addActionListener(new GreedSnakeFrame_jMenuHelpHowToPlay_actionAdapter(this));
jRadioButtonSpeed1.setForeground(SystemColor.desktop);
jRadioButtonSpeed1.setText("1");
jRadioButtonSpeed1.addActionListener(new GreedSnakeFrame_jRadioButtonSpeed1_actionAdapter(this));
jRadioButtonSpeed2.setForeground(SystemColor.desktop);
jRadioButtonSpeed2.setText("2");
jRadioButtonSpeed2.addActionListener(new GreedSnakeFrame_jRadioButtonSpeed2_actionAdapter(this));
jRadioButtonSpeed3.setForeground(SystemColor.desktop);
jRadioButtonSpeed3.setText("3");
jRadioButtonSpeed3.addActionListener(new GreedSnakeFrame_jRadioButtonSpeed3_actionAdapter(this));
jRadioButtonSpeed4.setForeground(SystemColor.desktop);
jRadioButtonSpeed4.setText("4");
jRadioButtonSpeed4.addActionListener(new GreedSnakeFrame_jRadioButtonSpeed4_actionAdapter(this));
jRadioButtonSpeed5.setForeground(SystemColor.desktop);
jRadioButtonSpeed5.setText("5");
jRadioButtonSpeed5.addActionListener(new GreedSnakeFrame_jRadioButtonSpeed5_actionAdapter(this));
jRadioButtonSpeed6.setForeground(SystemColor.desktop);
jRadioButtonSpeed6.setText("6");
jRadioButtonSpeed6.addActionListener(new GreedSnakeFrame_jRadioButtonSpeed6_actionAdapter(this));
jRadioButtonSpeed7.setForeground(SystemColor.desktop);
jRadioButtonSpeed7.setText("7");
jRadioButtonSpeed7.addActionListener(new GreedSnakeFrame_jRadioButtonSpeed7_actionAdapter(this));
jRadioButtonSpeed8.setForeground(SystemColor.desktop);
jRadioButtonSpeed8.setSelected(true);
jRadioButtonSpeed8.setText("8");
jRadioButtonSpeed8.addActionListener(new GreedSnakeFrame_jRadioButtonSpeed8_actionAdapter(this));
jRadioButtonSpeed9.setForeground(SystemColor.desktop);
jRadioButtonSpeed9.setText("9");
jRadioButtonSpeed9.addActionListener(new GreedSnakeFrame_jRadioButtonSpeed9_actionAdapter(this));
jPanel1.setLayout(xYLayout2);
paintCanvas.setBackground(Color.white);
paintCanvas.addContainerListener(new GreedSnakeFrame_paintCanvas_containerAdapter(this));
paintCanvas.setLayout(borderLayout1);
jPanel4.setBorder(titledBorder10);
jPanel4.setLayout(gridLayout1);
jPanel5.setBorder(titledBorder12);
jPanel5.setLayout(gridLayout2);
gridLayout1.setColumns(2);
gridLayout1.setRows(3);
record.setFont(new java.awt.Font("Dialog", 0, 15));
record.setForeground(Color.blue);
record.setText("");
jLabel2.setFont(new java.awt.Font("Dialog", 0, 15));
jLabel2.setForeground(SystemColor.desktop);
jLabel2.setText("最高纪录:");
level.setFont(new java.awt.Font("Dialog", 0, 15));
level.setForeground(Color.blue);
level.setText("");
jLabel4.setFont(new java.awt.Font("Dialog", 0, 15));
jLabel4.setForeground(SystemColor.desktop);
jLabel4.setText("等级:");
jLabel5.setFont(new java.awt.Font("Dialog", 0, 15));
jLabel5.setForeground(Color.blue);
jLabel5.setText("蓝翼");
jLabel6.setEnabled(true);
jLabel6.setFont(new java.awt.Font("Dialog", 0, 15));
jLabel6.setForeground(SystemColor.desktop);
jLabel6.setDoubleBuffered(false);
jLabel6.setDisplayedMnemonic('0');
jLabel6.setText("姓名:");
gridLayout2.setColumns(2);
gridLayout2.setRows(2);
score.setFont(new java.awt.Font("Dialog", 0, 15));
score.setForeground(Color.red);
score.setText("0");
jLabel8.setFont(new java.awt.Font("Dialog", 0, 15));
jLabel8.setForeground(SystemColor.desktop);
jLabel8.setText("当前得分:");
speed.setFont(new java.awt.Font("Dialog", 0, 15));
speed.setForeground(Color.red);
speed.setText("8");
jLabel10.setFont(new java.awt.Font("Dialog", 0, 15));
jLabel10.setForeground(SystemColor.desktop);
jLabel10.setText("当前速度:");
jPanel3.setBackground(Color.white);
jPanel3.setAlignmentX((float) 0.5);
jPanel3.setAlignmentY((float) 0.5);
jPanel3.setBorder(BorderFactory.createEtchedBorder());
jPanel3.setLayout(borderLayout2);
contentPane.setAlignmentX((float) 0.5);
contentPane.setVerifyInputWhenFocusTarget(true);
contentPane.addKeyListener(new GreedSnakeFrame_contentPane_keyAdapter(this));
jLabel1.setIcon(new ImageIcon(GreedSnakeFrame.class.getResource("mypic/b_fish.png")));
jLabel1.setText("jLabel1");
jMenuBar1.setForeground(UIManager.getColor("FormattedTextField.selectionBackground"));
jMenuGame.add(jMenuGamePlay);
jMenuGame.addSeparator();
jMenuGame.add(jMenuGamePause);
jMenuGame.add(jMenuGameReplay);
jMenuGame.addSeparator();
jMenuGame.add(jMenuGameExit);
jMenuHelp.add(jMenuHelpAbout);
jMenuHelp.add(jMenuHelpHowToPlay);
jMenuBar1.add(jMenuGame);
jMenuBar1.add(jMenuSpeed);
jMenuBar1.add(jMenuAudio);
jMenuBar1.add(jMenuHelp);
jMenuSpeed.add(jRadioButtonSpeed9);
jMenuSpeed.add(jRadioButtonSpeed8);
jMenuSpeed.add(jRadioButtonSpeed7);
jMenuSpeed.add(jRadioButtonSpeed6);
jMenuSpeed.add(jRadioButtonSpeed5);
jMenuSpeed.add(jRadioButtonSpeed4);
jMenuSpeed.add(jRadioButtonSpeed3);
jMenuSpeed.add(jRadioButtonSpeed2);
jMenuSpeed.add(jRadioButtonSpeed1);
buttonGroup1.add(jRadioButtonSpeed9);
buttonGroup1.add(jRadioButtonSpeed8);
buttonGroup1.add(jRadioButtonSpeed7);
buttonGroup1.add(jRadioButtonSpeed6);
buttonGroup1.add(jRadioButtonSpeed5);
buttonGroup1.add(jRadioButtonSpeed4);
buttonGroup1.add(jRadioButtonSpeed3);
buttonGroup1.add(jRadioButtonSpeed2);
buttonGroup1.add(jRadioButtonSpeed1);
jMenuAudio.add(jCheckBoxAudioVoice);
contentPane.add(jPanel1, new XYConstraints(0, 0, 405, 60));
jPanel4.add(jLabel6, null);
jPanel4.add(jLabel5, null);
jPanel4.add(jLabel4, null);
jPanel4.add(level, null);
jPanel4.add(jLabel2, null);
jPanel4.add(record, null);
jPanel1.add(jPanel3, new XYConstraints(0, 0, 60, 60));
jPanel3.add(jLabel1, BorderLayout.CENTER);
jPanel1.add(jPanel5, new XYConstraints(230, 0, 175, 60));
jPanel5.add(jLabel10, null);
jPanel5.add(speed, null);
jPanel5.add(jLabel8, null);
jPanel5.add(score, null);
jPanel1.add(jPanel4, new XYConstraints(60, 0, 170, 60));
contentPane.add(paintCanvas, new XYConstraints(0, 60, 405, 225));
this.setJMenuBar(jMenuBar1);
//---------------------------------------------------------
String[] msg=Message.readMsg();
level.setText(msg[0]);
record.setText(msg[1]);
contentPane.add(this.canvas, new XYConstraints(0, 60, 405, 225));
this.setResizable(false);
}
//File | Exit action performed
public void jMenuGameExit_actionPerformed(ActionEvent e) {
System.exit(0);
}
//Help | About action performed
public void jMenuHelpAbout_actionPerformed(ActionEvent e) {
GreedSnakeFrame_AboutBox dlg = new GreedSnakeFrame_AboutBox(this);
Dimension dlgSize = dlg.getPreferredSize();
Dimension frmSize = getSize();
Point loc = getLocation();
dlg.setLocation((frmSize.width - dlgSize.width) / 2 + loc.x, (frmSize.height - dlgSize.height) / 2 + loc.y);
dlg.setModal(true);
dlg.pack();
dlg.show();
}
//Overridden so we can exit when window is closed
protected void processWindowEvent(WindowEvent e) {
super.processWindowEvent(e);
if (e.getID() == WindowEvent.WINDOW_CLOSING) {
jMenuGameExit_actionPerformed(null);
}
}
//----------------------------------------------------------
public void repaint(){
Graphics g = paintCanvas.getGraphics();
//draw background
g.setColor(Color.WHITE);
g.fillRect(0,0,405,225);
// draw the snake
g.setColor(Color.BLACK);
LinkedList na = snakeModel.nodeArray;
Iterator it = na.iterator();
while(it.hasNext()){
Node n = (Node)it.next();
this.drawNode(g,n);
}
// draw the food
g.setColor(Color.RED);
Node n = snakeModel.food;
this.drawFood(g,n);
this.updateScore();
}
public void drawNode(Graphics g,Node n){
switch(n.orient){
//up
case 2:g.fillRect(this.squareLength*4*n.x+this.squareLength,
this.squareLength*4*n.y+this.squareLength,
this.squareLength*3,
this.squareLength*4);
break;
//down
case 4:g.fillRect(this.squareLength*4*n.x+this.squareLength,
this.squareLength*4*n.y,
this.squareLength*3,
this.squareLength*4);
break;
//left
case 1:g.fillRect(this.squareLength*4*n.x+this.squareLength,
this.squareLength*4*n.y+this.squareLength,
this.squareLength*4,
this.squareLength*3);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -