package Business.PersonFile;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.geom.AffineTransform;
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.ImageIcon;
import Business.PanelManager.JMainGamePanel;
import Business.ResourceManager.ResourceManager;
import Business.WeaponBehavior.AxeWeapon;
import Business.WeaponBehavior.ChangeWeapon;
import Business.WeaponBehavior.HammerWeapon;
import Business.WeaponBehavior.KnifeWeapon;
import Business.WeaponBehavior.Weapon;
public class Knight extends Person{
/**
* 这是骑士类,确定骑士特有的属性和方法
*/
//***********************************************//
private final static int MaxXMiles = 650; //人物向右移动的最大距离
private final static int MinXMiles = 0; //人物向右移动的最大距离
private final static int MaxYMiles = 290; //人物向右移动的最大距离
private final static int MinYMiles = 130; //人物向右移动的最大距离
private final static int R = 1; //人物向右标志量
private final static int L = 0; //人物向左标志量
// private final static int weaponDistanceX = 15;
// private final static int weaponDistanceY = 30;
private static int n = 0;
private static int personNum = 2;
private static boolean isFight = false; //是否处于攻击状态
private static boolean isGethurt = false;//是否受伤
private static boolean isVictory = false;
private static int fightNum = 1;
//***********************************************//
private int direction = R; //人物移动的方向
private int action = 4; //骑士走路时加载不同的png图,action为哪个动作
private int staticstate = 0;
private static int diednum = 22;
private boolean isOver = false;
private boolean isPersonsub = false;
private int step = 0; //当人物移动4 step时,换行走的png图
private static int demonNum = 0;
private static int hurtstep = 0;
private int fullvit = 100;
private int score = 0;
private String Placestr[] = {"肮脏的森林","罪恶的沙滩","风雨魔道","沙漠之心","地狱城市","火图之地","终极烈焰"};
private String person = "c6.png"; //加载人物png图的文件名
private String personChoice = "c"; //选择那个骑士
private String weapons;
private Timer timer;
private Timer timer2;
// private Timer timer3;
//***********************************************//
private int level = 0; //骑士的等级
//***********************************************//
JMainGamePanel panel;
ChangeWeapon chWeapon;
Weapon weapon;
Demon[] demon = new Demon[15];
DemonFactory factory = new DemonFactory();
//***********************************************//
/**
* 默认构造方法
*/
public Knight() {
// TODO Auto-generated constructor stub
}
/**
* 带参构造方法(初始化)
* @param panel
*/
public Knight(JMainGamePanel panel) {
this.panel = panel;
vit = 100;
dfe = 80;
atk = 60;
PosX = 300;
PosY = 200;
chWeapon = new KnifeWeapon(panel,direction,PosX,PosY);
timer = new Timer();
timer2 = new Timer();
timer2.schedule(new TimerTask() {
@Override
public void run() {
StateRun();
}
},100,200);
}
/**
* 人物右移
*/
public void MoveRight(int x){
if(!isOver){
if (PosX < MaxXMiles)
PosX += x;
direction = R;
actionChanged();
}
}
/**
* 人物左移
*/
public void MoveLeft(int x){
if(!isOver){
if (PosX > MinXMiles)
PosX -= x;
direction = L;
actionChanged();
}
}
/**
* 人物上移
*/
public void MoveUp(int y){
if(!isOver){
if(PosY > MinYMiles)
PosY -= y;
actionChanged();
}
}
/**
* 人物下移
*/
public void MoveDown(int y){
if(!isOver){
if(PosY < MaxYMiles)
PosY += y;
actionChanged();
}
}
/**
* 人物移动,改变显示图片,并设置步长
*/
public void actionChanged(){
chWeapon.setXY(PosX, PosY,direction);
if (step % 4 == 0)//每移动四个像素点,更换一张走路图片
action = (action + 1) % 4+4;
step = (step+1)%4;
}
/**
* 绘制骑士
* @param g
*/
public void drawPerson(Graphics g){
if (!isFight) {
person = personChoice + action + ".png"; // 加载相应的骑士png图
}
// 调用资源管理类中的加载图片资源方法,来加载背景图片
ResourceManager imageResource = new ResourceManager();
ImageIcon icon_person = new ImageIcon();
icon_person = imageResource.GetImage(person);
//绘制骑士
if (direction == L) { //方向向左
AffineTransform transform = new AffineTransform();
Graphics2D g2 = (Graphics2D) g;
transform = flip(icon_person,PosX,PosY);
g2.drawImage(icon_person.getImage(), transform, panel);
} else {//方向向右
g.drawImage(icon_person.getImage(), PosX, PosY,
icon_person.getIconWidth(), icon_person.getIconHeight(),
panel);
}
}
/**
* 实现图像的水平翻转
* @param icon ImageIcon类对象
* @param x x坐标
* @param y y坐标
* @return AffineTransform类对象
*/
public AffineTransform flip(ImageIcon icon,int x,int y) {
Image img = icon.getImage();
AffineTransform transform = new AffineTransform();
transform.scale(-1, 1);
transform.translate(-2 * img.getWidth(null) / 2,
0 * img.getHeight(null) / 2);
transform.translate((double) -x, (double) y);
return transform;
}
/**
* 绘制攻击画面
* @param g
*/
public void drawFight(Graphics g){
person = personChoice+"9.png"; //加载相应的骑士png图
//调用资源管理类中的加载图片资源方法,来加载背景图片
ResourceManager imageResource = new ResourceManager();
ImageIcon icon_person = new ImageIcon();
icon_person = imageResource.GetImage(person);
//绘制骑士
if (direction == L) {
g.drawImage(icon_person.getImage(), PosX, PosY,
icon_person.getIconWidth(), icon_person.getIconHeight(),
panel);
} else {
g.drawImage(icon_person.getImage(), PosX, PosY,
icon_person.getIconWidth(), icon_person.getIconHeight(),
panel);
}
}
/**
* 是否受伤
*/
public void getHurt() {
for(int i = 0; i < demonNum;i++){
int x = demon[i].getPosX();
int y = demon[i].getPosY();
hurtstep = (hurtstep + 1)% 10;
if(hurtstep == 9)
subVit();
ResourceManager imageResource = new ResourceManager();
int width = imageResource.GetImage(person).getIconWidth();
int height = imageResource.GetImage(person).getIconHeight();
if (direction == R) {
if (PosY - y < 4
&& PosY - y > -10
&& (x < PosX && PosX < x + width - 7 || PosX < x
&& x < PosX + width - 7)) {
isGethurt = true;
}
} else {
if (PosY - y < 4
&& PosY - y > -10
&& (x + 50 < PosX && PosX < x + 150 + width - 7 || PosX < x + 50
&& x + 150 < PosX + width - 7)) {
isGethurt = true;
}
}
}
}
/**
* 绘制受伤状态的png图
*
* @param g
*/
public void drawGetHurt(Graphics g) {
person = "c22.png"; // 受伤状态的png图名称
// 调用资源管理类中的加载图片资源方法,来加载背景图片
ResourceManager imageResource = new ResourceManager();
ImageIcon icon_person = new ImageIcon();
icon_person = imageResource.GetImage(person);
// 绘制受伤的骑士
if (direction == L) { //方向向左,翻转图片
AffineTransform transform = new AffineTransform();
Graphics2D g2 = (Graphics2D) g;
transform = flip(icon_person, PosX, PosY);
g2.drawImage(icon_person.getImage(), transform, panel);
} else {//方向向右
g.drawImage(icon_person.getImage(), PosX, PosY,
icon_person.getIconWidth(), icon_person.getIconHeight(),
panel);
}
}
/**
* 绘制死亡状态图
* @param g
*/
public void drawDied(Graphics g) {
diednum++;
if(diednum > 25){
diednum = 25;
}
person = personChoice + diednum + ".png"; // 加载相应的骑士png图
// 调用资源管理类中的加载图片资源方法,来加载背景图片
ResourceManager imageResource
没有合适的资源?快使用搜索试试~ 我知道了~
java版RPG游戏源代码
共652个文件
png:280个
html:181个
class:71个
5星 · 超过95%的资源 需积分: 38 307 下载量 21 浏览量
2015-11-06
00:01:22
上传
评论 20
收藏 18.04MB ZIP 举报
温馨提示
Java版RPG游戏源代码,有良好的界面设计!
资源推荐
资源详情
资源评论
收起资源包目录
java版RPG游戏源代码 (652个子文件)
Knight.class 13KB
RunPanel.class 10KB
JMainGamePanel.class 9KB
showinteligence.class 8KB
Demon.class 6KB
JMartialArtsTrainPanel.class 5KB
JSkillTrainingPanel.class 5KB
Weapon.class 5KB
JSettingFrm.class 4KB
JHelpFrm.class 4KB
JMainMenuFrm.class 3KB
JGameDescriptionPanel.class 3KB
InputManager.class 3KB
GameManager.class 2KB
WriteData.class 2KB
RunKeyDown.class 2KB
ReadData.class 2KB
RunPanel$1.class 2KB
LoadMusic.class 2KB
JPlayGameFrm.class 2KB
WelcomFrm.class 2KB
JMartialArtsTrainPanel$2.class 2KB
PlayerName.class 2KB
JShoppingFrm.class 2KB
JMapFrm.class 2KB
CommonFrm.class 2KB
WelcomFrm$BackgroundPanel.class 2KB
ReadFile.class 2KB
JGameDescriptionPanel$1.class 2KB
Person.class 2KB
Knight$2.class 2KB
carelistenner.class 2KB
JGameDescriptionFrm.class 2KB
HammerWeapon.class 1KB
KnifeWeapon.class 1KB
AxeWeapon.class 1KB
FileManager.class 1KB
RunPanel$3.class 1KB
JMainMenuFrm$BackgroundPanel.class 1KB
LoadImages.class 1KB
showinteligence$1.class 1KB
SoundManager.class 1KB
RunPanel$2.class 1KB
JIntelligenceTrainFrm.class 1KB
SettingFrmManager.class 1KB
JPlayGameFrm$MyWindowAdapter.class 1KB
DemonFactory.class 1KB
JMartialArtsTrainPanel$1.class 1KB
JMartialArtsTrainFrm.class 985B
JLaborTrainFrm.class 984B
JGameDescriptionFrm$Input.class 960B
JMainGamePanel$2.class 942B
JMainGamePanel$1.class 936B
JSkillTrainingFrm.class 917B
WelcomFrm$Input.class 833B
GameCore.class 795B
ResourceManager.class 763B
GameManager$1.class 728B
WelcomFrm$1.class 704B
CommonFrm$1.class 704B
JSettingFrm$BackgroundPanel.class 639B
Knight$1.class 626B
Demon$1.class 618B
Player.class 388B
ChangeWeapon.class 313B
SaveCurrentGame.class 306B
SaveManager.class 294B
Draw.class 180B
package-info.class 116B
package-info.class 114B
package-info.class 108B
.classpath 281B
stylesheet.css 1KB
Thumbs.db 127KB
Thumbs.db 127KB
Thumbs.db 127KB
maprun.gif 311KB
f.gif 5KB
b1.gif 4KB
a2.gif 4KB
d1.gif 4KB
c2.gif 4KB
c1.gif 4KB
d2.gif 4KB
b2.gif 3KB
a1.gif 3KB
pan.gif 3KB
xianjing.gif 2KB
zhangai.gif 2KB
sun.gif 2KB
jian.gif 714B
shitou.gif 399B
jinbi.gif 261B
inherit.gif 57B
serialized-form.html 43KB
Knight.html 40KB
RunPanel.html 34KB
JMainGamePanel.html 28KB
showinteligence.html 25KB
JSkillTrainingPanel.html 25KB
共 652 条
- 1
- 2
- 3
- 4
- 5
- 6
- 7
牟尼
- 粉丝: 1422
- 资源: 17
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Semantic Color Palette 语义调色板Unity游戏开发插件资源unitypackage
- Low Poly Nature:Lush and Diverse Environments低聚自然郁郁Unity低多边形模型资源
- voc数据集是什么-我们如何使用voc数据集
- Edgar Pro-Procedural Level Generator程序关卡生成器Unity开发插件unitypackage
- 宝藏软件m3u8下载器\m3u8DL-CLI
- 三次样条插值的介绍-什么是三次样条插值原理
- http的一些相关介绍-对于我们来说什么是http
- 全卷积网络基于voc2012数据集简单pytorch实现
- pycharm的一些介绍-用于更好的学习python
- 基于C++的程序设计大赛天梯赛L2答案(天梯赛)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页