「java塔防游戏地图编写」原始塔防游戏
今天给各位分享java塔防游戏地图编写的知识,其中也会对原始塔防游戏进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、java里有什么方法可以拼接的游戏地图不依赖于源素材,也就是保存的文件连图片数据一起保存,而不只是结构
- 2、求教贴,Java桌面小游戏的地图怎么做
- 3、mindustry联机地图加载失败
- 4、求一个简单RPG游戏的代码,JAva编写的
- 5、求一款游戏 找了好久了几年前玩的一款java单机塔防游戏 开始是箭塔 可以升级时代
java里有什么方法可以拼接的游戏地图不依赖于源素材,也就是保存的文件连图片数据一起保存,而不只是结构
你这中思想不对,这样不便于维护,假如以后图片改了,数据也就变了,保存结构,然后让数据填充
求教贴,Java桌面小游戏的地图怎么做
小游戏地图一般都是各种图片的拼接,然后保存到2维数组里面
比如
//数值常量
public static final int EMPTY=0;//空地什么也没有
public static final int BRICK=1;//土墙
public static final int STONE=2;//石头
public static final int SEA=3;//海洋
public static final int GREENS=4;//草地
public static final int SNOW=5;//雪地
//对应的图片
.....
public static final Image IMG_STONE=new ImageIcon(MapValues.class.getResource("/resource/imgs/stone.png")).getImage();//石头图片
......
那么保存一副地图就可以用类似于下面的二维数组表示
002405100
145111123
132131001
使用的时候, 加载二维数组,然后把对应的图片显示在地图上就可以了.
不过这样做也存在一定的问题.
1:图片太多,对应的数字太多, 那么地图编辑起来很麻烦, 需要有强大的记忆力,和想象力
2:不能一边编辑,一边就显示出效果来, 出错后,排查麻烦. 效率太低
所以,我们还需要写点代码,做一个简单的地图编辑器,添加辅助线,擦除工具等, 这样的话, 编辑地图就非常方便了,所见即所得.并且一键可以保存为地图数据(二维数组)
学习swing的时候,写过一个简单的地图编辑器,效果图如下
为了熟悉不同的图形界面API, 游戏界面使用的不是swing,而是JavaFX
mindustry联机地图加载失败
配置不够。Mindustry是一款用Java编写的沙盒塔防游戏,该游戏联机地图加载失败是因为配置不够,最低配置是操作系统要Windows7/8/10内存为1GBRAM显卡:为AnythingwithOpenGL2.0Support存储空间。
求一个简单RPG游戏的代码,JAva编写的
package com.lxi;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Rpg {
@SuppressWarnings("unchecked")
public static void main(String[] args) throws Exception {
System.out.println("在这里输入两个人物进行PK,以英文逗号分隔: [BM,DH,MK]");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
ClassPerson c1;
ClassPerson c2;
try {
String temp = br.readLine();
String[] str = temp.split(",");
if (str.length != 2) {
throw new Exception("输入格式有误,按默认PK");
}
c1 = (ClassPerson) Class.forName("com.lxi."
+ str[0].toUpperCase());
c2 = (ClassPerson) Class.forName("com.lxi."
+ str[1].toUpperCase());
} catch (Exception e) {
// TODO Auto-generated catch block
c1 = (ClassPerson) Class.forName("com.lxi.BM");
c2 = (ClassPerson) Class.forName("com.lxi.DH");
}
try {
Person p1 = c1.newInstance();
Person p2 = c2.newInstance();
long time = System.currentTimeMillis();
long nextTime1 = (long) (time + p1.coldTime*1000); //
long nextTime2 = (long) (time + p2.coldTime*1000); //发动攻击的时间
System.out.println("---游戏开始---");
while (true) {
long currenTime = System.currentTimeMillis();
if (nextTime1 currenTime) { //时间到则发动攻击
p1.hit(p2);
nextTime1 += p1.coldTime*1000 + p1.waitTime*1000; //下次攻击时间=冷却时间+被晕眩时间
p1.waitTime = 0; //回合结束,重置被晕眩时间为0
}
if (nextTime2 currenTime) {
p2.hit(p1);
nextTime2 += p2.coldTime*1000 + p2.waitTime*1000;
p2.waitTime = 0;
}
}
} catch (ClassCastException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
package com.lxi;
import java.util.Random;
class BM extends Person {
public BM() {
val = 650;
coldTime = 1.5;
fight = 40;
chanceHit = 3;
chanceDefense = 3;
waitTime = 0;
}
int count = 0; //防御技能发动的次数
int temp = 40; //攻击力,值同fight
boolean hitFlag = false;
boolean defenseFlag = false;
Random rand = new Random();
public void hit(Person p) {
if (rand.nextInt(10) chanceHit) {
fight = fight * 2; //发动双倍攻击
hitFlag = true;
}
int hurt = p.defense(this);
p.val = p.val - hurt;
fight = temp; //还原为单倍攻击
if (p.val = 0) {
System.out.println(this.getClass().getSimpleName() + "胜出!");
System.exit(0);
}
System.out.println(this.getClass().getSimpleName() + "攻击"
+ p.getClass().getSimpleName() + ","
+ this.getClass().getSimpleName()
+ (this.hitFlag ? "发动攻击技能 " : "未发动攻击技能 ")
+ p.getClass().getSimpleName()
+ (this.defenseFlag ? "发动防御技能 " : "未发动防御技能 ")
+ this.getClass().getSimpleName() + ":" + this.val + ","
+ p.getClass().getSimpleName() + ":" + p.val);
hitFlag = false;
defenseFlag = false;
}
public int defense(Person p) {
if (rand.nextInt(10) chanceDefense) {
if (count != 0) {
p.val = p.val - p.fight;
count++;
defenseFlag = true;
if (p.val = 0) {
System.out.println(this.getClass().getSimpleName() + "胜出!");
System.exit(0);
}
}
}
return p.fight;
}
}
class MK extends Person {
public MK() {
val = 700;
coldTime = 2.5;
fight = 50;
chanceDefense = 6;
chanceHit = 3;
waitTime = 0;
}
boolean hitFlag = false;
boolean defenseFlag = false;
Random rand = new Random();
public void hit(Person p) {
if (rand.nextInt(10) chanceHit) {
p.waitTime = 3; //使对方晕眩3s
hitFlag = true;
}
int hurt = p.defense(this);
p.val = p.val - hurt;
if (p.val = 0) {
System.out.println(this.getClass().getSimpleName() + "胜出!");
System.exit(0);
}
System.out.println(this.getClass().getSimpleName() + "攻击"
+ p.getClass().getSimpleName() + ","
+ this.getClass().getSimpleName()
+ (this.hitFlag ? "发动攻击技能 " : "未发动攻击技能 ")
+ p.getClass().getSimpleName()
+ (this.defenseFlag ? "发动防御技能 " : "未发动防御技能 ")
+ this.getClass().getSimpleName() + ":" + this.val + ","
+ p.getClass().getSimpleName() + ":" + p.val);
hitFlag = false;
defenseFlag = false;
}
public int defense(Person p) {
if (rand.nextInt(10) chanceDefense) {
defenseFlag = true;
return p.fight / 2; //防御技能发动,伤害减半
}
return p.fight;
}
}
package com.lxi;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Random;
//三个人物的基类
abstract class Person {
int val; //生命值
double coldTime; //冷却时间
int waitTime; //晕眩时间
int fight; //攻击力
int chanceHit; //发起主动技能的概率
int chanceDefense; //发起防御技能的概率
abstract void hit(Person p); //攻击技能
abstract int defense(Person p); //防御技能,返回被伤害点数
}
class DH extends Person {
public DH() {
val = 600;
coldTime = 1.0;
fight = 30;
chanceHit = 3; //表示30%的概率
chanceDefense = 3;
waitTime = 0;
}
Random rand = new Random();
boolean hitFlag = false; //主动技能发动的标识
boolean defenseFlag = false; //防御技能发动的标识
public void hit(Person p) {
if (rand.nextInt(10) chanceHit) { //发动主动技能
int hurt = p.defense(this);
p.val = p.val - hurt;
if (p.val = 0) {
System.out.println(this.getClass().getSimpleName() + "胜出!");
System.exit(0);
}
val = val + hurt;
if (val 600)
val = 600;
hitFlag = true; //标记主动技能已经发动
} else { //进行普通攻击
int hurt = p.defense(this);
p.val = p.val - hurt;
if (p.val = 0) {
System.out.println(this.getClass().getSimpleName() + "胜出!");
System.exit(0);
}
}
System.out.println(this.getClass().getSimpleName() + "攻击"
+ p.getClass().getSimpleName() + ","
+ this.getClass().getSimpleName()
+ (this.hitFlag ? "发动攻击技能 " : "未发动攻击技能 ")
+ p.getClass().getSimpleName()
+ (this.defenseFlag ? "发动防御技能 " : "未发动防御技能 ")
+ this.getClass().getSimpleName() + ":" + this.val + ","
+ p.getClass().getSimpleName() + ":" + p.val);
hitFlag = false; //
defenseFlag = false; //重置标记,下次重用
}
public int defense(Person p) {
if (rand.nextInt(10) chanceDefense) {
defenseFlag = true; //标记防御技能已经发动
return 0;
} else {
return p.fight;
}
}
}
求一款游戏 找了好久了几年前玩的一款java单机塔防游戏 开始是箭塔 可以升级时代
好久了几年前玩的一款java单机塔防游戏是文明4
1、新塔防三国-全民塔防(神将送千充) 网页链接《新塔防三国》是一款萌系塔防手游,将三国历史上叱咤风云的人物,变化为一座座有爱的防御塔。游戏上线即送VIP15、元宝5万、银两50万,充值卡每日免费抽,最高价值1000元的充值卡,元宝天天有,一直白拿一直爽,连登送核心金将,出门推图、呆家守塔必备良药。塔防、种菜、抢夺、竞技场、积分赛,多种多样的玩法满足不同需求的玩家,无论你是喜欢策略、喜欢Pk还是喜欢休闲,都能在游戏中找到你的乐趣所在,三国武将尽数在此!江山如画,乱世情缘!
2、塔塔帝国 网页链接《塔塔帝国》是一款殿堂级3D欧美风的“英雄策略塔防”手游,是一款满足你对英雄所有想象的塔防游戏。游戏讲述来自不同地方的英雄团结作战,在领主大人您的指挥下,抵御黑暗入侵,保卫家园的冒险故事。精美酷炫的英雄外形和技能特效能给您带来王者级的塔防战斗体验。强大趣味的RPG养成系统,多维度的技能释放策略,酷炫的全屏大招能给您带来燃尽十足的战斗快感!游戏同时还拥有数十种创新玩法,如“随机关卡、无尽回廊、套装技能、地形机关、巅峰赛”等,满足你对塔防游戏的一切想象!
3、球球英雄 网页链接《球球英雄》是一款竞技塔防手游,在游戏中玩家将扮演一个球球队伍的统领,从无到有建立起自己的专属编队,来迎接前方的各种挑战。你可以通过按照自己的喜好风格去收集和升级各种球球,来发挥不同球球的属性技能,去打败不同的敌人。有趣的玩法同时考验你的脑力和运气。
关于java塔防游戏地图编写和原始塔防游戏的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。