1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 用java设计实现一个简单的动作冒险类游戏

用java设计实现一个简单的动作冒险类游戏

时间:2020-03-08 17:56:01

相关推荐

用java设计实现一个简单的动作冒险类游戏

用java设计实现一个简单的动作冒险类游戏

1、背景

这是java老师布置的本周作业,具体题目截图如下

2、分析

在UML图已经给出的前提下,此作业很容易。自己在此基础上,加了个简单的界面设计和玩家设定的历史记录设计。整体设计见下面自己画的UML图(未加联系的模块间为组合关系),具体设计代码附在下面,加上了详细注释。

3、具体代码设计(附详细注释,共13个.java文件)

(1)

package ActionRisk;/*** * @Author 孙琨* @Date -11-3* @AtXUST* @All Copyright by 孙琨**/public interface WeaponBehavior { // 武器接口void useWeapon(); // 玩家使用的武器}

(2)

package ActionRisk;/*** * @Author 孙琨* @Date -11-3* @AtXUST* @All Copyright by 孙琨**/public class AxeBehavior implements WeaponBehavior { // 斧头类,实现接口WeaponBehavior@Overridepublic void useWeapon() {// TODO Auto-generated method stubSystem.out.println("选择技能:使用斧头劈砍");}}

(3)

package ActionRisk;/*** * @Author 孙琨* @Date -11-3* @AtXUST* @All Copyright by 孙琨**/public class BowAndArrowBehavior implements WeaponBehavior { // 弓箭类,实现接口WeaponBehavior@Overridepublic void useWeapon() {// TODO Auto-generated method stubSystem.out.println("选择技能:使用弓箭射击");}}

(4)

package ActionRisk;/*** * @Author 孙琨* @Date -11-3* @AtXUST* @All Copyright by 孙琨**/public class KnifeBehavior implements WeaponBehavior { // 匕首类,实现接口WeaponBehavior@Overridepublic void useWeapon() {// TODO Auto-generated method stubSystem.out.println("选择技能:使用匕首刺杀");}}

(5)

package ActionRisk;/*** * @Author 孙琨* @Date -11-3* @AtXUST* @All Copyright by 孙琨**/public class SwordBehavior implements WeaponBehavior { // 剑类,实现接口WeaponBehavior@Overridepublic void useWeapon() {// TODO Auto-generated method stubSystem.out.println("选择技能:使用剑刺杀");}}

(6)

package ActionRisk;/*** * @Author 孙琨* @Date -11-3* @AtXUST* @All Copyright by 孙琨**/public class Character { // 超类,人物角色WeaponBehavior weaponBehavior; // 武器接口对象void display() {}// 显示玩家角色设定void fight() {} // 说明玩家战斗所使用的武器技能void setWeponBehaivor(WeaponBehavior weaponBehavior) { // 设定人物角色的武器行为this.weaponBehavior = weaponBehavior;}}

(7)

package ActionRisk;/*** * @Author 孙琨* @Date -11-3* @AtXUST* @All Copyright by 孙琨**/public class King extends Character { // 国王类,用于继承父类Character,并重写其中的两方法void display() {System.out.println("我是一位国王");}void fight() {weaponBehavior.useWeapon();}}

(8)

package ActionRisk;/*** * @Author 孙琨* @Date -11-3* @AtXUST* @All Copyright by 孙琨**/public class Queen extends Character {// 女王类,用于继承父类Character,并重写其中的两方法void display() {System.out.println("我是一位女王");}void fight() {weaponBehavior.useWeapon();}}

(9)

package ActionRisk;/*** * @Author 孙琨* @Date -11-3* @AtXUST* @All Copyright by 孙琨**/public class Knight extends Character {// 骑士类,用于继承父类Character,并重写其中的两方法void display() {System.out.println("我是一位骑士");}void fight() {weaponBehavior.useWeapon();}}

(10)

package ActionRisk;/*** * @Author 孙琨* @Date -11-3* @AtXUST* @All Copyright by 孙琨**/public class Troll extends Character {// 巨魔战将类,用于继承父类Character,并重写其中的两方法void display() {System.out.println("我是巨魔战将");}void fight() {weaponBehavior.useWeapon();}}

(11)

package ActionRisk;import java.util.Scanner;/*** * @Author 孙琨* @Date -11-3* @AtXUST* @All Copyright by 孙琨**/public class SurfaceDesign { // 界面设计public void setSurface(){ // 设定显示的界面Character character = null; // 人物类对象int chooseCharacter = 0;// 人物选项int chooseWeapon = 0; // 武器选项Scanner input = new Scanner(System.in);String playerName = null; // 玩家姓名System.out.println("请输入玩家姓名");if(input.hasNext()){playerName = input.next();}// 选择游戏角色操作System.out.println("\n请选择游戏角色:");System.out.println(" 1.国王");System.out.println(" 2.女王");System.out.println(" 3.骑士");System.out.println(" 4.巨魔战将");System.out.println("请输入选择");String setCharacter = "设置游戏角色为:";if(input.hasNext()){chooseCharacter = input.nextInt();}switch(chooseCharacter){ case 1:character = new King();// 使用对象的上转型对象setCharacter += "国王";break;case 2:character = new Queen(); // 使用对象的上转型对象setCharacter += "女王";break;case 3:character = new Knight(); // 使用对象的上转型对象setCharacter += "骑士";break;case 4:character = new Troll(); // 使用对象的上转型对象setCharacter += "巨魔战将";break;default:System.out.println("您的选择出错,请重新选择");}// 选择武器操作System.out.println("\n请选择使用的武器");System.out.println("1.斧头");System.out.println("2.匕首");System.out.println("3.剑");System.out.println("4.弓箭");System.out.println("请输入您的选择:");String setWeapon = "选择武器为:";if(input.hasNext()){chooseWeapon = input.nextInt();}switch(chooseWeapon){case 1:character.setWeponBehaivor(new AxeBehavior()); // 使用接口回调setWeapon += "斧头";break;case 2:character.setWeponBehaivor(new KnifeBehavior()); // 使用接口回调setWeapon += "匕首";break;case 3:character.setWeponBehaivor(new SwordBehavior()); // 使用接口回调setWeapon += "剑";break;case 4:character.setWeponBehaivor(new BowAndArrowBehavior()); // 使用接口回调setWeapon += "弓箭";break;default:System.out.println("您的选择出错,请重新选择");}// 人物行为演示System.out.println();character.display(); // 显示玩家角色设定character.fight(); // 说明玩家战斗所使用的武器技能// 对当前玩家游戏设定信息进行存档System.out.println("\n提示:");System.out.println(playerName + "您的当前游戏设定已经存档,历史记录放在history.txt文件中");SaveHistory history = new SaveHistory();history.setRole(playerName, setCharacter, setWeapon); // 初始化history.doSaveHistory(); // 具体保存操作}}

(12)

package ActionRisk;import java.io.BufferedWriter;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.Date;/*** * @Author 孙琨* @Date -11-3* @AtXUST* @All Copyright by 孙琨**/public class SaveHistory {String playerName = null; // 玩家姓名String setCharacter = null; // 设定的人物角色String setWeapon = null; // 设定的武器public void setRole(String playerName,String setCharacter,String setWeapon){ // 初始化this.playerName = playerName;this.setCharacter = setCharacter;this.setWeapon = setWeapon;}public void doSaveHistory(){ // 进行存储信息操作try{// 游戏设定时间设置Date nowTime = new Date();SimpleDateFormat matter = new SimpleDateFormat("'游戏设定时间为:'y年M月d日H时m分s秒");String setPlayerTime = matter.format(nowTime);// 文件缓冲流输出操作File file = new File("history.txt"); // 若无名为history.txt的文件,则创建一个FileWriter outOne = new FileWriter(file,true);BufferedWriter outTwo = new BufferedWriter(outOne);// 写入玩家姓名信息outTwo.write(playerName);outTwo.newLine();// 写入游戏设定时间outTwo.write(setPlayerTime);outTwo.newLine();// 写入设定的人物角色信息outTwo.write(setCharacter);outTwo.newLine();// 写入设定的武器信息outTwo.write(setWeapon);outTwo.newLine();outTwo.newLine();// 关闭文件outTwo.close();outOne.close();}catch(IOException e){ }}}

(13)

package ActionRisk;/*** * @Author 孙琨* @Date -11-3* @AtXUST* @All Copyright by 孙琨**/public class MainClass { // 测试类public static void main(String[] args) {// TODO Auto-generated method stubSurfaceDesign surface = new SurfaceDesign(); // 创建界面设计对象surface.setSurface(); // 具体设定界面操作}}

4、测试结果截图

(1)

(2)

(3)

(4)

5、打包成可执行文件(jar和exe)

具体操作方法可见博客,链接为: /u010043538/article/details/13167099

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。