C++ 如何在C++;
我有一个任务要做一个小游戏 构建一个文本冒险游戏,它接受用户输入并执行某些操作 //在游戏开始时,用户可以选择一种类型的玩家(1、2、3) //每种类型的玩家都从以下属性开始- //玩家1-最大生命值=50,伤害=10,治疗=20 //玩家2-最大生命值=75,伤害=25,治疗=10 //玩家3-最大生命值=100,伤害=75,治疗=20 问题是当我尝试重新声明对象时,它并没有改变C++ 如何在C++;,c++,oop,C++,Oop,我有一个任务要做一个小游戏 构建一个文本冒险游戏,它接受用户输入并执行某些操作 //在游戏开始时,用户可以选择一种类型的玩家(1、2、3) //每种类型的玩家都从以下属性开始- //玩家1-最大生命值=50,伤害=10,治疗=20 //玩家2-最大生命值=75,伤害=25,治疗=10 //玩家3-最大生命值=100,伤害=75,治疗=20 问题是当我尝试重新声明对象时,它并没有改变 Player player(0,0,0); int player_no; bool gameover=false;
Player player(0,0,0);
int player_no;
bool gameover=false;
std::cout<<"choose your player !!!";
std::cin>>player_no;
if(player_no==1){
Player player1(50,20,10); //value is not reflected inside while
std::cout<<player.heal; //50
std::cout<<player.health; //20
goto start;
}else if(player_no==2){
Player player(75,10,25); //value is not reflcted inside while
goto start;
}
char command;
start:
while(!gameover){
std::cout<<"what do you want ??? ";
std::cin>>command;
if(command=='D'){
std::cout<<player.health<<"\n"; //uses the default value 0
std::cout<<player.damage<<"\n"; //uses the default value 0
player.TakeDamage(player.damage); //0 is passed
}else if(command=='H') {
player.Heal(player.heal); // 0 is passed
}
Player(0,0,0);
国际玩家号;
bool gameover=false;
标准::coutplayer_no;
如果(玩家号=1){
Player player1(50,20,10);//值在
std::cout有很多问题:
1) 变量的名称:
您在第1行调用player,在if(player_no==1){
2) 该范围不受尊重:
当你创建一个新玩家(75,10,25)时,它不会替换第一个创建的玩家
我更喜欢这样使用指针(有无限的方法可以做到!)
希望它能帮助你!用一个小例子来说明你的问题:
int a = 2;
if (a == 2)
{
std::cout << "a is " << a << std::endl;
int a = 3;
std::cout << "a set to " << a << std::endl;
}
std::cout << "a is " << a << std::endl;
为什么a
3不在第二行?那是因为大括号{…}
声明一个新的作用域,行int a=3
声明一个新的a
变量,该变量仅为该作用域的局部变量。第二个a
变量离开if作用域时,第二个a
变量消失,只剩下仍然设置为2的原始变量
如果我们将其更改为:
int a = 2;
if (a == 2)
{
std::cout << "a is " << a << std::endl;
a = 3;
std::cout << "a set to " << a << std::endl;
}
std::cout << "a is " << a << std::endl;
修复代码的方法是执行以下操作:
Player player(0, 0, 0);
...
if (player_no == 1) {
player = Player(50, 20, 10);
...
}
什么是Player
?什么是TakeDamage
,什么是eal
?你的主要功能在哪里?我认为你没有给出足够的上下文。请提供一个玩家(75,10,25);//值在创建新的player
变量时不会在内部反映,该变量与外部作用域中的player
变量没有连接。此变量仅存在于其内部的块中。您需要更改现有player
对象中的值player=player(50,20,10)怎么样;
而不是玩家1(50,20,10);
int a = 2;
if (a == 2)
{
std::cout << "a is " << a << std::endl;
a = 3;
std::cout << "a set to " << a << std::endl;
}
std::cout << "a is " << a << std::endl;
a is 2
a set to 3
a is 3
Player player(0, 0, 0);
...
if (player_no == 1) {
player = Player(50, 20, 10);
...
}