文字版格斗游(回合制)
需求:格斗游戏,每个游戏角色的姓名,血量都不同,在选定人物的时候(new对象的时候),这些信息就应该被确定下来。
思路:
- 创建一个Role(角色)类,分别定义名字,血量,性别,等私有变量
- 定义一个空参构造体
- 定义一个含有全部参数的构造体
- 再分别给私有变量定义set和get方法
- (1.2.3.4步是创建javabean)
- 准备工作都做完了,接下来定义一个flight(战斗)方法,在flight中要有 调用flight方法的人给敌人随机造成了多少伤害,敌人还剩多少血量,敌人血量低于0会怎样。
- 在main()方法中分别用Role创建两个角色并附上初始值
- 接下来角色调用flight方法开始战斗
- 当己方或敌方血量为则游戏结束
javabean类如下,main()在下面:
package mianXiangDuiXiang.SheJiDuiXiang.ZhongHeAnLi;
import java.util.Random;
public class Role {
private String name;
private int blood;
private String gender;
private String face;//长相随机
//face
String[] boyface = {"风流俊雅", "气宇轩昂", "相貌英俊", "五官端正", "一塌糊涂", "面目狰狞"};
String[] girlface = {"美艳绝伦", "沉鱼落雁", "亭亭玉立", "身材姣好", "相貌平平", "惨不忍睹"};
//attach 攻击描述
String[] attacks_desc = {
"%s使出了一招【直捣黄龙】,蹲到对方胯下,一爪向%s的命根抓去",
"%s使出了一招【黯然幽魂掌】,大臂一挥,一掌向%s的脸坝子拍去"
};
//injured 受伤的描述
String[] injured_desc = {
"结果%s退了半步,毫发无伤",
"结果给%s打的退了几步",
"结果%s痛的哇哇大叫",
"结果%s像烂泥一样倒下"
};
//空参
public Role() {
}
//全参
public Role(String name, int blood, String gender) {
this.name = name;
this.blood = blood;
this.gender = gender;
//this.face = face; 开局随机长相所以用this.facehi直接赋值固定长相,直接调用setFace
setFace(gender);
}
//set 和 get 方法 先赋值再返回
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setBlood(int blood) {
this.blood = blood;
}
public int getBlood() {
return blood;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getGender() {
return gender;
}
public void setFace(String gender) {
Random r = new Random();
if (gender == "男") {
int x = r.nextInt(boyface.length);
this.face = boyface[x];
} else if (gender == "女") {
int y = r.nextInt(girlface.length);
this.face = girlface[y];
} else
System.out.println("卧槽,人妖,run!!!");
}
public String getFace() {
return face;
}
//定义一个方法用于攻击别人
//思考:谁攻击谁
//Role r1 = new Role();
//Role r2 = new Role();
//r1.攻击(r2);
public void flight(Role role) {
//使出一个攻击的效果
Random r = new Random();
int indexA = r.nextInt(attacks_desc.length);
String KungFu = attacks_desc[indexA];
System.out.printf(KungFu, this.getName(), role.getName());
//this表示方法的调用者
//用随机数编写造成了多少血量
int hurt = r.nextInt(11) + 20; //20-30
int remainBlood = role.getBlood() - hurt;
//对剩余血量进行验证,如果是负数就修改为0
remainBlood = remainBlood < 0 ? 0 : remainBlood;
//修改一下挨揍人的血量
role.setBlood(remainBlood);
//受伤描述
//如果血量>90 就采用0索引
// 60 -- 90 就采用1索引
// 30 -- 60 就采用2索引
// 0 -- 30 3索引
if (remainBlood > 90) {
System.out.printf(injured_desc[0], role.getName());
System.out.println(); //println本身就有换行
} else if (remainBlood > 60) {
System.out.printf(injured_desc[1], role.getName());
System.out.println();
} else if (remainBlood > 30) {
System.out.printf(injured_desc[2], role.getName());
System.out.println();
} else {
System.out.printf(injured_desc[3], role.getName());
System.out.println();
}
/*
String ShouShang = injured_desc[indexJ];
System.out.printf(ShouShang,role.getName());*/
}
}
主方法:
package mianXiangDuiXiang.SheJiDuiXiang.ZhongHeAnLi;
public class RoleTest {
public static void main(String[] args) {
//创建第一个角色
Role r1 = new Role("奥特曼",100,"男");
//创建第二个角色
Role r2 = new Role("小可爱",100,"女");
//开始战斗 回合制游戏
while (true){
//1.r1开始攻击r2
r1.flight(r2);
//判断r2还剩多少血量 如果r2血量变为0,游戏停止
if(r2.getBlood() == 0){
System.out.println(r1.getName()+"k.0"+r2.getName());
break;
}
//r2开始攻击r1
r2.flight(r1);
if(r1.getBlood()==0){
System.out.println(r2.getName()+"k.o"+r1.getName());
break;
}
}
}
}
对象数组练习
对象数组1:
定义数组存储3个商品对象。
商品的属性:商品的id,名字,价格,库存
创建三个商品对象,并把商品对象存入到数组当中
思路:首相窗创建Goods的javabean类,再去main()里创建数组存放商品
package mianXiangDuiXiang.SheJiDuiXiang.ZhongHeAnLi;
//创建一个Goods的javabean
public class Goods {
private String id;
private String name;
private double price;
private int stock;
public Goods() {
}
public Goods(String id, String name, double price, int stock) {
this.id = id;
this.name = name;
this.price = price;
this.stock = stock;
}
/**
* 获取
* @return id
*/
public String getId() {
return id;
}
/**
* 设置
* @param id
*/
public void setId(String id) {
this.id = id;
}
/**
* 获取
* @return name
*/
public String getName() {
return name;
}
/**
* 设置
* @param name
*/
public void setName(String name) {
this.name = name;
}
/**
* 获取
* @return price
*/
public double getPrice() {
return price;
}
/**
* 设置
* @param price
*/
public void setPrice(double price) {
this.price = price;
}
/**
* 获取
* @return stock
*/
public int getStock() {
return stock;
}
/**
* 设置
* @param stock
*/
public void setStock(int stock) {
this.stock = stock;
}
}
package mianXiangDuiXiang.SheJiDuiXiang.ZhongHeAnLi;
public class GoodsTest {
public static void main(String[] args){
//int[] arr = new int[3]; int类型的数组只能放整形的数
//1.创建数组
Goods[] arr = new Goods[3];//装商品的数组,类型就得是定义好的Goods类
//2.创建三个商品对象 ctrl+p 可以看形参顺序
Goods g1 = new Goods("001","苹果10",3999,10000);
Goods g2 = new Goods("002","苹果11",4999,1000);
Goods g3 = new Goods("003","苹果12",6999,100);
//将商品对象存入到数组中
arr[0] = g1;
arr[1] = g2;
arr[2] = g3;
//遍历数组,看是否存进去了
for (int i = 0; i < arr.length; i++) {
Goods goods = arr[i];
System.out.println(goods.getId()+","+goods.getName()+","+goods.getPrice()+","+goods.getStock());
}
}
}
对象数组2(加大难度):
需求:
定义数组存储3部汽车对象。
汽车的属性:品牌,价格,颜色。
创建三个汽车对象,数据通过键盘录入而来,并把数据存入到数组当中。
创建Cars的javabean:
package mianXiangDuiXiang.SheJiDuiXiang.ZhongHeAnLi;
public class Cars {
//1.先定义Cars的私有变量
private String band;
private double price;
private String color;
//2.定义空参
public Cars(){}
//3.定义全参构造器
public Cars(String band,double price,String color){
this.band = band;
this.price = price;
this.color = color;
}
//4.写set和get方法
public void setBand(String band){
this.band = band;
}
public String getBand(){
return band;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}
键盘录入:
package mianXiangDuiXiang.SheJiDuiXiang.ZhongHeAnLi;
import java.util.Scanner;
public class CarsTest {
public static void main(String[] args) {
//5.创建数组存放小汽车
Cars[] arr = new Cars[3];
//录入数据有两套体系:第一套体系
/* nextInt(); 接收整数
nextDouble(); 接收小数
next(); 接收字符串
这套体系遇到空格,遇到制表符,回车就会停止接收数据
如果你定义了两个输入语句 你在第一次输入 123空格123
则会将123赋值给第一个数 剩下的123直接赋值给第二个数不会有提示信息*/
// 第二套体系
//nextLine(); 接收字符串 同上如果输入 123 123 则会全部赋值给第一个数 包括空格
//6.new出小汽车 数据通过键盘录入而来 7.存入数组
Scanner sc = new Scanner(System.in);
for (int i = 0; i < arr.length; i++) {
Cars car = new Cars();
System.out.println("请录入汽车的品牌:");
String brand = sc.next();
car.setBand(brand);
System.out.println("请录入汽车的价格:");
Double price = sc.nextDouble();
car.setPrice(price);
System.out.println("请录入汽车的颜色·:");
String color = sc.next();
car.setColor(color);
arr[i] = car ; //将小汽车的所有数据直接装入数组
}
//遍历数组
for (int i = 0; i < arr.length; i++) {
Cars cars = arr[i];
System.out.println(cars.getBand()+","+cars.getPrice()+","+cars.getColor());
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。