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