当前位置: 首页 > wzjs >正文

做网站首页置顶多少钱百度指数在线查询前100

做网站首页置顶多少钱,百度指数在线查询前100,东莞网站建设设计公司,html5制作网页的详细步骤在游戏开发的世界里,策略模式是一种非常实用的设计模式,它允许我们在运行时动态地选择算法或行为。今天,我将带你走进一场星际争霸的奇幻之旅,用Java实现一个简单的星际争霸小程序,通过策略模式来模拟不同种族单位的战…

  在游戏开发的世界里,策略模式是一种非常实用的设计模式,它允许我们在运行时动态地选择算法或行为。今天,我将带你走进一场星际争霸的奇幻之旅,用Java实现一个简单的星际争霸小程序,通过策略模式来模拟不同种族单位的战斗行为。

实验背景

  星际争霸是一款经典的即时战略游戏,玩家需要控制不同种族的单位进行战斗。每个种族都有其独特的单位和战斗策略。在本次实验中,我选择了Java语言,利用策略模式来实现不同种族单位的攻击行为。通过策略模式,我们可以轻松地为单位切换不同的攻击策略,从而使代码更加灵活和可扩展。

实验设计

1. 整体思路

  为了实现星际争霸小程序,我们需要构建一个包含不同种族单位的战场。每个单位都有其生命值、攻击力和特定的攻击策略。通过策略模式,我们可以为单位动态切换攻击策略,从而模拟不同的战斗场景。

2.UML图

3. 主要模块设计

(1)攻击策略接口
  定义一个攻击策略接口 'Strategy',所有具体的攻击策略类都将实现这个接口。

package attack;import creature.Creature;public interface Strategy {void fight(Creature c);int getattack();
}

 (2)具体攻击策略类
实现具体的攻击策略类,如 'Air' 和 'Ground',分别对应空中攻击和地面攻击。

package attack;import mutalisk.Mutalisk;
import creature.Creature;public class Air implements Strategy {private int attack = 120;private int up = 200;private Mutalisk mutalisk;public Air(Mutalisk mutalisk) {this.mutalisk = mutalisk;}public void recover(int amount) {mutalisk.life += amount;}@Overridepublic void fight(Creature c) {System.out.println("空中攻击模式");System.out.println(mutalisk.name + "攻击" + c.name + " " + attack + "滴血");c.updateLife(attack);recover(up);}@Overridepublic int getattack() {return this.attack;}
}
package attack;import mutalisk.Mutalisk;
import creature.Creature;public class Ground implements Strategy {private int attack = 400;private int up_rc = 100;private Mutalisk mutalisk;public Ground(Mutalisk mutalisk) {this.mutalisk = mutalisk;}public void recover(int amount) {mutalisk.life += amount;}@Overridepublic void fight(Creature c) {System.out.println("地面攻击模式");System.out.println(mutalisk.name + "攻击" + c.name + " " + attack + "滴血");c.updateLife(attack);recover(up_rc);}@Overridepublic int getattack() {return this.attack;}
}

(3)单位抽象类
定义一个抽象类 'Creature',所有具体的单位类都将继承这个类。

package creature;import attack.Strategy;
import common.ICommon;public abstract class Creature implements ICommon, Strategy {public String name;public int life;protected int attack;public Creature(String name, int life, int attack) {this.name = name;this.life = life;this.attack = attack;}public Creature(String name, int life) {this.name = name;this.life = life;}@Overridepublic void state() {if (this.isDead()) {System.out.println("[" + this.name + "]已阵亡");} else {System.out.println("[" + this.name + "]的当前生命值为" + life + ";当前攻击值为" + attack);}}@Overridepublic abstract void fight(Creature c);public boolean isDead() {return life <= 0;}public void updateLife(int damage) {life -= damage;if (life <= 0) {life = 0;System.out.println(name + "已阵亡");}}@Overridepublic int getattack() {return 0;}
}

(4)具体单位类
实现具体的单位类,如 'Mutalisk' 和 'Terran'。

package mutalisk;import attack.Air;
import attack.Strategy;
import creature.Creature;
import zerg.Zerg;public class Mutalisk extends Zerg {private Strategy strategy;protected int attack;public Mutalisk(String name, int life) {super(name, life);}public void setStrategy(Strategy strategy) {this.strategy = strategy;this.attack = strategy.getattack();}public void fightStrategy(Creature c) {strategy.fight(c);}public void healZerg(Zerg z) {if (z.isDead()) {z.setlife(this.life);this.life = 0;System.out.println("忠诚的献身");}}
}

package terran;import creature.Creature;public class Terran extends Creature {public int up = 500;public Terran(String name, int life, int attack) {super(name, life, attack);}@Overridepublic void fight(Creature c) {System.out.println(name + "攻击" + c.name + " " + attack + "滴血");c.updateLife(attack);repair(up);}public void repair(int amount) {attack += amount;}
}

 4. 测试程序

编写测试程序,模拟星际争霸的战斗场景。

package test;import attack.Air;
import attack.Ground;
import attack.Strategy;
import creature.Creature;
import mutalisk.Mutalisk;
import terran.Terran;
import xrace.Xrace;
import zerg.Zerg;public class Test {public static void main(String[] args) {// 创建战场人员int n = 1;Terran[] terrans = new Terran[n];for (int i = 0; i < terrans.length; i++) {terrans[i] = new Terran("Terran" + (i + 1), 800, 100);}Xrace xrace = new Xrace("Xrace", 100, 8000);Zerg zerg = new Zerg("Zerg", 50000, 400);Mutalisk mutalisk = new Mutalisk("Mutalisk", 20000);// 创建两种攻击策略Air air = new Air(mutalisk);Ground ground = new Ground(mutalisk);// 战争开始前展示人员状态for (Terran terran : terrans) {terran.state();}xrace.state();zerg.state();mutalisk.state();// 游戏开始boolean gameEnd = false;while (!gameEnd) {// 检测Terran是否死亡boolean zergAttacked = false;for (Terran terran : terrans) {if (!terran.isDead()) {zerg.fight(terran);zergAttacked = true;break;}}if (!zergAttacked && !xrace.isDead()) {zerg.fight(xrace);}for (Creature terran : terrans) {if (!terran.isDead() && !zerg.isDead()) {terran.fight(zerg);}}if (!xrace.isDead() && !zerg.isDead()) {xrace.fight(zerg);}if (zerg.isDead() && !mutalisk.isDead()) {mutalisk.healZerg(zerg);}if (!xrace.isDead() && !mutalisk.isDead()) {mutalisk.setStrategy(air);mutalisk.fightStrategy(xrace);} else if (xrace.isDead()) {for (Creature terran : terrans) {if (!terran.isDead()) {mutalisk.setStrategy(ground);mutalisk.fightStrategy(terran);break;}}}// 更新状态for (Creature terran : terrans) {terran.state();}xrace.state();zerg.state();mutalisk.state();if ((xrace.isDead() && terrans[n - 1].isDead()) || (zerg.isDead() && mutalisk.isDead())) {gameEnd = true;if (xrace.isDead()) {System.out.println(xrace.name + "已阵亡,游戏失败");}if (zerg.isDead()) {System.out.println(zerg.name + "已阵亡,游戏胜利");}System.out.println("游戏结束!");}}}
}

实现效果

  通过调试和验证,星际争霸小程序成功实现!程序能够模拟不同种族单位的战斗行为,包括空中攻击和地面攻击。每个单位都可以动态切换攻击策略,从而适应不同的战斗场景。整个程序运行流畅,战斗逻辑清晰,状态更新及时。

战斗场景模拟

策略模式验证

总结

1. 策略模式的魅力:通过策略模式,我们可以轻松地为单位切换不同的攻击策略,从而使代码更加灵活和可扩展。
2. 面向对象编程的优势:利用Java的面向对象特性,我们可以将不同种族单位的行为封装在各自的类中,从而使代码更加模块化和易于维护。
3. 编程技巧的提升:通过实现这个小程序,我进一步掌握了Java的接口、抽象类和多态等概念,提升了编程技巧。
4. 游戏开发的乐趣:通过模拟星际争霸的战斗场景,我体验到了游戏开发的乐趣,激发了我对游戏开发的进一步学习兴趣。

结语

  通过这次实验,我不仅在技术上有了新的突破,更对游戏开发充满了兴趣。策略模式虽然简单,但它在游戏开发中有着广泛的应用。如果你对Java编程或游戏开发感兴趣,欢迎一起交流探讨!让我们在技术的道路上共同进步,继续探索更多神奇的魔法!✨

http://www.dtcms.com/wzjs/180804.html

相关文章:

  • 旅游商业网站策划书怎样制作网页设计
  • 地图网站抓取app拉新一手渠道商
  • 防制网站怎么做新闻头条今日要闻10条
  • 2017设计工作室做网站网站推广 方法
  • 海外营销网站建设百度知道个人中心
  • 网站开发最快框架电脑优化大师有用吗
  • 用thinkcmf做的网站系统优化软件哪个好
  • wordpress 网站静态注册域名费用一般多少钱
  • 银川做网站建设网络营销的应用研究论文
  • 东莞微信网站建设怎样外链怎么打开
  • 网站客户服务方案广东深圳龙华区
  • 网站怎么推广怎么做北京如何优化搜索引擎
  • 招远网站建设价格软文广告的案例
  • php做网站主要怎么布局百度极速版下载安装最新版
  • dede网站模板上海网站设计公司
  • 网站内如何做内部链接天津seo渠道代理
  • 做h5动画的素材网站百度信息流怎么收费
  • 提供虚拟主机服务的网站好用的网站推荐
  • 湖州房产网站建设河南it渠道网
  • 聊城做网站的公司价格谷歌商店安卓版下载
  • 简单asp网站源码百度竞价推广联系方式
  • 绵阳网站建设 小程序百度提交入口网站网址
  • 导航网站系统百度普通下载
  • 做类似淘宝一样的网站seo软件安卓版
  • 神州网站制作恶意点击竞价时用的什么软件
  • 政府网站建设联系电话四川seo推广
  • 百度网站URL提交入口nba西部排名
  • 辽宁省营商建设监督局网站百度爱采购服务商查询
  • 网站运营托管推广自己的网站
  • 网站建设导航栏什么叫百度竞价推广