1.文字版格斗游戏
文字游戏入门1.0版
项目内容:
格斗游戏,每个游戏角色的姓名,血量,都不相同,在选定人物的时候(new对象的时候),这些信息就应该被确定下来
如:人物:隔壁老王 血量为250 姓名为:冻鱼战士 血量:360
比方说我们写的是回合制的游戏,你打我一下,我打你一下
隔壁老王举起拳头打了鸠摩智一下,造成了XX点伤害,冻鱼战士还剩下XXX点血。
冻鱼战士举起拳头打了隔壁老师一下,造成了XX点伤害,乔峰还剩下XXX点血
隔壁老王举起拳头打了鸠摩智一下,造成了XX点伤害,冻鱼战士还剩下XXX点血。
冻鱼战士举起拳头打了隔壁老师一下,造成了XX点伤害,乔峰还剩下XXX点血
最后判断谁的血量先为0,那么咱们就要做一个提示 XXX KO XXX
项目思路-功能类
我们按照例子中举例来说首先我们要知道,我们需要一个类,这个类要包含人物的名称,人物的写量,空参加全参还有成员变量的get方法还set方法,我们要知道这个类要实习什么功能呢?当游戏中的人物有攻击别人的行为的时候,我们所定义的血量传尽量,它这个血量是被打的那个人物,再通过修改局部变量实现修改的是传递的参数,从而实现被打一方掉血的功能,代码如下:
package com.itheima.test1;
import java.util.Random;
public class Role {
//角色姓名
private String name;
private int blood;
//空参
public Role() {
}
//全参
public Role(String name, int blood) {
this.name = name;
this.blood = blood;
}
//还有一个私有化的成员变量get和set
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getBlood() {
return blood;
}
public void setBlood(int blood) {
this.blood = blood;
}
//在游戏当中的人物是有攻击的行为“打别人”
//定义一个方法,用于攻击别人
//思考:谁攻击谁?
//我们在测试类创建对象的时候,肯定是写一个Role r1 =new Role();
//我们肯定还要创建第二个角色对象,在攻击的时候我们应该去用r1去攻击r2
//此时我们就要用r1去调用一个攻击的方法,让后把r2给传递进去,所以说通过这个方法我们从语法
//中来讲,方法的调用者去攻击参数
//r1.攻击(r2)
//方法调用攻击参数,参数里面是挨揍的那个人
public void attack(Role role){
//计算造成的伤害1—20
Random r = new Random();
int hurt = r.nextInt(20)+1;
int remainBlood =role.getBlood()-hurt;//剩余血量
//对剩余血量做一个判断,如果为负数的情况就修改为0
remainBlood = remainBlood<0?0:remainBlood;
//修改一下挨揍人的血量
role.setBlood(remainBlood);
//this就是表示方法的调用者
System.out.println(this.getName()+"举起拳头,打了"+role.getName()+"一下,"+
"造成了"+hurt+"点伤害,"+role.getName()+"还剩下了"+remainBlood+"点血量");
}
}
项目思路-测试类
测试类的主要作用还是测试代码功能性能,我们实例化两个对象,因为我们实现的是一个回合制的小游戏,“你打他一下,它打你一下",伤害是随机生成的,我们只是说把”挨打的对象“传递过去后,功能类随机创建一个伤害值,我们用挨打的对象减去这个伤害值后,重新赋值给”挨打的对象“,还是为了修改的是局部变量我们就是普通的赋值,role.setBlood找到的是刚刚传过来的那个值,并不说成员变量,再就是我们要进行一个循环,只要有一方它是不等于0的,换句话说你只有还有一滴血也得继续战斗,只有等于0得情况下,while循环才会停止,我们就是用break跳出这个循环
package com.itheima.test1;
public class GemeTest {
public static void main(String[] args) {
//1.创建第一个角色
Role r1 = new Role("隔壁老王",100);
//2.创建第二个角色
Role r2 = new Role("冻鱼战士",100);
//3.开始格斗 回合制游戏 你打我一下,我打你一下
while(true){
//r1开始攻击r2
r1.attack(r2);
if(r2.getBlood()==0){
System.out.println(r1.getName()+"K.O了"+r2.getName());
break;
}
//r2去攻击r1
r2.attack(r1);
if(r1.getBlood()==0){
System.out.println(r2.getName()+"K.O了"+r1.getName());
break;
}
}
}
}
项目运行结果:
终究还是败给了隔壁老王啊!
隔壁老王举起拳头,打了冻鱼战士一下,造成了5点伤害,冻鱼战士还剩下了95点血量
冻鱼战士举起拳头,打了隔壁老王一下,造成了8点伤害,隔壁老王还剩下了92点血量
隔壁老王举起拳头,打了冻鱼战士一下,造成了13点伤害,冻鱼战士还剩下了82点血量
冻鱼战士举起拳头,打了隔壁老王一下,造成了7点伤害,隔壁老王还剩下了85点血量
隔壁老王举起拳头,打了冻鱼战士一下,造成了6点伤害,冻鱼战士还剩下了76点血量
冻鱼战士举起拳头,打了隔壁老王一下,造成了8点伤害,隔壁老王还剩下了77点血量
隔壁老王举起拳头,打了冻鱼战士一下,造成了17点伤害,冻鱼战士还剩下了59点血量
冻鱼战士举起拳头,打了隔壁老王一下,造成了13点伤害,隔壁老王还剩下了64点血量
隔壁老王举起拳头,打了冻鱼战士一下,造成了14点伤害,冻鱼战士还剩下了45点血量
冻鱼战士举起拳头,打了隔壁老王一下,造成了5点伤害,隔壁老王还剩下了59点血量
隔壁老王举起拳头,打了冻鱼战士一下,造成了9点伤害,冻鱼战士还剩下了36点血量
冻鱼战士举起拳头,打了隔壁老王一下,造成了14点伤害,隔壁老王还剩下了45点血量
隔壁老王举起拳头,打了冻鱼战士一下,造成了15点伤害,冻鱼战士还剩下了21点血量
冻鱼战士举起拳头,打了隔壁老王一下,造成了5点伤害,隔壁老王还剩下了40点血量
隔壁老王举起拳头,打了冻鱼战士一下,造成了17点伤害,冻鱼战士还剩下了4点血量
冻鱼战士举起拳头,打了隔壁老王一下,造成了11点伤害,隔壁老王还剩下了29点血量
隔壁老王举起拳头,打了冻鱼战士一下,造成了11点伤害,冻鱼战士还剩下了0点血量
隔壁老王K.O了冻鱼战士