文本格斗游戏

character实体类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
import java.util.Random;

public class Character {
private String name;
private Integer blood;
private char sex;
private String face;

String[] boyfaces = {"风流俊雅", "气宇轩昂", "相貌英俊", "五官端正", "相貌平平", "一塌糊涂", "面目狰狞"};
String[] girlfaces = {"美奂绝伦", "沉鱼落雁", "婷婷玉立", "身材娇好", "相貌平平", "相貌简陋", "惨不忍睹"};

// attack 攻击描述:
String[] attacks_desc = {
"%s使出了一招【背心钉】,转到对方的身后,一掌向%s背心的灵台穴拍去。 ",
"%s使出了一招【游空探爪】,飞起身形自半空中变掌为抓锁向%s。 ",
"%s大喝一声,身形下伏,一招【劈雷坠地】,捶向%s双腿。 ",
"%s运气于掌,一瞬间掌心变得血红,一式【掌心雷】,推向%s。",
"%s阴手翻起阳手跟进,一招【没遮拦】,结结实实的捶向%s。 ",
"%s上步抢身,招中套招,一招【劈挂连环】,连环攻向%s。"};
//injured 受伤描述:
String[] injureds_desc = {
"结果%s退了半步,毫发无损",
"结果给%s造成一处瘀伤",
"结果一击命中, %s痛得弯下腰",
"结果%s痛苦地闷哼了一声,显然受了点内伤",
"结果%s摇摇晃晃,一跤摔倒在地",
"结果%s脸色一下变得惨白,连退了好几步",
"结果『轰』的一声,%s口中鲜血狂喷而出",
"结果%s一声惨叫,像滩软泥般塌了下去"};

public Character() {
}

public String getFace() {
return face;
}

public Character(String name, Integer blood, char sex) {
this.name = name;
this.blood = blood;
this.sex = sex;
setFace(sex);
}

public void setFace(char sex) {
Random r = new Random();
if (sex == '男') {
int index = r.nextInt(boyfaces.length);
this.face = boyfaces[index];

} else if (sex == '女') {
int index = r.nextInt(girlfaces.length);
this.face = girlfaces[index];
} else {
//默认
this.face = "奇丑无比";
}
}

public String getName() {
return name;
}

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

public Integer getBlood() {
return blood;
}

public void setBlood(Integer blood) {
this.blood = blood;
}

public char getSex() {
return sex;
}

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


//攻击R1攻击R2,就是方法的调用者攻击参数
public void attack(Character Ch) {
Random r = new Random();
int index = r.nextInt(attacks_desc.length);
//输出攻击招数
System.out.printf(attacks_desc[index], this.getName(), Ch.getName());
System.out.println();
//随机伤害血量
int hurt = r.nextInt(20) + 1;
//判断剩余血量是否为零
int remainBlood = Ch.getBlood() - hurt;
remainBlood = remainBlood < 0 ? 0 : remainBlood;
Ch.setBlood(remainBlood);
//受伤描述
if (remainBlood > 90) {
System.out.printf(injureds_desc[0], Ch.getName());
} else if (remainBlood > 80) {
System.out.printf(injureds_desc[1], Ch.getName());
} else if (remainBlood > 70) {
System.out.printf(injureds_desc[2], Ch.getName());
} else if (remainBlood > 60) {
System.out.printf(injureds_desc[3], Ch.getName());
} else if (remainBlood > 40) {
System.out.printf(injureds_desc[4], Ch.getName());
} else if (remainBlood > 10) {
System.out.printf(injureds_desc[5], Ch.getName());
} else {
System.out.printf(injureds_desc[7], Ch.getName());
}
System.out.println();
}

public void showInfo() {
System.out.println("姓名:" + getName());
System.out.println("血量:" + getBlood());
System.out.println("性别:" + getSex());
System.out.println("长相:" + getFace());
}
}

main函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public static void main(String[] args) {
Character ch1 = new Character("乔峰", 100, '男');
Character ch2 = new Character("灭绝师太", 100, '女');
ch1.showInfo();
ch2.showInfo();
while (true) {
//角色一攻击角色二
ch1.attack(ch2);
if (ch2.getBlood() == 0) {
System.out.println(ch1.getName() + "KO了" + ch2.getName());
break;
}
//角色二攻击角色三
ch2.attack(ch1);
if (ch1.getBlood() == 0) {
System.out.println(ch2.getName() + "KO了" + ch1.getName());
break;
}
}
}

姓名:乔峰
血量:100
性别:男
长相:气宇轩昂
姓名:灭绝师太
血量:100
性别:女
长相:婷婷玉立
乔峰使出了一招【背心钉】,转到对方的身后,一掌向灭绝师太背心的灵台穴拍去。
结果灭绝师太退了半步,毫发无损
灭绝师太阴手翻起阳手跟进,一招【没遮拦】,结结实实的捶向乔峰。
结果给乔峰造成一处瘀伤
乔峰运气于掌,一瞬间掌心变得血红,一式【掌心雷】,推向灭绝师太。
结果灭绝师太退了半步,毫发无损
灭绝师太上步抢身,招中套招,一招【劈挂连环】,连环攻向乔峰。
结果一击命中, 乔峰痛得弯下腰
乔峰阴手翻起阳手跟进,一招【没遮拦】,结结实实的捶向灭绝师太。
结果给灭绝师太造成一处瘀伤
灭绝师太使出了一招【游空探爪】,飞起身形自半空中变掌为抓锁向乔峰。
结果乔峰痛苦地闷哼了一声,显然受了点内伤
乔峰上步抢身,招中套招,一招【劈挂连环】,连环攻向灭绝师太。
结果一击命中, 灭绝师太痛得弯下腰
灭绝师太大喝一声,身形下伏,一招【劈雷坠地】,捶向乔峰双腿。
结果乔峰摇摇晃晃,一跤摔倒在地
乔峰上步抢身,招中套招,一招【劈挂连环】,连环攻向灭绝师太。
结果灭绝师太痛苦地闷哼了一声,显然受了点内伤
灭绝师太使出了一招【游空探爪】,飞起身形自半空中变掌为抓锁向乔峰。
结果乔峰脸色一下变得惨白,连退了好几步
乔峰上步抢身,招中套招,一招【劈挂连环】,连环攻向灭绝师太。
结果灭绝师太摇摇晃晃,一跤摔倒在地
灭绝师太使出了一招【游空探爪】,飞起身形自半空中变掌为抓锁向乔峰。
结果乔峰脸色一下变得惨白,连退了好几步
乔峰运气于掌,一瞬间掌心变得血红,一式【掌心雷】,推向灭绝师太。
结果灭绝师太摇摇晃晃,一跤摔倒在地
灭绝师太大喝一声,身形下伏,一招【劈雷坠地】,捶向乔峰双腿。
结果乔峰一声惨叫,像滩软泥般塌了下去
乔峰上步抢身,招中套招,一招【劈挂连环】,连环攻向灭绝师太。
结果灭绝师太摇摇晃晃,一跤摔倒在地
灭绝师太使出了一招【游空探爪】,飞起身形自半空中变掌为抓锁向乔峰。
结果乔峰一声惨叫,像滩软泥般塌了下去
乔峰使出了一招【背心钉】,转到对方的身后,一掌向灭绝师太背心的灵台穴拍去。
结果灭绝师太脸色一下变得惨白,连退了好几步
灭绝师太使出了一招【背心钉】,转到对方的身后,一掌向乔峰背心的灵台穴拍去。
结果乔峰一声惨叫,像滩软泥般塌了下去
灭绝师太KO了乔峰

学生信息操作

学生Javabean

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public class Student {
private int id;
private String name;
private int age;

public Student() {
}

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getName() {
return name;
}

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

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

public Student(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}

}

main函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
public static void main(String[] args) {
/*定义一个长度为3的数组,数组存储1~3名学生对象作为初始数据,学生对象的学号,姓名各不相同。学生的属性:学号,姓名,年龄。
要求1:再次添加一个学生对象,并在添加的时候进行学号的唯一性判断。
要求2:添加完毕之后,遍历所有学生信息。
要求3:通过id删除学生信息,如果存在,则删除,如果不存在,则提示删除失败。
要求4:删除完毕之后,遍历所有学生信息。
要求5:查询数组id为heima002”的学生,如果存在,则将他的年龄+1岁*/
Student[] stu = new Student[3];
Student st01 = new Student(101, "刘源昭", 23);
Student st02 = new Student(102, "刘原", 21);
Student st03 = new Student(103, "源昭", 22);

stu[0] = st01;
stu[1] = st02;
stu[2] = st03;
Student stu04 = new Student(104, "张三", 20);
//验证唯一性后进行操作
boolean flag = contains(stu, stu04.getId());
//如果存在则提示
if (flag) {
System.out.println("学生ID已存在!");
} else {
//不存在在进行判断数组初始是否满,满了则创建新数组;没有满则直接添加
int count = getCounts(stu);

if (count == stu.length) {
//创建新数组
Student[] newArr = creatNewArr(stu);
//添加学生信息
newArr[count] = stu04;
//打印数组
printArr(newArr);

} else {

stu[count] = stu04;
printArr(stu);
}
}
// 要求3:通过id删除学生信息,如果存在,则删除,如果不存在,则提示删除失败。
System.out.println("删除后的学生数据");
int index = getIndex(stu, 102);
if (index >= 0) {
//表示存在
stu[index] = null;
printArr(stu);
} else {
System.out.println("索引不存在,删除失败!");
}
//要求5:查询数组id为102”的学生,如果存在,则将他的年龄+1岁
int id = getIndex(stu, 103);
if (id >= 0) {
int newAge = stu[id].getAge() + 1;
stu[id].setAge(newAge);
System.out.println("更改完后:");
printArr(stu);
} else {
System.out.println("学生不存在!");
}

}

//判断唯一性
public static boolean contains(Student[] stu, int id) {
for (int i = 0; i < stu.length; i++) {
Student s = stu[i];
if (s != null) {
int sid = stu[i].getId();
if (sid == id) {
return true;
}
}

}
return false;
}

//判断数组中元素个数
public static int getCounts(Student[] stu) {
int count = 0;
for (int i = 0; i < stu.length; i++) {
if (stu[i] != null) {
count++;
}
}
return count;
}

//创建新数组
public static Student[] creatNewArr(Student[] stu) {
Student[] newArr = new Student[stu.length + 1];
for (int i = 0; i < stu.length; i++) {
newArr[i] = stu[i];
}
return newArr;
}

//打印数组
public static void printArr(Student[] arr) {
for (int i = 0; i < arr.length; i++) {
if (arr[i] != null) {
System.out.println("学号:" + arr[i].getId() + " 姓名:" + arr[i].getName() +
" 年龄:" + arr[i].getAge());
}

}
}

//获取索引值
public static int getIndex(Student[] arr, int id) {
for (int i = 0; i < arr.length; i++) {
if ((arr[i] != null) && (arr[i].getId() == id)) {
return i;
}
}
return -1;
}

学号:101 姓名:刘源昭 年龄:23
学号:102 姓名:刘原 年龄:21
学号:103 姓名:源昭 年龄:22
学号:104 姓名:张三 年龄:20
删除后的学生数据
学号:101 姓名:刘源昭 年龄:23
学号:103 姓名:源昭 年龄:22
更改完后:
学号:101 姓名:刘源昭 年龄:23
学号:103 姓名:源昭 年龄:23