「java塔防游戏地图编写」原始塔防游戏

博主:adminadmin 2023-01-03 17:42:08 756

今天给各位分享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塔防游戏地图编写和原始塔防游戏的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。