ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:45.63KB ,
资源ID:11398095      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/11398095.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(Java综合实验游戏界面的设计.docx)为本站上传会员【仙人****88】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

Java综合实验游戏界面的设计.docx

1、《Java程序设计实验》综合课程设计报告 ——英雄联盟选英雄界面设计 2014计算机科学与技术班 2016年12月2日 一、 实验目的 设计一个程序来实现英雄联盟游戏时选择英雄的流程,通过此实验设计熟练掌握Java Swing的组件、容器、布局管理器、事件处理机制及java的图形处理。 二、 实验原理 本实验要处理的最基本对象就是英雄及英雄菜单,因此可以设计Hero类和HeroMenu类。程序在选择英雄过程中是分为英雄、符文、天赋三种类别来进行选择的,因此这里分别建立了RoleMe

2、nu类、FuwenMenu类、TianfuMenu类。这三个类的父类是HeroMenu类,这样子类可以继承父类的一些属性和方法,并且可以实现多态。登陆/选择英雄主界面设计为一个窗口,是JFrame的子类,名为OrderingWindow类。通过该主界面切换到分类选英雄界面和显示选择明细及技能界面。分类选择英雄界面用一个对话框来实现,设计为JDialog的子类OrderHero类来处理。最后的选英雄界面和显示选择明细及技能界面用ShowOrderingRecord类来实现。是JDialog的子类。 三、 实验内容 1、 Hero类 (1) 成员变量 name、description、AT

3、K、image分别用来表示英雄的名字、英雄的描述、英雄的攻击力、英雄的图像。 (2) 成员方法 Hero(String ,String ,double ,String)是构造方法,创建Hero对象时使用该构造方法,实现对Hero对象的初始化。 getName()方法。Hero对象调用该方法返回它的名字。 getDescription()方法。Hero对象调用该方法返回它的描述。 getATK()方法。Hero对象调用该方法返回它的攻击力。 getImage()方法。Hero对象调用该方法返回它的图像的引用。 代码为: public class Hero{ private S

4、tring name; private String description; private double ATK; private Image image; public Hero(String name, String description, double ATK, String filename) { super(); this.name = name; this.description = description; this.ATK = ATK; Toolkit toolkit=Toolkit.getDefaultToolkit(

5、); this.image=toolkit.createImage(filename); } public String getName() { return name; } public String getDescription() { return description; } public double getATK() { return ATK; } public Image getImage() { return image; } } 2、 HeroMenu类 (1) 成员变量 H

6、eroMenu对象是英雄对象的集合,用LinkedList数据结构来处理。 (2) 成员方法 Hero(String ,String ,double ,String)是构造方法,创建Hero对象时使用该构造方法,实现对Hero对象的初始化。 addItem(String ,String ,double ,String)方法用于往链表heroMenu中添加英雄元素。 GetHeroMenu()方法。HeroMenu对象调用此方法可以返回英雄的链表,这个方法也是为后面初始化OrderHero窗口做准备。 代码为: public class HeroMenu { Linked

7、List heroMenu; public HeroMenu(){ heroMenu=new LinkedList(); } public void addItem(String name,String description,double ATK ,String filename){ Hero hero=new Hero(name,description,ATK,filename); heroMenu.add(hero); } public LinkedList getRoleMenu() { r

8、eturn heroMenu; } } 3、 RoleMenu类 这个类只有一个构造方法RoleMenu()。该方法中实现对英雄菜单的初始化,在方法内继承addItem(String ,String ,double ,String)方法,通过它来增加Hero对象。同样也继承父类的HeroMenu链表。 代码为: public RoleMenu(){ addItem("寒冰射手艾希","冰霜射击/致命减速艾希的暴击不造成额外伤害,但会将减速效果提升至10%",7,"寒冰射手.jpg"); addItem("刀锋之影泰隆","泰隆的技能会创伤英雄和史诗

9、级野怪,持续6秒",9,"刀锋之影.jpg"); addItem("放逐之刃锐雯","剑刃充能,保证她的下次普攻造成额外的伤害",8,"放逐之刃.jpg"); addItem("蒸汽机器人布里茨","被动法力屏障,生命值低于20%时,将激活法力屏障",4,"蒸汽机器人.jpg"); addItem("德玛西亚之力盖伦","小兵的伤害不会中断坚韧的效果",7,"德玛西亚之力.jpg"); addItem("齐天大圣孙悟空","金刚不坏(被动),周围每个敌方英雄都会增加孙悟空护甲和魔法抗性",8,"齐天大圣.jpg"); addItem("诺克萨斯之手德莱厄斯","用

10、斧刃对敌人造成伤害时,敌人会流血",9,"诺克萨斯之手.jpg"); addItem("蜘蛛女皇伊莉丝","人类形态,每当伊莉丝的技能命中一名敌人时,就会有一只小蜘蛛准备就绪",6,"蜘蛛女皇.jpg"); addItem("盲僧李青","疾风骤雨、李青释放技能后,接下来的2次基础攻击增加40%攻击速度第一次攻击回复20能量",8,"盲僧.jpg"); addItem("皎月女神黛安娜","获得20%攻击速度加成。 ",7,"皎月女神.jpg"); } 4、 FuwenMenu类 这个类也只有一个构造方法FuwenMenu()。该方法中实现对符文菜单的初始化,

11、此类也继承父类的HeroMenu的属性和方法。 代码为: public FuwenMenu(){ addItem("初级攻击机印记","+0.18物理伤害",12.0,"初级攻击机印记.jpg"); addItem("初级魔法抗性雕纹","+0.74魔法抗性",18,"初级魔法抗性雕纹.jpg"); addItem("法术强度精华","+3.82法术强度",16,"法术强度精华.jpg"); addItem("高级攻击力精华","+2.25攻击力",12,"高级攻击力精华.jpg"); addItem("高级魔法抗性雕纹","+1.34魔法抗性"

12、8,"高级魔法抗性雕纹.jpg"); } 5、 TianfuMenu类 这个类也只有一个构造方法TianfuMenu()。该方法中实现对天赋菜单的初始化,此类也继承父类的HeroMenu的属性和方法。 代码为: public TianfuMenu(){ addItem("雷霆领主","法令属性:你对一名敌方英雄进行的第三次攻击或施法会暴击目标周围区域",10,"雷霆领主.jpg"); addItem("战争领主的嗜血","法令属性:对抗小兵时会获得收益",12,"战争领主的嗜血.jpg"); addItem("冥火之触","法令属性:你的伤害型技能

13、会使敌方英雄在4秒里连续受伤害",10,"冥火之触.jpg"); addItem("风暴骑手的狂涌","法令属性:获得移动速度和减速抗性",16,"风暴骑手的狂涌.jpg"); addItem("雷霆领主的法令","法令属性:你对相同敌方英雄进行的第三次攻击或伤害会召唤一次雷电打击",14,"雷霆领主的法令.jpg"); } 6、 OrderingWindow类 (1) 成员变量 成员变量有:pNorth、pCenter、pSouth是JPanel创建的三个容器。roleButton、fuwenButton、tianfuBotton、showButton、stopOr

14、deringButton是JButton创建的5个按钮。idTextField、dateTextField是JTextField类创建的对象。file是File类创建的文件对象。idSet是一个HashSet的散列集。 (2) 成员方法 OrderingWindow()是构造方法,负责完成窗口的初始化。 actionPerfromed(ActionEvent)方法是OrderingWindow类实现的ActionListener接口中的方法,负责执行用户发出的命令。 代码为: public OrderingWindow(){ setTitle("玩家选

15、英雄界面"); idSet=new HashSet(); pNorth=new JPanel(); idTextField=new JTextField(10); idTextField.addActionListener(this); dateTextField=new JTextField(20); dateTextField.setEditable(false); pNorth.add(new JLabel("请输入您的ID:")); pNorth.add(idTextField); pNorth.add(new JL

16、abel("本次游戏日期和时间:")); pNorth.add(dateTextField); pCenter=new JPanel(); pCenter.setBorder(new TitledBorder(new LineBorder(Color.BLUE),"选英雄啦",TitledBorder.LEFT,TitledBorder.TOP)); RoleButton=new JButton("英雄"); RoleButton.addActionListener(this); RoleButton.setEnabled(false); Ti

17、anfuButton=new JButton("天赋"); TianfuButton.addActionListener(this); TianfuButton.setEnabled(false); FuwenButton=new JButton("符文"); FuwenButton.addActionListener(this); FuwenButton.setEnabled(false); Box baseBox=Box.createHorizontalBox(); Box box1=Box.createVerticalBox(); box1

18、add(RoleButton); //box1.add(Box.createVerticalStrut(20)); box1.add(TianfuButton); box1.add(FuwenButton); baseBox.add(box1); baseBox.add(Box.createHorizontalStrut(100)); pCenter.add(baseBox); pSouth=new JPanel(); this.showButton=new JButton("显示所选英雄及技能"); showButton.addAc

19、tionListener(this); showButton.setEnabled(false); this.stopOrderingButton=new JButton("我已选好英雄!"); stopOrderingButton.addActionListener(this); pSouth.add(showButton); pSouth.add(stopOrderingButton); add(pNorth,"North"); add(pCenter,"Center"); add(pSouth,"South"); se

20、tBounds(100,100,600,230); this.setResizable(false); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); } @Override public void actionPerformed(ActionEvent e) { if(e.getSource()==this.idTextField){ if(idTextField!=null){ if(!idSet.add(idTextField.getText()

21、)){ JOptionPane.showMessageDialog(this, "此ID已有人登陆,您要另行选择啦!"); } else { idTextField.setEditable(false); ClientSocket client=new ClientSocket(); Request request=new Request(8); client.clientSent(request); Response response=client.clientReceive(); JOp

22、tionPane.showMessageDialog(pCenter, response.getResponse()); this.RoleButton.setEnabled(true); this.TianfuButton.setEnabled(true); this.FuwenButton.setEnabled(true); this.showButton.setEnabled(true); Date nowTime=new Date(); SimpleDateFormat matter=new SimpleDateF

23、ormat("本次登陆时间:yyyy-MM-dd HH:mm:ss"); String date=matter.format(nowTime); this.dateTextField.setText(date); String filename=idTextField.getText()+"所选英雄情况.txt"; file=new File(filename); } } } else if(e.getSource()==this.showButton){ ShowOrderingRecord showOr

24、dering=new ShowOrderingRecord(file); showOrdering.setVisible(true); showOrdering.showRecord(); } else if(e.getSource()==this.stopOrderingButton){ this.idTextField.setText(null); this.idTextField.setEditable(true); this.dateTextField.setText(null); this.RoleButton.setEna

25、bled(false); this.TianfuButton.setEnabled(false); this.FuwenButton.setEnabled(false); this.showButton.setEnabled(false); } else{ String menusName=null; if(e.getSource()==this.RoleButton){ heroMenus=new RoleMenu(); menusName="英雄 角色"; this.RoleButton.setEna

26、bled(false); ClientSocket client=new ClientSocket(); Request request=new Request(1); client.clientSent(request); Response response=client.clientReceive(); JOptionPane.showMessageDialog(pCenter, response.getResponse()); } else if(e.getSource()==this.TianfuButton){

27、 heroMenus=new TianfuMenu(); menusName="天赋 选择"; this.TianfuButton.setEnabled(false); ClientSocket client=new ClientSocket(); Request request=new Request(2); client.clientSent(request); Response response=client.clientReceive(); JOptionPane.showMessageDialog(pCent

28、er, response.getResponse()); } else if(e.getSource()==this.FuwenButton){ heroMenus=new FuwenMenu(); menusName="符文 增加"; this.FuwenButton.setEnabled(false); ClientSocket client=new ClientSocket(); Request request=new Request(3); client.clientSent(request);

29、 Response response=client.clientReceive(); JOptionPane.showMessageDialog(pCenter, response.getResponse()); } new OrderHero(heroMenus,menusName,file).setVisible(true); } } 7、 OrderHero类 (1) 成员变量 pTop,pBottom,pImage是JPanel类创建的三个容器。 menusList,orderList是JList对象。 addButton,rand

30、onButton,deleteButton,saveButton是JButton对象。 orderHero用来保存所选择的英雄。 selectedIndex表示菜单中被选择的索引,orderIndex表示玩家已选择的索引。 orderHeroNames实现列表的增加、删除元素的功能。 file用来保存选英雄明细。 (2) 成员方法 OrderHreo()构造方法。 actionPerfromed(ActionEvent)方法。 valueChanged(ListSelectionEvent)方法。 OrderHero(HeroMenu heroM

31、enu,String name,File file)构造方法。 paint(Graphics)用来绘制显示英雄的相关信息。 代码为: public OrderHero(){ } public OrderHero(HeroMenu heroMenu,String name,File file){ this.file =file; setTitle(name); heroMenus=heroMenu.getRoleMenu(); heroNames=new Vector(); heroDiscripti

32、ons=new Vector(); heroATK=new Vector(); heroImages=new Vector(); orderHero=new Vector(); orderHeroNames=new DefaultListModel(); Iterator iterator=heroMenus.iterator(); while(iterator.hasNext()){ hero=iterator.next(); heroNames.add(hero

33、getName()); this.heroDiscriptions.add(hero.getDescription()); this.heroImages.add(hero.getImage()); this.heroATK.add(hero.getATK()); } setLayout(new BorderLayout()); pTop=new JPanel(); pTop.setLayout(new GridLayout(1,3)); JPanel pMenus=new JPanel(); pMenus.set

34、Layout(new BorderLayout()); menusList=new JList(heroNames); menusList.setSelectedIndex(0);//设置默认选择第一选项 menusList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);//设置只能单选 menusList.addListSelectionListener(this); JScrollPane listScrollPane=new JScrollPane(menusList); pMenus.ad

35、d(new JLabel("英雄",JLabel.CENTER),"North"); pMenus.add(listScrollPane,"Center"); JPanel pButton=new JPanel(); Box box=Box.createVerticalBox(); this.addButton=new JButton("选 择"); this.addButton.addActionListener(this); this.randonButton=new JButton("随机选择"); this.randon

36、Button.addActionListener(this); this.deleteButton=new JButton("重新选择"); this.deleteButton.addActionListener(this); this.saveButton=new JButton("确 认"); this.saveButton.addActionListener(this); box.add(Box.createVerticalStrut(20)); box.add(addButton); box.add(Box.createVerti

37、calStrut(15)); box.add(randonButton); box.add(Box.createVerticalStrut(15)); box.add(deleteButton); box.add(Box.createVerticalStrut(15)); box.add(saveButton); pButton.add(box); JPanel pOrder=new JPanel(); pOrder.setLayout(new BorderLayout()); orderList=new JList(orderHe

38、roNames); orderList.addListSelectionListener(this); JScrollPane listScrollPane2=new JScrollPane(orderList); pOrder.add(new JLabel("已选择",JLabel.CENTER),"North"); pOrder.add(listScrollPane2,"Center"); pTop.add(pMenus); pTop.add(pButton); pTop.add(pOrder); pBottom=new Im

39、agePanel(); add(pTop,"North"); add(pBottom,"Center"); setBounds(300,10,900,700); this.setResizable(false); this.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); } @Override public void actionPerformed(ActionEvent e) { if(e.getSource()==this.addButton){

40、 Hero hero=this.heroMenus.get(selectedIndex); this.orderHero.add(hero); this.orderHeroNames.addElement(hero.getName()); ClientSocket client=new ClientSocket(); Request request=new Request(4); client.clientSent(request); Response response=client.clientReceive(); JOptionPan

41、e.showMessageDialog(addButton, response.getResponse()); } else if(e.getSource()==this.deleteButton ){ ClientSocket client=new ClientSocket(); Request request=new Request(6); client.clientSent(request); Response response=client.clientReceive(); JOptionPane.showMessageDialog(

42、deleteButton , response.getResponse()); orderIndex=orderList.getSelectedIndex(); this.orderHero.remove(orderIndex); this.orderHeroNames.removeElementAt(orderIndex); } else if(e.getSource()==this.randonButton){ int size=heroMenus.size(); Random rand=new Random(); selecte

43、dIndex=rand.nextInt(size); menusList.setSelectedIndex(selectedIndex); ClientSocket client=new ClientSocket(); Request request=new Request(5); client.clientSent(request); Response response=client.clientReceive(); JOptionPane.showMessageDialog(randonButton, response.getResponse

44、)); } else if(e.getSource()==this.saveButton ){ saveButton.setEnabled(false); try { RandomAccessFile out=new RandomAccessFile(file,"rw"); if(file.exists()){ long length=file.length(); out.seek(length); } for(int i=0;i

45、 out.writeUTF(orderHero.get(i).getName()); out.writeDouble(orderHero.get(i).getATK()); } out.close(); } catch (IOException e1) { } ClientSocket client=new ClientSocket(); Request request=new Request(7); client.clientSent(request); Response response=client.cli

46、entReceive(); JOptionPane.showMessageDialog(saveButton, response.getResponse()); setVisible(false); } } @Override public void valueChanged(ListSelectionEvent e) { if(e.getSource()==this.menusList){ selectedIndex=menusList.getSelectedIndex(); pBottom.repaint(); }

47、 } class ImagePanel extends JPanel{ private static final long serialVersionUID = 1L; public void paint(Graphics g){ g.setColor(getBackground()); g.fillRect(0, 0, getWidth(), getHeight()); g.setColor(Color.BLACK); g.setFont(new Font("楷体",Font.BOLD,18));

48、 g.drawString(heroNames.get(selectedIndex), 260,40 ); g.drawString("攻击力:"+heroATK.get(selectedIndex),500,40); g.drawImage(heroImages.get(selectedIndex),200,45,600,360,this); g.drawString(heroDiscriptions.get(selectedIndex),260,420); } } 四、 实验总结 通过此次实验设计我们熟练掌握了Java Swing的组件、容器、布局管理器、事件处理机制及java的图形处理,受益颇多。

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服