一步步教你做汉偌塔游戏

上传人:平*** 文档编号:15715167 上传时间:2017-11-05 格式:DOC 页数:22 大小:196.75KB
返回 下载 相关 举报
一步步教你做汉偌塔游戏_第1页
第1页 / 共22页
一步步教你做汉偌塔游戏_第2页
第2页 / 共22页
一步步教你做汉偌塔游戏_第3页
第3页 / 共22页
一步步教你做汉偌塔游戏_第4页
第4页 / 共22页
一步步教你做汉偌塔游戏_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《一步步教你做汉偌塔游戏》由会员分享,可在线阅读,更多相关《一步步教你做汉偌塔游戏(22页珍藏版)》请在金锄头文库上搜索。

1、 汉偌塔游戏制作一:开篇思路: 看上去游戏应该像这个样子,有排行榜,有游戏规则说明,有制作公司,还有返回。我们大家玩其他游戏都大概是这个样子,只不过他们的美工非常漂亮,由于我们艺术细胞很少,只能达到这样的粗糙的样子。为了完成这个模样,我们要做什么呢?1 创建 5 个面板,每一个面板如上图,一个主面板容器2 创建卡片布局的容器,然后把 5 个面板放进去。3 使用数组装载盘子,柱子等组件对象,实现容器中组件移除和添加。4 处理鼠标点击事件开始主界面开始游戏排行榜游戏规则制作人返回张三 12李四 24张子怡 36张曼玉 46规则:如果你能把最左边的盘子移动到右边,并且小盘子只能子大盘子上张曼玉 吴军

2、二:开始行动:1首先我们构建一个主容器窗体,在这个窗体中我们才能放置我们设计的面板。public class MainFrame extends JFrame当程序启动后,从什么地方执行呢?哦,从 main()方法开始执行,所以我们要定义一个 main()方法public class MainFrame extends JFramepublic static void main(String args)main()方法是固定格式写的,所以这不用多说,下一步,我们要产生一个窗体。public static void main(String args)MainFrame mf = new Main

3、Frame();这样我们就可以开始我们的游戏之旅了。既然我们要放置四个面板到这个窗体中,那么我们可以认为这几个面板是我们窗体的属性,我们的窗体包容他们,所以我们这样定义:public class MainFrame extends JFrame/*主选择面板*/MainPanel mp ;/*帮助信息面板*/HelpPanel hp ;/*制作人面板*/MakerPanel mkp;/*查看排行信息的面板 */HeroPanel hrp;/*游戏主界面*/HanoiFrame heroFrame;public static void main(String args) MainFrame mf

4、 = new MainFrame();由于我们要求每个面板都要显示同样的宽度,大小,还有统一在屏幕正中央显示,而且每次只显示一个面板的内容,那么哪种布局满足我们的要求呢?卡片布局管理器。因此,我们要定义一个卡片布局。/*卡片布局管理器*/private CardLayout cardLayout;/*主面板容器*/private JPanel mainPanel;好了,定义了这些窗体属性后,我们现在要创建窗体了。大家都知道做一个java GUI程序的7个步骤吧:我们复习下这五个步骤:1) 定义类继承自窗体或者面板等容器类2) 获得根容器 Container3) 设置布局管理器 Layout4)

5、 产生组件 component,设置组件属性,添加监听器接口。5) 添加组件到容器6) 设置窗体的属性(大小,位置等)7) 设置窗体可见因此我们也按照这几个步骤来做:第一步:我们已经做了public class MainFrame extends Jframe第二步:mainPanel = (JPanel)this.getContentPane();第三步:/得到卡片布局管理器cardLayout = new CardLayout(); /设置容器布局为卡片布局管理器mainPanel.setLayout(cardLayout);第四步:生成组件,这里是生成5个面板。/创建五个面板mp = n

6、ew MainPanel(this,mainPanel,cardLayout);mkp = new MakerPanel(mainPanel,cardLayout);hp = new HelpPanel(mainPanel,cardLayout);hrp = new HeroPanel(this,mainPanel,cardLayout);heroFrame = new HanoiFrame(mainPanel,cardLayout);第五步:添加面板到容器中,这里就是添加到mainPanel中:/将子面板加入到主面板中,然后就可以在不同的面板之间切换mainPanel.add(mp,main

7、Panel);mainPanel.add(mkp,makerPanel);mainPanel.add(hp,helpPanel);mainPanel.add(hrp,heroPanel);mainPanel.add(heroFrame,hanoiFrame);第六步:设置窗体属性:/设置窗体属性setTitle(汉偌塔演示 );this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setSize(ResourceLoader.getMainFrameWidth(),ResourceLoader.getMainFrameHeight(

8、);this.setLocation(180,110);this.setResizable(false);第七步:设置窗体可见:/显示窗体this.setVisible(true);当我们完成到这里后,我们就可以显示出主面板了。当然,我们的前提是我们已经设计好了另外的4个面板来,不着急,我们下面就来生成这4个面板。三设计4个面板。1)设计一个帮助面板:在java 中,所有的东西都是对象,要创建一个面板对象,我们就必须要定义一个帮助面板的类,由于java已经有一个通用的面板Jpanel,所以我们继承它就可以了:public class HelpPanel extends JPanel 我们前面定

9、义了一个卡片布局管理器,现在我们定义的帮助面板是这个卡片布局管理器的一个卡片,那么我们定义的这个卡片如果要和前面定义的mainPanel面板发生关系的话,是不是要定义一个属性来指向它呢?是的,我们这样定义这个面板的属性:public class HelpPanel extends JPanel /*主容器*/JPanel mainPanel;/*卡片布局管理器*/CardLayout cardLayout;/*返回按钮*/JButton returnMain ; 于是我们就可以引用主面板,也可以利用cardLayout这个属性返回到主面板去。这是布局管理器的方法决定的。我们要对我们定义的属性赋

10、值,我们可以考虑把主面板以及卡片布局作为参数在HelpPanel面板对象产生时候传进去,于是:public HelpPanel(JPanel mainPanel,CardLayout cardLayout) super();this.mainPanel = mainPanel;this.cardLayout = cardLayout;这样我们就可以引用主面板和它的卡片布局属性了。下面我们设置这个帮助面板的布局:this.setLayout(null);设置这个面板的布局是绝对定位的布局。和刚才我们设置主窗体的步骤一样,我们在这个面板中要放置一个标签组件,一个返回按钮。然后把他们放置进去。/*创

11、建背景标签,java只支持jpg,gif,png三种图像格式*/JLabel backGroundLabel = new JLabel(new ImageIcon(images/tower3.jpg);backGroundLabel.setBounds(0,0,ResourceLoader.getMainFrameWidth(),ResourceLoader.getMainFrameHeight();/*创建返回按钮*/returnMain = new JButton(new ImageIcon(images/returnButton.jpg);/ returnMain.setIcon(new

12、 ImageIcon(images/returnButton.png);returnMain.setBounds(ResourceLoader.getMainFrameWidth()/2 - 60,ResourceLoader.getMainFrameHeight() -100,100,30);returnMain.addMouseListener(this);backGroundLabel.add(returnMain);注意:我们这里产生的“返回”按钮,并没有添加到面板中,而是添加到了backGroundLabel这个标签中,为什么呢?这是因为我们创建具有指定图像的 backGroundL

13、abel实例,我们的backGroundLabel被图象所覆盖,所以我们要把“返回”按钮加到backGroundLabel上去,才能不被JLabel的图象所遮挡。最后,我们要将这个backGroundLabel添加到面板中去,然后,设置这个面板的属性。/ 添加到面板中this.add(backGroundLabel);/* 设置窗口属性 */ this.add(returnMain);this.setSize(ResourceLoader.getMainFrameWidth(), ResourceLoader.getMainFrameHeight();这样我们就完成了这个帮助面板。但我们好像有

14、些工作没有完?想想,是什么呢?我们还没有定义“返回”按钮的点击事件处理,在这里我们可以使用内部匿名类来处理点击事件。但我们采用另外一种方式,就是在定义类时候同时实现MouseListener接口的方式,所以我们要在类名后面添加:implements,格式是这样的:public class HelpPanel extends JPanel implements MouseListener 为什么我们不能继承MouseAdapter 适配器类呢?对了, JAVA中是单根继承,不能多继承,所以我们使用实现MouseListener 接口方法来处理事件。在MouseListener接口中定义了5中方法

15、,我们必须要实现,但我们感兴趣的是public void mouseClicked(MouseEvent e)这个相应鼠标点击事件处理的方法。所以我们在这个方法体中定义我们要做的事情,其他方法我们让方法体为空就行了。于是:public void mouseClicked(MouseEvent e) /* 创建JButton 类型的对象 ,得到事件来源 */JButton jb = (JButton) e.getSource();/* 如果单击returnMain 按钮 */if (jb.equals(returnMain) this.setVisible(false);this.cardLay

16、out.show(this.mainPanel, mainPanel);在这个方法中,我们通过e.getSource()得到事件源,然后判断这个事件源是否来源于我们定义的returnMain(Button按钮),如果是,我们通过卡片布局的show() 方法,返回到主面板去。this.cardLayout.show(this.mainPanel, mainPanel);2)依照步骤1)我们可以设计出排行榜面板,制作人面板等等。3)制作游戏画面:我们终于扫清外围,进入主题了,其实外围的设计使我们熟悉了GUI的设计思想,这就是容器的概念,而且容器里面可以添加容器,容器可以嵌套的,比如,我们定义的主窗体,里面可以放置5个面

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号