RPG角色生成器

RPG角色生成器


本次的上机作业如图

在这里插入图片描述
在这里插入图片描述


解答思路: 首先以面向对象的方法,创建好人物角色的各个属性及他们的setter和getter方法,之后通过静态代码块初始化一些属性对应的值,之后通过键盘输入对应的值,最后根据已经输入的属性随机计算他们的职业属性,最后进行判断时候满意,如果不满意则重新填写相应的角色值,如果满意则将角色对应的所有属性保存入数据库中。


运行截图:
运行截屏

数据库截屏


以下为所有代码:

package shilaoshi;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import java.util.Scanner;

public class RPG {
	
	static Map<Integer, String> sexMap = new HashMap<>();    //性别map
	
	static Map<Integer, String> raceMap = new HashMap<>();   //种族map
	
	static Map<Integer, String> professionMap = new HashMap<>();  //职业map
	
	static Scanner scanner = new Scanner(System.in);
	
	//通过静态代码块对这几个map进行初始化
	static{
		sexMap.put(0, "男性");
		sexMap.put(1, "女性");
		
		raceMap.put(0, "人类");
		raceMap.put(1, "精灵");
		raceMap.put(2, "兽人");
		raceMap.put(3, "矮人");
		raceMap.put(4, "元素");
		
		professionMap.put(0, "狂战士");
		professionMap.put(1, "圣骑士");
		professionMap.put(2, "刺客");
		professionMap.put(3, "猎手");
		professionMap.put(4, "祭司");
		professionMap.put(5, "巫师");
	}
	
	private String name;			//名字	
	private String sex;				//性别
	private String race;			//种族
	private String profession;		//职业
	private Integer power;			//力量
	private Integer agile;			//敏捷
	private Integer physical;		//体力
	private Integer intelligence;	//智力
	private Integer wisdom;			//智慧
	private Integer life;			//生命
	private Integer magic;          //魔法


	//定义他们的setter和getter方法
	public Integer getMagic() {
		return magic;
	}

	public void setMagic(Integer magic) {
		this.magic = magic;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public String getRace() {
		return race;
	}

	public void setRace(String race) {
		this.race = race;
	}

	public String getProfession() {
		return profession;
	}

	public void setProfession(String profession) {
		this.profession = profession;
	}

	public Integer getPower() {
		return power;
	}

	public void setPower(Integer power) {
		this.power = power;
	}

	public Integer getAgile() {
		return agile;
	}

	public void setAgile(Integer agile) {
		this.agile = agile;
	}

	public Integer getPhysical() {
		return physical;
	}

	public void setPhysical(Integer physical) {
		this.physical = physical;
	}

	public Integer getIntelligence() {
		return intelligence;
	}

	public void setIntelligence(Integer intelligence) {
		this.intelligence = intelligence;
	}

	public Integer getWisdom() {
		return wisdom;
	}

	public void setWisdom(Integer wisdom) {
		this.wisdom = wisdom;
	}

	public Integer getLife() {
		return life;
	}

	public void setLife(Integer life) {
		this.life = life;
	}
	
	
	/**
	 * 初始化方法
	 */
	public void init(){
		//Scanner scanner = new Scanner(System.in);
		System.out.print("请输入name: ");
		String nameTemp = scanner.next();
		this.setName(nameTemp);
		System.out.print("请输入角色性别:(0男性,1女性) ");
		int sexTemp = scanner.nextInt();
		this.setSex(sexMap.get(sexTemp));
		System.out.print("请输入角色种族:(0人类,1精灵,2兽人,3矮人,4元素) ");
		int raceTemp = scanner.nextInt();
//		if(!raceMap.values().contains(raceTemp)){
//			System.out.println();
//		}
		this.setRace(raceMap.get(raceTemp));
		System.out.print("请输入职业类型:(0狂战士,1圣骑士,2刺客,3猎手,4祭司,5巫师) ");
		int professionTemp;
		boolean b = false;
		while(!b){
			professionTemp = scanner.nextInt();
			b = checkProfession(raceMap.get(raceTemp), professionMap.get(professionTemp));
			if (b == false) {
				System.out.println("职业选择有误,请重新输入");
				System.out.print("请输入职业类型:(0狂战士,1圣骑士,2刺客,3猎手,4祭司,5巫师) ");
			}
			if (b == true) {
				this.setProfession(professionMap.get(professionTemp));
			}
		}
		setAttribute();
		setLife(getPhysical()*20);
		setMagic((getWisdom()+getIntelligence())*10);
		printRole();
		

		//scanner.close();
	}
	
	/**
	 * 设置属性值
	 */
	public void setAttribute() {

		if (getProfession().equals("狂战士")) {
			int a = (int) (5+Math.random()*10-5);
			setWisdom(a);
			int b = (int) (5+Math.random()*10-5);
			setIntelligence(b);
			int c = (int) (20+Math.random()*10-5);
			setAgile(c);
			int d = (int) (30+Math.random()*10-5);
			setPhysical(d);
			int e = 100-a-b-c-d;
			setPower(e);
		} else if (getProfession().equals("圣骑士")) {
			int a = (int) (10+Math.random()*10-5);
			setWisdom(a);
			int b = (int) (20+Math.random()*10-5);
			setIntelligence(b);
			int c = (int) (15+Math.random()*10-5);
			setAgile(c);
			int d = (int) (30+Math.random()*10-5);
			setPhysical(d);
			int e = 100-a-b-c-d;
			setPower(e);
		} else if (getProfession().equals("刺客")) {
			int a = (int) (10+Math.random()*10-5);
			setWisdom(a);
			int b = (int) (15+Math.random()*10-5);
			setIntelligence(b);
			int c = (int) (35+Math.random()*10-5);
			setAgile(c);
			int d = (int) (20+Math.random()*10-5);
			setPhysical(d);
			int e = 100-a-b-c-d;
			setPower(e);
		} else if (getProfession().equals("猎手")) {
			int a = (int) (20+Math.random()*10-5);
			setWisdom(a);
			int b = (int) (10+Math.random()*10-5);
			setIntelligence(b);
			int c = (int) (40+Math.random()*10-5);
			setAgile(c);
			int d = (int) (15+Math.random()*10-5);
			setPhysical(d);
			int e = 100-a-b-c-d;
			setPower(e);
		} else if (getProfession().equals("祭司")) {
			int a = (int) (15+Math.random()*10-5);
			setWisdom(a);
			int b = (int) (35+Math.random()*10-5);
			setIntelligence(b);
			int c = (int) (20+Math.random()*10-5);
			setAgile(c);
			int d = (int) (15+Math.random()*10-5);
			setPhysical(d);
			int e = 100-a-b-c-d;
			setPower(e);
		} else if (getProfession().equals("巫师")) {
			int a = (int) (40+Math.random()*10-5);
			setWisdom(a);
			int b = (int) (20+Math.random()*10-5);
			setIntelligence(b);
			int c = (int) (20+Math.random()*10-5);
			setAgile(c);
			int d = (int) (10+Math.random()*10-5);
			setPhysical(d);
			int e = 10-a-b-c-d;
			setPower(e);
		}
	}


	/**
	 * 检查职业是否输入正确
	 * @param race
	 * @param profession
	 * @return
	 */
	public boolean checkProfession(String race, String profession){
		
		if (race.equals("精灵")) {
			if (profession.equals("狂战士")) {
				return false;
			}else if (race.equals("圣骑士")) {
				return false;
			}else{
				return true;
			}
		}else if (race.equals("兽人")) {
			if (profession.equals("圣骑士")) {
				return false;
			} else if (profession.equals("刺客")) {
				return false;
			} else if (profession.equals("巫师")) {
				return false;
			}else{
				return true;
			}
		} else if (race.equals("矮人")) {
			if (profession.equals("刺客")) {
				return false;
			}else if (profession.equals("猎手")) {
				return false;
			}else if (profession.equals("巫师")) {
				return false;
			}else {
				return true;
			}
		} else if (race.equals("元素")) {
			if (profession.equals("祭祀")) {
				return true;
			} else if (profession.equals("巫师")) {
				return true;
			} else {
				return true;
			}
		}
		return true;
		
	}
	
	/**
	 * 打印输出
	 */
	public void printRole(){
		System.out.println("===============================");
		System.out.println("姓名:"+this.getName());
		System.out.println("===============================");
		System.out.println("性别:"+this.getSex());
		System.out.println("===============================");
		System.out.println("种族:"+this.getRace());
		System.out.println("===============================");
		System.out.println("职业:"+this.getProfession());
		System.out.println("===============================");
		System.out.println("力量:"+this.getPower());
		System.out.println("===============================");
		System.out.println("敏捷:"+this.getAgile());
		System.out.println("===============================");
		System.out.println("体力:"+this.getPhysical());
		System.out.println("===============================");
		System.out.println("智力:"+this.getIntelligence());
		System.out.println("===============================");
		System.out.println("智慧:"+this.getWisdom());
		System.out.println("===============================");
		System.out.println("生命值:"+this.getLife());
		System.out.println("===============================");
		System.out.println("魔法值:"+this.getMagic());
		System.out.println("===============================");

	}
	/**
	 * 建立连接
	 * 
	 * @return
	 */
	public static Connection getConnection() {
		Connection conn = null;
		try {
			// 1.注册驱动
			Class.forName("com.mysql.jdbc.Driver");
			// 2.建立连接
			conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/Fish?useSSL=yes", "root", "1234");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			System.out.println("注册驱动失败");
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		return conn;

	}

	/**
	 * save函数,将源Date与状态存入数据库
	 * 
	 * @param strDate
	 * @param state
	 */
	public  void save() {
		PreparedStatement ps = null;
		Connection conn = null;
		String sql = "insert into RPG(name,sex,race,profession,power,agile,physical,intelligence,wisdom,life,magic) values(?,?,?,?,?,?,?,?,?,?,?)";
		try {
			conn = getConnection();
			ps = conn.prepareStatement(sql);
			ps.setString(1, getName());
			ps.setString(2, getSex());
			ps.setString(3, getRace());
			ps.setString(4, getProfession());
			ps.setInt(5, getPower());
			ps.setInt(6, getAgile());;
			ps.setInt(7, getPhysical());;
			ps.setInt(8, getIntelligence());
			ps.setInt(9, getWisdom());
			ps.setInt(10, getLife());
			ps.setInt(11, getMagic());
			ps.executeUpdate();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			try {
				if (conn != null) {
					conn.close();
				}
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	
	public void create() {
		
		//Scanner scanner = new Scanner(System.in);
		int a = 1;
		while(a != 0) {
			init();
			System.out.println("0愿意,1不愿意");
			a = scanner.nextInt();
		}
		System.out.println("创建成功");
		save();
		scanner.close();
	}
	/**
	 * main
	 * @param args
	 */
	public static void main(String[] args) {
		RPG rpg = new RPG();
		//rpg.init();
		rpg.create();
		
	}

}


谢谢观看 0.0

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值