版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、import javax.swing.*;import javax.swing.border.Border;import javax.swing.border.EtchedBorder;import java.awt.*;import java.awt.event.*;/*控制面板类, 继承自 JPanel.上边安放预显窗口、等级、得分、控制按钮主要用来控制游戏进程。/class ControlPanel extends JPanel private JTextFieldtfLevel = new JTextField( + ErsblocksGame.DEFAULT_LEVEL), tfSc
2、ore = new JTextField(0);private JButtonbtPlay = new JButton(Play),btPause = new JButton(Pause),btStop = new JButton(Stop),btTurnLevelUp = new JButton(Turn hard),btTurnLevelDown = new JButton(Turn easy);private JPanel plTip = new JPanel(new BorderLayout();private TipPanel plTipblock = new TipPanel();
3、private JPanel plInfo = new JPanel(new GridLayout(4, 1);private JPanel plButton = new JPanel(new GridLayout(5, 1);private Timer timer;private ErsBlocksGame game;private Border border = new EtchedBorder(EtchedBorder.RAISED, Color.white, new Color(148, 145, 140);/*控制面板类的构造函数param game ErsBlocksGame, E
4、rsBoxesGame 类的一个实例弓 I 用方便直接控制ErsBoxesGam联的行为。/setLayout(new GridLayout(3, 1, 0, 4);this.game = game;plTip.add(new JLabel(Next block), BorderLayout.NORTH);plTip.add(plTipblock);plTip.setBorder(border);plInfo.add(new JLabel(Level);plInfo.add(tfLevel);plInfo.add(new JLabel(Score);plInfo.add(tfScore);pl
5、Info.setBorder(border);tfLevel.setEditable(false);tfScore.setEditable(false);plButton.add(btPlay);plButton.add(btPause);plButton.add(btStop);plButton.add(btTurnLevelUp);plButton.add(btTurnLevelDown);plButton.setBorder(border);add(plTip);add(plInfo);add(plButton);addKeyListener(new ControlKeyListener
6、();btPlay.addActionListener(new ActionListener() public void actionPerformed(ActionEvent ae) game.playGame(););btPause.addActionListener(new ActionListener() public void actionPerformed(ActionEvent ae) if (btPause.getText().equals(new String(Pause) game.pauseGame(); else game.resumeGame(););btStop.a
7、ddActionListener(new ActionListener() public void actionPerformed(ActionEvent ae) game.stopGame(););btTurnLevelUp.addActionListener(new ActionListener() public void actionPerformed(ActionEvent ae) try int level = Integer.parseInt(tfLevel.getText();if (level 1)tfLevel.setText( + (level - 1); catch (N
8、umberFormatException e) requestFocus(););addComponentListener(new ComponentAdapter() public void componentResized(ComponentEvent ce) plTipblock.fanning(); );timer = new Timer(500, new ActionListener() public void actionPerformed(ActionEvent ae) tfScore.setText( + game.getScore();int scoreForLevelUpd
9、ate =game.getScoreForLevelUpdate();if (scoreForLevelUpdate = ErsBlocksGame.PER_LEVEL_SCORE& scoreForLevelUpdate 0)game.levelUpdate(););timer.start();/*设置预显窗口的样式,param style int, 对应 Ersblock 类的 STYLES的 28 个值/ public void setTipStyle(int style) plTipblock.setStyle(style);/* 取得用户设置的游戏等级。return int, 难度等
10、级 ,1 -ErsBlocksGame.MAX_LEVEL */ public int getLevel() int level = 0;try level = Integer.parseInt(tfLevel.getText(); catch (NumberFormatException e) return level;/* 让用户修改游戏难度等级。param level 修改后的游戏难度等级*/ public void setLevel(int level) if (level 0 & level 11) tfLevel.setText( + level); /*设置 开始 按钮的状态。/
11、public void setPlayButtonEnable(boolean enable) btPlay.setEnabled(enable);public void setPauseButtonLabel(boolean pause) btPause.setText(pause ? Pause : Continue);/*重置控制面板/public void reset() tfScore.setText(0);plTipblock.setStyle(0);/* 重新计算 TipPanel 里的 boxes 里的小框的大小*/ public void fanning() plTipblo
12、ck.fanning();/* 预显窗口的实现细节类*/ private class TipPanel extends JPanel private Color backColor = Color.darkGray, frontColor =Color.lightGray;private ErsBox boxes = new ErsBoxErsBlock.BOXES_ROWSErsBlock.BOXES_COLS;private int style, boxWidth, boxHeight;private boolean isTiled = false;/* 预显窗口类构造函数*/public
13、 TipPanel() for (int i = 0; i boxes.length; i+) for (int j = 0; j boxesi.length; j+) boxesij = new ErsBox(false);/*预显窗口类构造函数param backColor Color, 窗口的背景色param frontColor Color, 窗口的前景色/ public TipPanel(Color backColor, Color frontColor) this();this.backColor = backColor;this.frontColor = frontColor;/
14、* 设置预显窗口的方块样式param style int, 对应 Ersblock 类的 STYLES的 28 个值*/ public void setStyle(int style) this.style = style;repaint();/*覆盖JComponent类的函数,画组件。param g 图形设备环境*/ public void paintComponent(Graphics g) super.paintComponent(g);if (!isTiled) fanning();int key = 0 x8000;for (int i = 0; i boxes.length; i
15、+) for (int j = 0; j = 1;/*根据窗口的大小 , 自动调整方格的尺寸/public void fanning() boxWidth = getSize().width / ErsBlock.BOXES_COLS;boxHeight = getSize().height / ErsBlock.BOXES_ROWS;isTiled = true;private class ControlKeyListener extends KeyAdapter public void keyPressed(KeyEvent ke) if (!game.isPlaying() return;ErsBlock block = g
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五版办公楼空气净化与除湿服务合同3篇
- 2025年版电子商务外部投资股权转让与物流服务合同3篇
- 2025年商业管理合作协议
- 《中文医学课件资源检索》
- 2025年健身活动时间协议
- 2025年健身社交平台服务协议
- 2025年保密协议章程规范规则
- 2025年度路灯照明设备采购、安装与维护合同4篇
- 2025年在线医学诊疗咨询合同
- 2025年品酒店连锁加盟合同
- 2024版个人私有房屋购买合同
- 2025年山东光明电力服务公司招聘笔试参考题库含答案解析
- 《神经发展障碍 儿童社交沟通障碍康复规范》
- 2025年中建六局二级子企业总经理岗位公开招聘高频重点提升(共500题)附带答案详解
- 2024年5月江苏省事业单位招聘考试【综合知识与能力素质】真题及答案解析(管理类和其他类)
- 注浆工安全技术措施
- 2024年世界职业院校技能大赛“食品安全与质量检测组”参考试题库(含答案)
- 3-9年级信息技术(人教版、清华版)教科书资源下载
- 上海牛津版三年级英语3B期末试卷及答案(共5页)
- 行为疼痛量表BPS
- 小学生必背古诗词80首(硬笔书法田字格)
评论
0/150
提交评论