新人再次来到这里,我像往常一样再次陷入困境。 (不知道我的问题标题应该是什么,但它与我认为的功能完全相关)我想让用户掷骰子并在达到20时达到最大值。但事情是我的函数{{1并不像我想要的那样将以前的卷添加起来。基本上我希望它为连续转弯存储值obj.currentRoll();
,以便稍后我可以使用像value=value+roll;
这样的if语句或类似的那样。我能够以更简单的方式完成它而不使用单独的类或函数,但我希望以这种方式实现相同的结果并且失败。有什么建议吗?
if (value>max){return 0}
myClass.h
#include <iostream>
#include "myClass.h"
#include <string>
#include <cstdlib>
#include <ctime>
int main()
{
srand(time(0));
std::string rollCh;
const int max=20;
std::cout<<"Your lucky number for the day is " <<1+(rand()%30)<<"\n";
std::cout<<"Roll the dice? (Y/N)"<< "\n";
std::string ch;
std::cin>>ch;
if(ch=="Y"||ch=="y"){
myClass obj;
do
{
std::cout<<"Rolling...\n"<<"\n";
std::cout<<"You rolled "; obj.funcRoll();std::cout<<"!!!" <<"\n";
std::cout<<"Double checking your roll...yes it is ";obj.funcRoll();
obj.currentRoll();
std::cout<<"\n\n Roll again? (Y/N)"<<"\n";
std::cin>>rollCh;
}
while (rollCh=="Y"||rollCh=="y");
}
return 0;
}
myClass.cpp
#ifndef MYCLASS_H
#define MYCLASS_H
class myClass
{
public:
myClass();
void funcRoll();
int roll;
int value;
void currentRoll();
};
#endif // MYCLASS_H
我先做的更方便
#include "myClass.h"
#include <iostream>
#include <cstdlib>
#include <ctime>
myClass::myClass()
{}
void myClass:: funcRoll(){
srand(time(0));
roll=1+(rand()%6);
std::cout<<roll;
}
void myClass:: currentRoll(){
value=0;
value=value+roll;
std::cout<<"\n You have rolled "<< value<<" so far";
}
答案 0 :(得分:0)
将value = 0;
语句从currentRoll()
函数移动到构造函数:
myClass::myClass() : value(0){}
将std::string
类型替换为char
。 cpp.sh上的实例。