设计一个回合制战斗系统Combat(C++)

2023-11-10

C++设计一个回合制战斗系统Combat

题目

设计和实现回合制战斗系统Combat
1. Soldier战士类

  1. Soldier的属性(protected作用域)
    最大生命 maxHP 当前生命 HP 最大体力maxSP 当前体力SP
    攻击力 damage 经验 exp 等级 level 姓名 name
    药瓶数量 drugNum

  2. Soldier的动作(public作用域)
    决策 makeDecision 攻击 attack 休息 rest 吃药 takingDrug

  3. Soldier被创建后,maxHP和HP为100,maxSP和SP为100,damage为20,exp为0, level为1,drugNum为5;

  4. 每回合Soldier通过决策(makeDecision)来决定需要发出哪一个动作(攻击attack、休息rest或吃药takingDrug,注意每回合只能做其中一个动作)。请自行设计和调整每种动作发出的必要条件,例如:生命值若低于最大值的30%该回合就吃药,体力低于最大值的50%该回合就休息,生命力和体力都充足该回合就发起攻击,等等;

  5. 攻击(attack)敌人一次,体力(SP)减少10,经验(exp)增加5。敌人的生命值(HP)减去攻击方攻击力值(damage)的大小。敌人生命值(HP)减少到0时死去,如果敌人被自己打死,获得敌人身上的所有药瓶;

  6. 经验(exp)每增加20,等级(level)就提高1级,maxHP、maxSP、damage分别增加20;Soldier, Wizard, Master升级后,当前HP,SP,MP和NP的值皆按比例(xx:MaxXX)增长,注意:不是升级后上述当前属性值就自动全满。例如:Wizard的 HP/MaxHP 50/100,升级后,HP/MaxHP调整为60/120。升级前HP:MaxHP比例为0.5,升级后MaxHP变成120,若要保持0.5的比例,HP自动调整为60。这种设定类似于魔兽争霸III。

  7. 休息(rest)一次,生命值(HP)、体力(SP)增加最大值的50%,但不要超过最大值。(例如,当前生命值是30,最大生命值是100,则吃药后的当前生命值为30+100*50%=80。)

  8. 吃药(takingDrug),如果药瓶数量为0,不能吃药。吃药一次,药瓶数量减少1,生命值(HP)增加最大值的80%,但不能超过maxHP。
    2. Wizard巫师类,从Soldier类公有继承

  9. Wizard的属性(protected作用域)
    新增的属性: 最大魔法值 maxMP 当前魔法值 MP

  10. Wizard的动作(public作用域)
    决策 makeDecision 攻击 attack 休息 rest 吃药 takingDrug
    魔法攻击wizard_attack

  11. Wizard被创建后,maxMP和MP为100 ,maxHP和HP为100,maxSP和SP为100,maxMP和MP为100,damage为20,exp为0,level为1;

  12. 每回合Wizard通过决策(makeDecision)来决定需要发出哪一个动作(攻击attack、魔法攻击wizard_attack、休息rest或吃药takingDrug,注意每回合只能做一个动作);

  13. 魔法攻击(wizard_attack):如果魔法值小于25、或体力小于10无法使用该技能。一次魔法攻击能同时攻击几个敌人,但每对付一个敌人,自己的体力(SP)减少10、魔法值减少25、经验(exp)增加5、敌人的生命值(HP)减去自己攻击力值(damage)。敌人生命值(HP)减少到0时死去,同时自己获得敌人身上的所有药瓶;

  14. 经验(exp)每增加20,等级(level)提高1级,maxHP、maxSP、maxMP、damage分别增加20;(如果觉得升级太快了,或者升级增加的HP和damage不太协调,可以调整这些参数)

  15. 休息(rest)一次,生命值(HP)、体力(SP)恢复效果同Soldier的休息(rest)动作。魔法值增加最大魔法值的30%,但不要超过最大魔法值,例如:_mp=_mp+_maxMp*30%。

  16. 吃药(takingDrug)一次,效果等同于Soldier吃药。

  17. 攻击(attack),攻击效果同Soldier。
    3. Master巫师类,从Wizard类公有继承

  18. Master的属性(protected作用域)
    新增的属性: 最大内力 maxNp 当前内力 NP

  19. Master的动作(public作用域)
    决策 makeDecision 攻击 attack 休息 rest 吃药 takingDrug
    魔法攻击wizard_attack 绝杀攻击master_attack

  20. Master被创建后,maxMP和MP为100 ,maxHP和HP为100,maxSP和SP为100,maxNP和NP为100,damage为30,exp为0,level为1;

  21. 每回合Wizard通过决策(makeDecision)来决定需要发出哪一个动作(攻击attack、魔法攻击wizard_attack、绝杀攻击master_attack、休息rest或吃药takingDrug,注意每回合只能做一个动作);

  22. 大师攻击(master_attack),如果内力(NP)大于50时,可以使用大师(master_attack)攻击。一次大师攻击能让被攻击的敌人的生命值(HP)减少其最大生命值的(maxHP)50%(可能有点太强了,破坏平衡性!容易导致游戏在短短几个回合就结束,可以考虑适当减小。),例如敌人HP为100,maxHP为160,被大师攻击后,生命值变为HP-maxHP50%=100-16050%=20。一次大师攻击会内力(NP)损耗50、体力(SP)损耗30,经验增加5。

  23. 魔法攻击(wizard_attack),攻击效果等同于Wizard的攻击(attack)动作

  24. 攻击(attack),攻击效果等同于Soldier的攻击(attack)动作。

  25. 使用大师攻击后,经验(exp)每增加20,等级(level)就提高1级,maxHP、maxSP、maxMP、maxNP分别增加20,damage增加20;

  26. 休息(rest)一次,内力增加最大内力的30%,但不要超过最大内力值。其余如HP、SP、MP的恢复等同于Wizard的休息(rest)动作。

  27. 吃药(takingDrug)一次,效果等同于Soldier的吃药(takingDrug)动作。

4. WarSystem战斗系统类

  1. WarSystem类的属性
    军团A Soldier ** _pGroupA; 军团B Soldier ** _pGroupB;

  2. WarSystem类的动作
    战斗开始startWar 回合开始startRound

  3. 每次战斗,双方派出一个军团,军团由数名战士、巫师和大师组成。战斗按回合制进行,即每回合中,一方军团的每个成员做完各自的一次动作(由makeDecision决定)后,另一方军团每个成员接着完成自己的一次动作。战斗开始,由哪个军团先发起攻击,系统随机决定。回合的生成和结束由WarSystem类控制;

  4. WarSystem类拥有两个数据成员(指向指针变量的指针,即二级指针):
    Soldier ** _pGroupA;
    Soldier ** _pGroupB;
    分别对应战斗的双方军团。(提示,军团可以由Soldier *数组的形式生成,在WarSystem的pGroupA和pGroupB分别指向两个军团,注意OOP的多态实现。)

  5. WarSystem类可以发出战斗开始即startWar()动作。在startWar()中,随机决定由哪一方率先发起攻击(恐怕是每个回合都随机决定谁先出手会比较公平,如果每回合先出手都是固定一方,那么战斗结果完全是确定性的。而且由于两支队伍的成员一样,交换先出手权后的结果也是对称的。),然后调用WarSystem的另一动作:回合开始,即startRound()。

  6. startRound()动作的描述:在startRound()中,按军团顺序调用每个战士的makeDecision()动作(也可以考虑两个军团轮流一次一人行动,比较公平)。

重要提醒

本博客是博主花几个小时弄的,尚未完全满足题目要求,例如未进行随机开启军团战斗(用随机函数判断即可,较简单),本博客意在为广大初学者提供类的设计思路,故不提供主函数代码,请自行设计,由于时间仓促代码多有不足,请读者朋友仔细甄别其中优劣之处,再次提醒,代码仅提供给大家作为思路参考!!!!

Soldier类

#ifndef A1
#define A1
#include<iostream>
#include<string>

using namespace std;
class Soldier//战士类
{
protected:
	double maxHP=100,HP=100,maxSP=100,SP=100,damage=20,drugNum=5,level=1;
	int exp=0;
    string name;
public:
	Soldier()
	{
	}
	int enemynum = 3;//设置一个默认敌人数量
	void setHP()//重置生命值为0
	{
		HP = 0;
	}
	void underattack(double x);
	virtual void setname();//设置名字
	virtual ~Soldier(){}
	virtual void makeDecision(Soldier **t);
	void attack(Soldier **t);
	virtual void rest();
	void takingDrug();
	string getname()//获取名字
	{
		return name;
	}
	double getmaxHP()//获取最大生命值
	{
		return maxHP;
	}
	double getHP()//获取生命值
	{
		return HP;
	}
	double getdrugnum()//获取药瓶数量
	{
		return drugNum;
	}
};
void Soldier::makeDecision(Soldier **t)//决策
{
	if (HP < (maxHP * 0.3))//生命值若低于最大值的30%该回合就吃药
		takingDrug();
	else if (SP < (maxSP * 0.5))//体力低于最大值的50%该回合就休息
		rest();
	else//生命力和体力都充足该回合就发起攻击t
		attack(t);
}
void Soldier::underattack(double hurt)
{
	HP -= hurt;
}
void Soldier::attack(Soldier **enemy)//攻击函数(平A)
{
	for (int i = 0; i < enemynum; i++)
	{
		if (HP > 0 && enemy[i]->getHP()> 0 && SP > 0)
		{
			cout << name << "攻击了" << enemy[i]->getname()<< endl;
			enemy[i]->underattack(damage);
			SP -= 10;
			exp += 5;
			cout << name << "的体力值下降至" << SP << '\t' << "经验+5(" << exp << ")" << endl;
			if (exp % 20 == 0)
			{
				double BHP = HP / maxHP;
				double BSP = SP / maxSP;
				level++;
				damage *= 1.2;
				maxHP *= 1.2;
				maxSP *= 1.2;
				HP = maxHP * BHP;
				SP = maxSP * BSP;
				cout << name << "升级至等级" << level << endl;
			}
			if (enemy[i]->getHP()<= 0)
			{
				enemy[i]->setHP();
				drugNum += enemy[i]->getdrugnum();
				cout << enemy[i]->getname()<< "死亡,生命值为" <<HP<< "\t" << name << "获得药瓶数量" << enemy[i]->getdrugnum()<< endl;
			}
			cout << enemy[i]->getname() << "受到" << damage << "伤害 当前生命值为" << enemy[i]->getHP() << endl << endl;
			return;
		}
	}
}
void Soldier::takingDrug()//吃药
{
	cout << name << "***开始吃药***" << endl;
	if (drugNum == 0)
	{
		cout << "很遗憾," << name << "没有药瓶了" << endl;
		return;
	}
	else {
		drugNum--;
		HP += maxHP * 0.8;
		if (HP > maxHP)
			HP = maxHP;
	}
	cout << "***结束吃药***" << endl << "当前生命值:" << HP << '\t' << "体力" << SP << endl;
}
//coding by wangxiao/wansixinxin/wangboxin/liuyang
void Soldier::rest()//休息
{
	cout << name << "***开始休息***" << endl;
	HP += maxHP * 0.5;
	if (HP > maxHP)
		HP = maxHP;
	SP += maxSP * 0.5;
	if (SP > maxSP)
		SP = maxSP;
	cout << "***休息结束***" << endl << "当前生命值:" << HP << '\t' << "体力" << SP << endl;
}

void Soldier::setname()//命名
{
	cout << "请为战士命名:";
	cin >> name;
}
#endif // !A1

Wizard类

#ifndef A2
#define A2
#include"Soldier.h"
#include<iostream>
using namespace std;
class Wizard :public Soldier//巫师类
{
protected:
	double MP=100;
	double maxMP = 100;
public:
	Wizard() {}
	~Wizard() {}
	virtual void setname();
	virtual void rest();
	virtual void makeDecision(Soldier **enemy);
	void wizard_attack(Soldier **enemy);//法术攻击
};
void Wizard::rest()//巫师休息
{

	cout << name << "***开始休息***" << endl;
	HP += maxHP * 0.5;
	if (HP > maxHP)
		HP = maxHP;
	SP += maxSP * 0.5;
	if (SP > maxSP)
		SP = maxSP;
	MP+= maxMP * 0.5;
	if (MP > maxMP)
		MP = maxMP;
	cout << "***休息结束***" << endl << "当前生命值:" << HP << '\t' << "体力" << SP <<"魔法值"<<MP<<endl;
}
void Wizard::makeDecision(Soldier** enemy)
{
	if (MP <= 25 && SP <= 10)
		rest();
	else if (MP <= 25 && SP>=10)
		attack(enemy);
	else if (HP <= 20)
		takingDrug();
	else
		wizard_attack(enemy);
}
void Wizard::wizard_attack(Soldier** enemy)
{
	if (HP>0)
	{

		for (int i = 0; i < enemynum; i++)
		{
			if (enemy[i]->getHP()>0)
			{
				if (MP > 25 && SP > 10)
				{
					MP -= 25;
					SP -= 10;
					cout << endl<< name << "对" << enemy[i]->getname() << "发动魔法攻击"<< endl;
					enemy[i]->underattack(damage * 0.2);
					cout << enemy[i]->getname() << "的生命值下降至" << enemy[i]->getHP() << endl;
					exp += 5;
					cout << name << "的体力值/魔法值下降为:" << SP << "/" << MP << "经验+5(" << exp << ")" << endl;
					if (enemy[i]->getHP() <= 0)
					{
						enemy[i]->setHP();
						drugNum += enemy[i]->getdrugnum();
						cout << enemy[i]->getname()<< "死亡" << "\t" << name << "获得药瓶数量" << enemy[i]->getdrugnum()<< endl;
					}
					if (exp % 20 == 0)
					{
						double BHP = HP / maxHP;
						double BSP = SP / maxSP;
						double BMP = MP / maxMP;
						level++;
						damage *= 1.2;
						maxHP *= 1.2;
						maxSP *= 1.2;
						maxMP *= 1.2;
						HP = maxHP * BHP;
						SP = maxSP * BSP;
						MP = maxMP * BMP;
						cout << name << "升级至等级" << level << endl;
					}
				}
				else
				{
					cout << "魔法值或者体力值不足无法继续魔法攻击" << endl;
					return;
				}
			}
		}
	}
}
void Wizard::setname()
{
	cout << "请为法师命名:";
	cin >> name;
}
#endif // !A2

Master类

#ifndef A3
#define A3
#include"Wizard.h"
class Master :public Wizard
{protected:
	double NP = 100;
	double maxNP = 100;
public:
	Master() {};
	~Master() {};
	void setname();
	void master_attack(Soldier **enemy);
	void makeDecision(Soldier** enemy);
	void rest();
};
void Master::master_attack(Soldier** enemy)//大师攻击(终结技)
{
	if (HP > 0)
	{
		for (int i = 0; i < enemynum; i++)
		{
			if (enemy[i]->getHP() > 0 && NP >= 50 && SP >= 30)
			{
				NP -= 50;
				SP -= 30;
				enemy[i]->setHP();
				cout << enemy[i]->getname() << "被" << name << "终结" << endl;
				cout << enemy[i]->getname() << "的生命值当前为" << enemy[i]->getHP()<<endl;
				exp += 5;
				if (exp % 20 == 0)
				{
					double BHP = HP / maxHP;
					double BSP = SP / maxSP;
					double BMP = MP / maxMP;
					double BNP = NP / maxNP;
					level++;
					damage *= 1.2;
					maxHP *= 1.2;
					maxSP *= 1.2;
					maxMP *= 1.2;
					HP = maxHP * BHP;
					if (HP > maxHP)
						HP = maxHP;
					SP = maxSP * BSP;
					if (SP > maxSP)
						SP = maxSP;
					MP = maxMP * BMP;
					if (MP > maxMP)
						MP = maxMP;
					NP = maxNP * BNP;
					if (NP > maxNP)
						NP = maxNP;
					cout << name << "升级至等级" << level << endl;
					cout << name<<"各项属性提升至:生命" << HP << "体力" << SP << "魔法值" << MP << "内力" << NP << endl << endl;
				}
			}
			else if (NP < 50 && SP < 30)
			{
				cout <<name<< "内力或体力不足无法继续发动终结技" << endl;
				return;
			}
		}
	}
}
void Master::rest()
{
	cout << name << "***开始休息***" << endl;
	HP += maxHP * 0.5;
	if (HP > maxHP)
		HP = maxHP;
	SP += maxSP * 0.5;
	if (SP > maxSP)
		SP = maxSP;
	MP += maxMP * 0.5;
	if (MP > maxMP)
		MP = maxMP;
	NP += maxNP * 0.5;
	if (NP > maxNP)
		NP = maxNP;
	cout << "***休息结束***" << endl << "当前生命值:" << HP << '\t' << "体力" << SP << "魔法值" << MP << "内力" << NP << endl;
}
void Master::makeDecision(Soldier** enemy)
{
	for (int i = 0; i < enemynum; i++)
	{
		if (enemy[i]->getHP() <= enemy[i]->getmaxHP() * 0.4)
		{
			master_attack(enemy);
			return;
		}
	}
	if (MP <= 25 && SP <= 10)
		rest();
	else if (MP <= 25 && SP >= 10)
		attack(enemy);
	else if (HP <= 20)
		takingDrug();
	else
		wizard_attack(enemy);
}
void Master::setname()
{
	cout << "请为此大师命名:";
	cin >> name;
}
#endif // !A3

Warsystem类

#ifndef  A5
#define A5
#include"Master.h"
#include<windows.h>
#include<cstdlib>
class Warsystem
{
private:
	Soldier** _pgroupA;
	Soldier** _pgroupB;
	void startround(Soldier **A,Soldier **B);
public:
	bool isgrouplose(Soldier** A);
	Warsystem(Soldier** A, Soldier** B)
	{
		_pgroupA = A;
		_pgroupB = B;
	}
	void startwar();
};
void Warsystem::startwar()
{
	int round = 1;
	do
	{
		cout << endl<<endl<<endl<<"第" << round << "回合:" << endl << endl;
		if (round++ & 1)
			startround(_pgroupA, _pgroupB);
		else
			startround(_pgroupB, _pgroupA);
		Sleep(3000);
	} while (!isgrouplose(_pgroupA) && !isgrouplose(_pgroupB));
	if (isgrouplose(_pgroupA))
		cout << "B军团胜利";
	else
		cout << "A军团胜利";
}
void Warsystem::startround(Soldier** A, Soldier** B)
{
	for (int i = 0; i < A[0]->enemynum; i++)
	{
		if(A[i]->getHP()>0)
			A[i]->makeDecision(B);
	}
}
bool Warsystem::isgrouplose(Soldier** A)
{
	for (int i = 0; i < A[0]->enemynum; i++)
	{
		if (A[i]->getHP()>0)
			return false;
	}
	return true;
}
#endif // ! A4


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

设计一个回合制战斗系统Combat(C++) 的相关文章

  • 部署 MVC4 项目时出错:找不到文件或程序集

    过去 我只需使用 Visual Studio 2012 发布到 AWS 菜单项即可部署我的 MVC4 网站 到 AWS Elastic Beanstalk 现在 程序可以在本地编译并运行 但无法部署 从消息来看 它似乎正在寻找不在当前部署的
  • boost::multi_index_container 复合键中的 equal_range 与比较运算符

    我正在尝试从多索引容器查询结果 其中值类型是三个元素的结构 第一个值已给出 但第二个和第三个值必须大于或小于查询参数 经过搜索后 我发现必须实现自定义密钥提取器 并且这里的一些链接建议相同 但我无法实现它 boost multi index
  • C++:无法使用scoped_allocator_adaptor传播polymorphic_allocator

    我有一个vector
  • 自动从 C# 代码进行调试过程并读取寄存器值

    我正在寻找一种方法来读取某个地址的 edx 注册表 就像这个问题中所问的那样 读取eax寄存器 https stackoverflow com questions 16490906 read eax register 虽然我的解决方案需要用
  • 如何在没有 Control.Invoke() 的情况下从后台线程修改控件属性

    最近 我们遇到了一些旧版 WinForms 应用程序 我们需要更新一些新功能 在专家测试该应用程序时 发现一些旧功能被破坏 无效的跨线程操作 现在 在您认为我是新手之前 我确实有一些 Windows 窗体应用程序的经验 我不是专家 但我认为
  • Cygwin 下使用 CMake 编译库

    我一直在尝试使用 CMake 来编译 TinyXML 作为一种迷你项目 尝试学习 CMake 作为补充 我试图将其编译成动态库并自行安装 以便它可以工作 到目前为止 我已经设法编译和安装它 但它编译成 dll 和 dll a 让它工作的唯一
  • 如何在我的应用程序中使用 Windows Key

    Like Windows Key E Opens a new Explorer Window And Windows Key R Displays the Run command 如何在应用程序的 KeyDown 事件中使用 Windows
  • 将字符串从非托管代码传递到托管

    我在将字符串从非托管代码传递到托管代码时遇到问题 在我的非托管类中 非托管类 cpp 我有一个来自托管代码的函数指针 TESTCALLBACK FUNCTION testCbFunc TESTCALLBACK FUNCTION 接受一个字符
  • 如何在 WPF RichTextBox 中跟踪 TextPointer?

    我正在尝试了解 WPF RichTextBox 中的 TextPointer 类 我希望能够跟踪它们 以便我可以将信息与文本中的区域相关联 我目前正在使用一个非常简单的示例来尝试弄清楚发生了什么 在 PreviewKeyDown 事件中 我
  • 如何针对 Nancy 中的 Active Directory 进行身份验证?

    这是一篇过时的文章 但是http msdn microsoft com en us library ff650308 aspx paght000026 step3 http msdn microsoft com en us library
  • 基于范围的 for 循环中的未命名循环变量?

    有没有什么方法可以不在基于范围的 for 循环中 使用 循环变量 同时也避免编译器发出有关未使用它的警告 对于上下文 我正在尝试执行以下操作 我启用了 将警告视为错误 并且我不想进行像通过在某处毫无意义地提及变量来强制 使用 变量这样的黑客
  • Windows 窗体不会在调试模式下显示

    我最近升级到 VS 2012 我有一组在 VS 2010 中编码的 UI 测试 我试图在 VS 2012 中启动它们 我有一个 Windows 窗体 在开始时显示使用 AssemblyInitialize 属性运行测试 我使用此表单允许用户
  • 如何在 Team Foundation 上强制发表有意义的签入评论?

    我有一个开发团队有一个坏习惯 他们写道poor签入评论 当我们必须在团队基础上查看文件的历史记录时 这使得它成为一场噩梦 我已经启用了变更集评论政策 这样他们甚至可以在签到时留下评论 否则他们不会 我们就团队的工作质量进行了一些讨论 他们很
  • 使用 LINQ 查找列表中特定类型的第一个元素

    使用 LINQ 和 C 在元素列表中查找特定类型的第一个项目的最短表示法是什么 var first yourCollection OfType
  • 线程、进程和 Application.Exit()

    我的应用程序由主消息循环 GUI 和线程 Task Factory 组成 在线程中我调用一些第三方应用程序var p new Process 但是当我调用Application Exit 在消息循环中 我可以看到在线程中启动的进程仍在内存中
  • 检查 url 是否指向文件或页面

    我们需要以下内容 如果文件确实是文件 则从 URL 下载该文件 否则 如果它是一个页面 则什么也不做 举个简单的例子 我有以下命令来下载文件 My Computer Network DownloadFile http www wired c
  • 什么是 C 语言的高效工作流程? - Makefile + bash脚本

    我正在开发我的第一个项目 该项目将跨越多个 C 文件 对于我的前几个练习程序 我只是在中编写了我的代码main c并使用编译gcc main c o main 当我学习时 这对我有用 现在 我正在独自开展一个更大的项目 我想继续自己进行编译
  • char指针或char变量的默认值是什么[重复]

    这个问题在这里已经有答案了 下面是我尝试打印 char 变量和指针的默认值 值的代码 但无法在控制台上看到它 它是否有默认值或只是无法读取 ASCII 范围 include
  • C++ 成员函数中的“if (!this)”有多糟糕?

    如果我遇到旧代码if this return 在应用程序中 这种风险有多严重 它是一个危险的定时炸弹 需要立即在应用程序范围内进行搜索和销毁工作 还是更像是一种可以悄悄留在原处的代码气味 我不打算writing当然 执行此操作的代码 相反
  • 为什么 strtok 会导致分段错误?

    为什么下面的代码给出了Seg 最后一行有问题吗 char m ReadName printf nRead String s n m Writes OK char token token strtok m 如前所述 读取字符串打印没有问题 但

随机推荐

  • 回归模型的变量筛选与预测

    我眼中的回归变量筛选 变量筛选是回归建模过程关键的一步 由于变量间的相关性 必然会导致不同的筛选方法得到不同的模型 在所有变量筛选方法中 向前法 向后法以及逐步回归法的使用频率较高 因为这类方法操作简单 运算速度快 非常实用 这种方法选出的
  • java获取url锚点_定位与锚点

    文档流 普通流 上至下 左至右 浮动流 元素添加了float 定位流 添加了定位属性 定位 position static 默认值 absolute 绝对定位 脱离文档流 不占位 默认参考浏览器零点 relative 相对定位 占据文档流
  • c# 得到list符合某条件的索引值,排序

    请教 在List集合中怎么得到元素的索引值 参考 http www myexception cn c sharp 385022 html 这个可以用来读取窗口的多个textbox控件中内容 1 解决方案 2 你可以使用FindIndex方法
  • Centos8 部署 Mysql8.0及主从复制

    1 拉取镜像 root VM 24 9 centos docker pull mysql 如需拉取置指定版本镜像加上 版本号即可 root VM 24 9 centos docker pull mysql 7 6 1 创建本地文件用于挂载
  • C++ 异常处理

    C 异常 Exception 是指在程序运行时产生的特殊情况 例如 尝试除以零的操作 异常提供了一种转移程序控制权的方式 异常处理涉及到三个关键字 try catch throw throw 当问题出现时 程序会抛出一个异常 这是通过使用
  • VUE 定时请求接口数据

    1 设置定时器 mounted this timer setInterval function 执行内容 60000 2 清除定时器 beforeDestroy clearInterval this timer
  • Android平台深度学习--NNAPI

    转自 http blog sina com cn s blog 602f87700102y62v html 1 Android 8 1 API 27 NNAPI 人工智能神经网络API 如 TensorFlow 神经网络 API 能够向设备
  • Java的动态代理Proxy

    动态代理类是实现在运行时指定的接口列表的类 这样通过类实例上的一个接口的方法调用将被编码并通过统一接口分派到另一个对象 先问一个问题 数据库操作需要以下流程 获取数据库连接 gt 执行sql gt 提交事务 gt 异常回滚事务 gt 释放连
  • Java 异常之 RuntimeException和Exception的区别

    在java的异常类体系中 Error和RuntimeException是非检查型异常 其他的都是检查型异常 所有方法都可以在不声明throws的情况下抛出RuntimeException及其子类 不可以在不声明的情况下抛出非RuntimeE
  • C语言指针的赋值和初始化的看法

    https blog csdn net liuchunjie11 article details 80333224 在查看上述博客时 修改代码 include
  • Spring——事务注解@Transactional【建议收藏】

    在某些业务场景下 如果一个请求中 需要同时写入多张表的数据或者执行多条sql 为了保证操作的原子性 要么同时成功 要么同时失败 避免数据不一致的情况 我们一般都会用到事务 Spring框架下 我们经常会使用 Transactional注解来
  • 级数求和的八个公式_逐渐硬核的函数展开——洛朗级数、Mittag-Leffler和Weierstrass定理...

    从幂级数到洛朗级数 在传统微积分的范畴内 幂级数 是一个非常有效的函数近似工具 它不仅能够帮助我们为函数找出合适的多项式近似 还能够有效地解决极限里一类未定式问题 然而幂级数也有它的局限性 它只能在全纯函数的解析点处展开 而且很多时候都无法
  • sklearn库中的标准数据集及基本功能

    sklearn库 sklearn是scikit learn的简称 是一个基于Python的第三方模块 sklearn库集成了一些常用的机器学习方法 在进行机器学习任务是 并不需要实现算法 只需要简单的调用sklearn库中提供的模块就能完成
  • 双端链表的增加,删除,修改,遍历操作的实现

    package com yg linkedList author GeQiLin date 2020 2 21 13 46 public class DoubleLinkedListDemo public static void main
  • PCB电路板原理图中VCC、VDD、VEE、VSS、VBAT各表示什么意思?

    PCB电路板原理图中VCC VDD VEE VSS VBAT各表示什么意思 一 名词解析 1 VCC C circuit 表示电路的意思 即接入电路的电压 2 VDD D device 表示器件的意思 即器件内部的工作电压 3 VSS S
  • linux 多块磁盘挂一个文件夹,Linux单目录挂载多块磁盘

    Linux将多块磁盘挂载到一个目录 特此记录 方便以后使用 服务器需要保存大量图片 内含4块2T的磁盘 需要将磁盘挂载到影像目录 单块磁盘挂载比较简单 创建分区 格式化分区 挂载 同一目录无法重复挂载 后挂载的会覆盖之前挂载的磁盘 但是现在
  • python强化学习--gym安装与使用

    最近开始学习强化学习 第一步肯定是要学会安装和使用pym 原本以为很简单 事实上确实很简单 但是遇到一个小问题 就是安装gym之后 在应用的过程中 游戏界面没有显示出来 了解后才知道是gym版本不对 一种可用的版本匹配是 python 3
  • 前端面试题汇总

    总结一下前端面试官会经常问到的一些面试题 目录 总结一下前端面试官会经常问到的一些面试题 一阶段 HTML5 CSS3 隐藏页面中某个元素的办法 区别 请说明 px em rem vw vh rpx 等单位的特性 什么是 BFC 盒子模型总
  • JAVA课程设计(小游戏贪吃蛇)完整源码附素材(一)

    JAVA课程设计 小游戏贪吃蛇 完整源码附素材 一 JAVA课程设计 小游戏贪吃蛇 完整源码附素材 二 JAVA课程设计 小游戏贪吃蛇 完整源码附素材 三 文章目录 前言 一 任务描述 1 1 课程设计目的 1 2 课程设计内容和要求 二
  • 设计一个回合制战斗系统Combat(C++)

    C 设计一个回合制战斗系统Combat 目录 C 设计一个回合制战斗系统Combat 题目 重要提醒 Soldier类 Wizard类 Master类 Warsystem类 题目 设计和实现回合制战斗系统Combat 1 Soldier战士