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

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

时间:2019-07-19 17:50:11

相关推荐

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

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

1、背景

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

2、分析

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

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

(1)

package ActionRisk;

/**

*

* @Author 孙琨

* @Date -11-3

* @At XUST

* @All Copyright by 孙琨

*

*/

public interface WeaponBehavior { // 武器接口

void useWeapon(); // 玩家使用的武器

}

(2)

package ActionRisk;

/**

*

* @Author 孙琨

* @Date -11-3

* @At XUST

* @All Copyright by 孙琨

*

*/

public class AxeBehavior implements WeaponBehavior { // 斧头类,实现接口WeaponBehavior

@Override

public void useWeapon() {

// TODO Auto-generated method stub

System.out.println("选择技能:使用斧头劈砍");

}

}

(3)

package ActionRisk;

/**

*

* @Author 孙琨

* @Date -11-3

* @At XUST

* @All Copyright by 孙琨

*

*/

public class BowAndArrowBehavior implements WeaponBehavior { // 弓箭类,实现接口WeaponBehavior

@Override

public void useWeapon() {

// TODO Auto-generated method stub

System.out.println("选择技能:使用弓箭射击");

}

}

(4)

package ActionRisk;

/**

*

* @Author 孙琨

* @Date -11-3

* @At XUST

* @All Copyright by 孙琨

*

*/

public class KnifeBehavior implements WeaponBehavior { // 匕首类,实现接口WeaponBehavior

@Override

public void useWeapon() {

// TODO Auto-generated method stub

System.out.println("选择技能:使用匕首刺杀");

}

}

(5)

package ActionRisk;

/**

*

* @Author 孙琨

* @Date -11-3

* @At XUST

* @All Copyright by 孙琨

*

*/

public class SwordBehavior implements WeaponBehavior { // 剑类,实现接口WeaponBehavior

@Override

public void useWeapon() {

// TODO Auto-generated method stub

System.out.println("选择技能:使用剑刺杀");

}

}

(6)

package ActionRisk;

/**

*

* @Author 孙琨

* @Date -11-3

* @At XUST

* @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

* @At XUST

* @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

* @At XUST

* @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

* @At XUST

* @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

* @At XUST

* @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

* @At XUST

* @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

* @At XUST

* @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

* @At XUST

* @All Copyright by 孙琨

*

*/

public class MainClass { // 测试类

public static void main(String[] args) {

// TODO Auto-generated method stub

SurfaceDesign surface = new SurfaceDesign(); // 创建界面设计对象

surface.setSurface(); // 具体设定界面操作

}

}

4、测试结果截图

(1)

(2)

(3)

(4)

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

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