资源预览内容
第1页 / 共9页
第2页 / 共9页
第3页 / 共9页
第4页 / 共9页
第5页 / 共9页
第6页 / 共9页
第7页 / 共9页
第8页 / 共9页
第9页 / 共9页
亲,该文档总共9页全部预览完了,如果喜欢就下载吧!
资源描述
精选优质文档-倾情为你奉上云南大学软件学院实 验 报 告序号: 姓名: 学号: 专业:软件工程 日期:2015.12.03 成绩: 实验一 策略模式的运用一、实验目的:策略模式定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。在熟悉策略模式相关理论知识的基础上,使用策略模式实现一个小游戏。二、实验要求:使用策略模式实现一个小游戏,要求如下:1. 游戏中有三个角色:和尚,侠女,忍者;2. 每个角色都有生命值和魔法值,但各角色不同。3. 各角色外观不同。4. 每个角色具有魔法攻击和物理攻击;5. 物理攻击有三种:用刀、用剑、用手;6. 魔法攻击也有三种:火系魔法、金系魔法、水系魔法;7. 各角色可以动态更换物理、魔法攻击方式,也可以动态选择攻击方法。1、 设计并绘制该程序的类图;2、 依照设计的类图使用Java语言编写代码,并实现该程序;3、 除了核心的模式相关类实现外,提供测试环境,按照难度高低,分别是:a) 控制台程序,Client硬编码初始化模式和测试环境,运行结果文本输出;b) 控制台程序,Client初始化测试环境,并根据用户输入运算,运行结果文本输出;c) 设计并实现用户UI,Client初始化测试环境,并根据用户在UI控件上的输入运算,运行结果文本输出。三、实验内容:类图实验代码魔法攻击package Magic;public interface magic public void magic();火系魔法package Magic;public class fire implements magicpublic void magic()System.out.println(火系魔法攻击);金系魔法package Magic;public class metal implements magicpublic void magic()System.out.println(金系魔法攻击);水系魔法package Magic;public class water implements magicpublic void magic()System.out.println(水系魔法攻击);物理攻击package Physic;public interface physic public void physic();徒手package Physic;public class hand implements physicpublic void physic()System.out.println(徒手攻击);用刀package Physic;public class knife implements physicpublic void physic()System.out.println(用刀攻击);用剑package Physic;public class sword implements physicpublic void physic()System.out.println(用剑攻击);角色package Role;import Magic.magic;import Physic.physic;public abstract class role magic Mattack;physic Pattack;int magicValue = 0;int lifeValue = 0;public role()public abstract void display();public void Mattack()Mattack.magic();public void Pattack()Pattack.physic();public void setP(physic p)Pattack = p;public void setM(magic m)Mattack = m;和尚package Role;import Physic.physic;public class Buddhistmonk extends rolepublic Buddhistmonk()magicValue = 90;lifeValue = 150;public void display()System.out.println(*);System.out.println(角色:和尚);System.out.println(外观:身披袈裟,手持钵盂);System.out.println(生命值:+ lifeValue + + 魔法值: + magicValue);System.out.println(*);忍者package Role;public class Ninjia extends rolepublic Ninjia()magicValue = 100;lifeValue = 120;public void display()System.out.println(*);System.out.println(角色:忍者);System.out.println(外观:身着白衣,腰佩宝剑);System.out.println(生命值:+ lifeValue + + 魔法值: + magicValue);System.out.println(*);侠女package Role;public class Swordswomen extends rolepublic Swordswomen()magicValue = 140;lifeValue = 80;public void display()System.out.println(*);System.out.println(角色:侠女);System.out.println(外观:身穿黑色忍者服,头戴面具);System.out.println(生命值:+ lifeValue + + 魔法值: + magicValue);System.out.println(*);测试函数package test;import java.util.Scanner;import Magic.fire;import Magic.metal;import Magic.water;import Physic.hand;import Physic.knife;import Physic.sword;import Role.Buddhistmonk;import Role.Ninjia;import Role.Swordswomen;import Role.role;public class test public static void main(String args) / TODO Auto-generated method stubSystem.out.println(请选择角色:1、和尚 2、女侠 3、忍者);Scanner in = new Scanner(System.in);int selectRole =in.nextInt();role theRole = null;if(selectRole = 1)theRole = (Buddhistmonk)new Buddhistmonk();else if(selectRole = 2)theRole = (Swordswomen)new Swordswomen();else if(selectRole = 3)theRole = (Ninjia)new Ninjia();elseSystem.out.println(输入错误!);theRole.display();System.out.println(攻击方式:1、魔法攻击 2、物理攻击);System.out.println(魔法攻击方法:4、火系魔法 5、水系魔法 6、金系魔法);System.out.println(物理攻击方法:7、用刀攻击 8、用剑攻击 9、徒手攻击);System.out.println(开始攻击!);System.out.println(选择攻击方式:);int MroP =in.nextInt();while(true)if(MroP = 1)System.out.println(正在进行魔法攻击 ,选择魔法攻击方法:4,5,6);while(MroP != 2)MroP =in.nextInt();switch(MroP)case 4: theRole.setM(new fire();break;case 5: theRole.setM(new water();break;case 6: theRole.setM(new metal();break;case 2: System.out.println(切换为物理攻击 );break;default:System.out.println(输入错误! );continue;if (MroP != 2 ) theRole.Mattack();else if(MroP = 2)System.out.println(正在进行物理攻击,选择物理攻击方法:7,8,9 );while(MroP != 1)MroP =in.nextInt();switch(MroP)case 7:
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号