java做RPG小游戏

题目

java课设,一个游戏中有多种角色(Character),例如:国王(King)、皇后(Queen)、骑士(Knight)、老怪(Troll)。
角色之间可能要发生战斗(fight),每场战斗都是一个角色与另一角色之间 的 一 对 一 战 斗 。 每 个 角 色 都 有 自 己 的 生 命 值 (hitPoint) 、 魔法值(magicPoint)、攻击力值(damage)和防御力值(defense)。每种角色都有一种武器进行攻击(fight);在程序运行中,可以动态修改角色的武器(setWeaponBehavior)。
每种角色都有一种魔法对自己或者其他角色施(performMagic);可以动态改变拥有的魔法(setMagicBehavior)
在这里插入图片描述在这里插入图片描述

效果

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

部分代码

角色抽象类

// An highlighted block
/**
* 这是文档注释
* @author 张光远
* @version 创建时间:2020年6月14日 下午2:33:38
*/
package zhangguangyuan5377.characters;import zhangguangyuan5377.behavior.*;// TODO: Auto-generated Javadoc
/*** The Class Characters.*/
public abstract class Characters {/** The Id. *///类的实现private int Id;/** The name. */private String name;/** The hitpoint. */private int hitpoint;//生命值/** The magicpoint. */private int magicpoint;//魔法值/** The damage. */private int damage;//攻击力值/** The defense. */private int defense;//防御力值/** The point. */private int point[]=new int[4];//记录角色自身各项值,切换武器时用以恢复初始值/** The weapon. */protected WeaponBehavior weapon;//武器/** The magic. */protected MagicBehavior magic;//魔法/** The skill. */protected String skill[]=new String[3];//平a技能,武器技能,魔法技能/** The feature. */protected String feature;/*** Instantiates a new characters.*/public Characters() {this.Id=0;this.name="未命名";hitpoint=800;magicpoint=200;damage=80;defense=15;point[0]= hitpoint;point[1]=magicpoint;point[2]=damage;point[3]=defense;}/*** Instantiates a new characters.** @param name the name*/public Characters(String name) {this();this.name=name;/*hitpoint=800;magicpoint=200;damage=80;defense=15;*/}/*** Fight.** @param c the c* @param choice the choice* @return the int*/public int fight(Characters c,boolean choice) {//完成本角色攻击角色 c 的操作		int hurt=0;if(choice) {hurt=weapon.useWeapon(this.getDamage(),c);}else {hurt=-this.getPoint()[2]+c.getDefense()*2;c.setHitpoint(hurt);}if(c.getHitpoint()<=0) {return 1;//游戏胜利}else if(this.getHitpoint()<=0) {return 2;//敌方胜利}elsereturn 0;//游戏未结束}/*** Perform magic.** @param c the c* @param e the e* @return the int*/public int performMagic(Characters c,Characters e) {//if(getMagicpoint()>=50) {return magic.useMagic(c,e);
//			setMagicpoint(-50);
//		}
//		else
//			System.out.println("magicpoint is not enough");}/*** Sets the weapon behavior.** @param w the new weapon behavior*/public void setWeaponBehavior(WeaponBehavior w) {this.weapon=w;this.skill[1]=weapon.getSkill();rePoint();//恢复角色无武器状态值//int a[]=getPoint();setDamage((int)(w.getAt()*getDamage()));setDefense((int)(w.getDe()*getDefense()));/*int t = 0;boolean wea[]=new boolean[4];wea[0]=w instanceof KnifeBehavior;wea[2]=w instanceof AxeBehavior;wea[1]=w instanceof BowAndArrowBehavior;wea[3]=w instanceof SwordBehavior;for(int i=0;i<4;i++) {if(wea[i]) {t=i;break;}}double da = 0,de = 0;switch(t) {case 0:da=0.1;de=0.5;break;case 1:da=0.4;de=-0.1;break;case 2:da=0.3;de=0;break;case 3:da=0.2;de=0.25;break;default:System.out.println("error");}da*=getDamage();de*=getDefense();setDamage((int)da);setDefense((int)de);*/}//改变武器/*** Sets the magic behavior.** @param m the new magic behavior*/public void setMagicBehavior(MagicBehavior m) {this.magic=m;/*int t = 0;boolean wea[]=new boolean[2];wea[0]=m instanceof HealBehavior;wea[1]=m instanceof InvisibleBehavior;for(int i=0;i<2;i++) {if(wea[i]) {t=i;break;}}//double ta = 0;switch(t) {case 0:setHitpoint((int)(0.1*hitpoint));//子类能否看见break;case 1:setDamage((int)(0.1*damage));break;default:System.out.println("error");}setMagicpoint(-50);*/}//改变魔法/*** Gets the id.** @return the id*/public int getId() {return Id;}/*** Gets the name.** @return the name*/public String getName() {return name;}/*** Display.*/public abstract void display();/*** Gets the hitpoint.** @return the hitpoint*/public int getHitpoint() {return hitpoint;}/*** Gets the magicpoint.** @return the magicpoint*/public int getMagicpoint() {return magicpoint;}/*** Gets the damage.** @return the damage*/public int getDamage() {return damage;}/*** Gets the defense.** @return the defense*/public int getDefense() {return defense;}/*** Gets the skill.** @return the skill*/public String[] getSkill(){return skill;}/*** Gets the point.** @return the point*/public int[] getPoint() {int a[]=new int[4];System.arraycopy(point, 0, a, 0, 4);return a;}/*** Gets the feature.** @return the feature*/public String getFeature() {return feature;}/*** Sets the id.** @param id the new id*///能不能用protectedpublic void setId(int id) {this.Id=id;}/*** Sets the name.** @param name the new name*/public void setName(String name) {this.name=name;}/*** Sets the hitpoint.** @param value the new hitpoint*/public void setHitpoint(int value) {hitpoint+=value;}/*** Sets the magicpoint.** @param value the new magicpoint*/public void setMagicpoint(int value) {magicpoint+=value;}/*** Sets the damage.** @param value the new damage*/public void setDamage(int value) {damage+=value;}/*** Sets the defense.** @param value the new defense*/public void setDefense(int value) {defense+=value;}/*** Re point.*/public void rePoint() {//this.hitpoint=point[0];//this.magicpoint=point[1];this.damage=point[2];this.defense=point[3];}
}

具体英雄类
下面展示一些 内联代码片

// A code block
var foo = 'bar';
// An highlighted block
/*** */
package zhangguangyuan5377.characters;// TODO: Auto-generated Javadoc
/*** The Class King.*/
public class King extends Characters {/*** Instantiates a new king.** @param name the name*/public King(String name) {this();setName(name);// TODO Auto-generated constructor stub//this.hipoint=0;/*setHitpoint(50);setMagicpoint(100);setDamage(0);setDefense(3);*/}/*** Instantiates a new king.*/public King() {// TODO Auto-generated constructor stub//setId(1);setHitpoint(50);setMagicpoint(100);setDamage(0);setDefense(3);this.skill[0]="王之圣裁";this.feature="末代皇帝,一声令下,群臣应之";}/*** Display.*/@Overridepublic void display() {// TODO Auto-generated method stubSystem.out.println("This is King showtime!");}}

武器接口

// An highlighted block
/*** */
package zhangguangyuan5377.behavior;import zhangguangyuan5377.characters.Characters;// TODO: Auto-generated Javadoc
/*** The Interface WeaponBehavior.*/
public interface WeaponBehavior {/*** Use weapon.** @param damage the damage* @param enemy the enemy* @return the int*/public int useWeapon(int damage,Characters enemy);/*** Gets the at.** @return the at*/public double getAt();/*** Gets the de.** @return the de*/public double getDe();/*** Gets the skill.** @return the skill*/public String getSkill();
}

武器类

// An highlighted block
/*** */
package zhangguangyuan5377.behavior;import zhangguangyuan5377.characters.Characters;// TODO: Auto-generated Javadoc
/*** The Class SwordBehavior.*/
public class SwordBehavior implements WeaponBehavior {/** The id. */private int id=4;/** The at. */private double at=0.2;/** The de. */private double de=0.25;/** The skill. */private String skill="一剑化三清";/*** Use weapon.** @param damage the damage* @param enemy the enemy* @return the int*/@Overridepublic int useWeapon(int damage,Characters enemy) {// TODO Auto-generated method stubint a=-damage+enemy.getDefense();enemy.setHitpoint(a);return a;}/*** Gets the at.** @return the at*/@Overridepublic double getAt() {// TODO Auto-generated method stubreturn at;}/*** Gets the de.** @return the de*/@Overridepublic double getDe() {// TODO Auto-generated method stubreturn de;}/*** Gets the skill.** @return the skill*/public String getSkill() {return skill;}/*** Gets the id.** @return the id*/public int getId() {return id;}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/353112.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【Java游戏合集】手把手教你制作游戏

家人们&#xff0c;今天我们来看一下学Java必练的10款游戏项目&#xff01; 大家都知道学习编程必须要做的就是敲代码和做项目练手了&#xff0c;那项目有难有易&#xff0c;很多小伙伴不知道从哪里找项目来练习&#xff0c;今日我们来看一下初级项目中都有哪些能让我们来练手…

Java桌面游戏巡礼——国外Java游戏合集(第一回)

1、 Virus Effect 这是一个2D的Java横板射击游戏&#xff0c;作者在其中融入了很多FPS&#xff08;First Personal Shooting Game&#xff09;要素&#xff0c;角色能够进行换枪、调整射击角度、装弹拆弹等仿真操作&#xff0c;并于游戏内设置有教学关卡&#xff0c;即使是从未…

java保姆级教程—— 1.什么是游戏

引言&#xff1a; Java保姆级教程是笔者在暑假时&#xff0c;为学弟们准备的java游戏教程&#xff0c;今天整理了一下&#xff0c;共享给网友们&#xff0c;笔者也是学生&#xff0c;若有大神发现文中存在误区&#xff0c;还请私信笔者。注&#xff1a;java游戏保姆级教程&…

Java游戏开发——对对碰

游戏介绍&#xff1a; 对对碰游戏在n*n的游戏池中进行&#xff0c;每个格子中有一个图案。鼠标连续选中两个横排或竖排相邻的图案&#xff0c;它们的位置会互换&#xff0c;互换后如果横排或者竖排有3个以上相同的图像&#xff0c;则可以消去该图像&#xff0c;并得分。 游戏…

连连看游戏的设计与实现——基于JAVA语言的小游戏

说明&#xff1a;本篇博客主要讲述练练看游戏的设计与实现。前半部分为分析与类和属性的说明&#xff0c;后半部分为程序的实现与程序代码。第一次写小游戏&#xff0c;仍存在许多问题&#xff0c;也借鉴了CSDN前辈的代码想法&#xff0c;如有不妥&#xff0c;还望多批评指正。…

Java写的第一个小游戏(续)

优化代码(数据维护): 注:此为小游戏最终版本 代码做到最优最简 基于之前发表的文章详情可见 点击查看前文 回顾之前的代码我们可以看到很多的固定常量值或是属性我们都会大量的重复使用,这并不符合我们代码简洁易懂的特点 所以我们可以把重复出现的量或是属性或是方法使用面向…

java小游戏超级玛丽:06.第二关的设计

第二关预览图&#xff1a; 判断是否为第二关 if (sort 2) {} 砖块位置图&#xff1a; 砖块坐标&#xff1a; A(240,390) B(270,360) C(300,330) D(270,360) E(300,360) F(330,390) G(360,360) H(390,390) I(420,390) f1(240,300) 空1&#xff08;420&#xff0c;270&a…

java小游戏超级玛丽:07.第三关的设计

第三关预览图 砖块位置图&#xff1a; 砖块坐标&#xff1a; A(290,390) B(320,360) C(350,330) D(320,390) E(350,480) F(350,390) G(380,300) H(380,330) I(380,360) J(380,390) K(410,270) L(410,300) M(410,330) N(410,360) O(410,390) P(60,390) Q(90,360) R(90…

【Java十大热门游戏合集】Java经典游戏项目

家人们&#xff0c;今天我们来看一下学Java必练的10款游戏项目&#xff01; 大家都知道学习编程必须要做的就是敲代码和做项目练手了&#xff0c;那项目有难有易&#xff0c;很多小伙伴不知道从哪里找项目来练习&#xff0c;今日我们来看一下初级项目中都有哪些能让我们来练手…

Java游戏开发——开心农场

游戏介绍&#xff1a; “开心农场”是一款以种植为主的社交游戏。用户可以扮演一个农场的农场主&#xff0c;在自己的农场里开垦土地&#xff0c;种植各种水果蔬菜。本次开发了一个“开心农场”游戏&#xff0c;运行程序&#xff0c;效果如下图所示。鼠标先选定指定土地&#…

JAVA 实现《超级玛丽》游戏

前言 在你的童年记忆里&#xff0c;是否有一个蹦跳、顶蘑菇的小人&#xff1f; 如果你回忆起了它&#xff0c;你定然会觉得现在它幼稚、无聊&#xff0c;画面不漂亮&#xff0c;游戏不精彩……但请你记住&#xff1a;这才是真正的游戏&#xff0c;它给了你无限的欢乐&#xf…

Java游戏开发——连连看

游戏介绍&#xff1a; “连连看”是一款来源于我国台湾的桌面小游戏&#xff0c;主要考验的是玩家们的眼力&#xff0c;在有限的时间内&#xff0c;只要能把所有能连接的相同图案&#xff0c;两个两个的找出来&#xff0c;每找到一对&#xff0c;它们就会自动消失&#xff0c;只…

java小游戏超级玛丽:05.第一关的设计

第一关效果图&#xff1a; 目录 判断是否为第一关 绘制第一关的场景 绘制地面&#xff08;for循环&#xff09; 绘制砖块 绘制水管 生成Obstatic列表的getter方法 绘制障碍物 判断是否为第一关 if(sort 1){ } 在上面有定义变量sort 绘制第一关的场景 绘制地面&…

程序员从0到收获心仪offer,我靠训练营实现了180度逆袭!

我相信&#xff0c;在未来的职场中&#xff0c;我也能通过这段时间养成的学习习惯和生活习惯让自己一步步成为更好的自己&#xff0c;以自己为荣 我在大学里主修计算机科学与技术&#xff0c;一个普通的院校&#xff0c;一个算是常见的专业&#xff0c;我知道我的学历和一些其他…

10 【组件编码流程 组件自定义事件 全局事件总线】

1.组件编码流程 组件化编码流程&#xff1a; ​ (1).拆分静态组件&#xff1a;组件要按照功能点拆分&#xff0c;命名不要与html元素冲突。 ​ (2).实现动态组件&#xff1a;考虑好数据的存放位置&#xff0c;数据是一个组件在用&#xff0c;还是一些组件在用&#xff1a; ​ 1…

QQ互联地址 中注册的QQ开发者 在哪里提交审核?

QQ互联地址&#xff1a;https://connect.qq.com 废话不说&#xff0c;直接上图&#xff1a; 有时点击后没反应&#xff0c;耐心 多试几次&#xff01; 然后 就会看到 提交审核的表单了&#xff0c; 有没发现 这个提交审核的 链接藏的有点深&#xff01;&#xff01; 哈哈哈&am…

QQ小程序打开指定QQ群

官方提供了接口&#xff1a; <view class"footer"><button open-type "openGroupProfile" class"footer-tips" group-id"620033746">v1.0 by&#xff1a;IWH <text>加群玩&#xff01;</text></button&g…

打开图片链接直接打开QQ对话框

<a href"tencent://message/?uin7530****&SiteQQ交谈&Menuyes" target"blank"> <img border"0" src"http://wpa.qq.com/pa?p1:7530*****:7" alt"有事Q我吧" width"71" height"2…

QQ的分享

使用的sdk版本&#xff1a; V2.2.2&#xff08;发布日期&#xff1a;2014.3.17&#xff09; 弱弱的提醒下&#xff1a; 1.配置清单等环境搭建&#xff0c;这里就不多说了&#xff0c;可以去看看我的另外一篇博客&#xff0c;QQ的第三方登录&#xff0c;那里有介绍。 2.这里集…

QQ圈子:从哪里来,到哪里去

2019独角兽企业重金招聘Python工程师标准>>> 摆脱顿巴数的魔咒 社 交是人类的一个最基本的需求。但是&#xff0c;自然给我们人类的大脑&#xff0c;只能让我们维系150-200个左右的好友。超出这个范围&#xff0c;就会有好友慢慢地被淡忘。很多社会 群体的平均大小是…