策略模式肖正文Word格式.docx
- 文档编号:6543013
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:23
- 大小:95.78KB
策略模式肖正文Word格式.docx
《策略模式肖正文Word格式.docx》由会员分享,可在线阅读,更多相关《策略模式肖正文Word格式.docx(23页珍藏版)》请在冰点文库上搜索。
界面类
packagexiao.designer.UI;
importjava.awt.BorderLayout;
importjava.awt.Color;
importjava.awt.Dimension;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjavax.swing.Box;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JMenu;
importjavax.swing.JMenuBar;
importjavax.swing.JMenuItem;
importjavax.swing.JPanel;
importjavax.swing.JSplitPane;
importjavax.swing.JTextArea;
importjavax.swing.JTextField;
importjavax.swing.text.html.HTMLEditorKit.Parser;
importxiao.designer.Gamerole.GameRole;
importxiao.designer.conGameRole.Kunfufemal;
importxiao.designer.conGameRole.NifeMen;
importxiao.designer.conGameRole.Singler;
importxiao.designer.conmofabehavier.HuoAttack;
importxiao.designer.conmofabehavier.JinAttack;
importxiao.designer.conmofabehavier.WaterAttack;
importxiao.designer.conphybehavier.NifeAttack;
importxiao.designer.conphybehavier.RellAttack;
importxiao.designer.conphybehavier.SoliAttack;
publicclassGameStar{
JFramef=null;
//菜单条
//左边方框右边方框
Boxbox1=null;
Boxbox2=null;
//生命值
JPanelp0=null;
JLabell0=null;
JTextFieldt0=null;
JPanelp1=null;
JLabell1=null;
JTextFieldt1=null;
//魔法值
JPanelp2=null;
JLabell2=null;
JTextFieldt2=null;
//外观描述
JPanelp3=null;
JLabell3=null;
JTextFieldt3=null;
//物理攻击方式
JPanelp4=null;
JLabell4=null;
JTextFieldt4=null;
//魔法攻击方式
JPanelp5=null;
JLabell5=null;
JTextFieldt5=null;
JButtonjbt=null;
//右边的
JTextAreatea=null;
publicvoidinit(){
f=newJFrame("
游戏"
);
//菜单条
//左边方框右边方框
box1=Box.createVerticalBox();
box2=Box.createVerticalBox();
//
//生命值
p0=newJPanel();
l0=newJLabel("
角色(和尚/侠女/忍者)"
t0=newJTextField(10);
p0.add(l0);
p0.add(t0);
box1.add(p0);
p1=newJPanel();
l1=newJLabel("
生命值"
t1=newJTextField(10);
p1.add(l1);
p1.add(t1);
box1.add(p1);
//魔法值
p2=newJPanel();
l2=newJLabel("
魔法值"
t2=newJTextField(10);
p2.add(l2);
p2.add(t2);
box1.add(p2);
//外观描述
p3=newJPanel();
l3=newJLabel("
外貌描述"
t3=newJTextField(10);
p3.add(l3);
p3.add(t3);
box1.add(p3);
//物理攻击方式
p4=newJPanel();
l4=newJLabel("
物理攻击(刀/剑/手)"
t4=newJTextField(10);
p4.add(l4);
p4.add(t4);
box1.add(p4);
tea=newJTextArea();
tea.setEditable(false);
tea.setBackground(Color.lightGray);
box2.add(tea);
//魔法攻击方式
p5=newJPanel();
l5=newJLabel("
魔法攻击(火/金/水)"
t5=newJTextField(10);
p5.add(l5);
p5.add(t5);
box1.add(p5);
jbt=newJButton("
创建角色"
box1.add(jbt);
//创建角色事件监听
jbt.addActionListener(newActionListener(){
@Override
publicvoidactionPerformed(ActionEvente){
//TODOAuto-generatedmethodstub
GameRoleg=null;
Stringrole=t0.getText();
intl=Integer.parseInt(t1.getText());
intm=Integer.parseInt(t2.getText());
Stringdes=t3.getText();
Stringss=t4.getText();
Stringas=t5.getText();
if(role.equals("
侠女"
)){
g=newKunfufemal();
g.setLife(l);
g.setMofa(m);
g.setStr(des);
if(ss.equals("
刀"
g.setPa(newNifeAttack());
}elseif(ss.equals("
剑"
g.setPa(newSoliAttack());
手"
g.setPa(newRellAttack());
}
if(as.equals("
水"
g.setMoa(newWaterAttack());
}elseif(as.equals("
火"
g.setMoa(newHuoAttack());
金"
g.setMoa(newJinAttack());
}elseif(role.equals("
和尚"
g=newSingler();
忍者"
g=newNifeMen();
if(ss.equals("
}
tea.append(g.play());
tea.append(g.showface());
tea.append("
\n物理攻击方式:
"
+g.PhyAttack());
\n魔法攻击方式:
+g.moAttack());
}
});
JSplitPanetop=newJSplitPane(JSplitPane.HORIZONTAL_SPLIT,false,
box1,box2);
f.add(top);
f.setBounds(0,0,500,500);
f.setPreferredSize(newDimension(300,300));
f.setVisible(true);
}
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
newGameStar().init();
}
游戏角色父类
packagexiao.designer.Gamerole;
importxiao.designer.behavier.MofaAttack;
importxiao.designer.behavier.PhysicalAttack;
/**
*游戏角色
*
*@authorAdministrator
publicabstractclassGameRole{
//把具体发行为组合进来
publicMofaAttackmoa=null;
publicPhysicalAttackpa=null;
//生命值魔法值
publicintlife;
publicintmofa;
publicStringstr;
publicStringshowface(){
return"
\n生命值:
+life+"
\n魔法值:
+mofa+"
\n外貌描述:
+str;
publicintgetLife(){
returnlife;
publicvoidsetLife(intlife){
this.life=life;
publicintgetMofa(){
returnmofa;
publicvoidsetMofa(intmofa){
this.mofa=mofa;
publicStringgetStr(){
returnstr;
publicvoidsetStr(Stringstr){
this.str=str;
publicMofaAttackgetMoa(){
returnmoa;
publicvoidsetMoa(MofaAttackmoa){
this.moa=moa;
publicPhysicalAttackgetPa(){
returnpa;
publicvoidsetPa(PhysicalAttackpa){
this.pa=pa;
publicGameRole(){
//魔法攻击
publicStringmoAttack(){
returnthis.moa.MAttack();
publicStringPhyAttack(){
returnthis.pa.PhAttack();
publicStringplay(){
returnnull;
游戏较色子类
packagexiao.designer.conGameRole;
*侠女
*
publicclassKunfufemalextendsGameRole{
//侠女用剑攻击魔法属于金系
publicKunfufemal(){
moa=newJinAttack();
pa=newSoliAttack();
life=100;
mofa=50;
str="
美女"
;
return"
我是侠女"
*忍着
publicclassNifeMenextendsGameRole{
//忍者用刀和火
publicNifeMen(){
moa=newHuoAttack();
pa=newNifeAttack();
life=120;
mofa=60;
str="
帅哥"
我是忍者"
*和尚
publicclassSinglerextendsGameRole{
//和尚用水和手
publicSingler(){
life=130;
mofa=70;
猛男"
return"
我是和尚"
//魔法行为接口
packagexiao.designer.behavier;
*魔法攻击行为
publicinterfaceMofaAttack{
*魔法攻击
publicStringMAttack();
//魔法行为实现类
packagexiao.designer.conmofabehavier;
*火攻
publicclassHuoAttackimplementsMofaAttack{
@Override
publicStringMAttack(){
火系魔法"
*金攻
publicclassJinAttackimplementsMofaAttack{
金系魔法"
*水攻
publicclassWaterAttackimplementsMofaAttack{
水系魔法"
//物理行为接口
*物理攻击行为
publicinterfacePhysicalAttack{
publicStringPhAttack();
//物理行为实现类
packagexiao.designer.conphybehavier;
*刀攻
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 策略 模式 正文
![提示](https://static.bingdoc.com/images/bang_tan.gif)