-1
私はプロジェクトを持っていて、私のクラスのメソッドの1つは、deque、mydequeをpop_frontすることになっています。メインでone.play()を呼び出してプログラムを実行すると、両端キューがポップされません。プログラムは、ユーザーがいくつのカードを入力してから、カードを引っ張るたびに乱数を生成し、カードの値を比較させるものです。乱数がカード番号よりも小さい場合、スコアは1だけインクリメントされる。しかし、それを動作させるためには、両端キューの前面をポップし、その都度、新しい両端をデッキの新しい前面と比較する必要があります。私はそれを指示するメソッドを呼び出すと、私の両端キューがポップしないのはなぜですか?
#include <iostream>
#include <deque>
using namespace std;
class Player {
private:
size_t cards;
deque<int> mydeque;
public:
string name;
int score;
Player(string player) {
name = player;
score = 0;
}
void recieve(size_t card){
mydeque.push_front (card);
}
int play() {
return mydeque.front();
mydeque.pop_front();
}
~Player() {
name = " ";
score = 0;
}
void tostring(ostream & out) const{
out << "player name : "<< name << endl;
out << "score : " << score << endl;
out << "cards : " << mydeque.size() << endl;
for(int i =0; i <mydeque.size();i++)
out << mydeque[i] << " " ;
}
};
ostream & operator <<(ostream & out, const Player & p){
p.tostring(out);
return out;}
int main() {
int rounds;
cout << "Give the number of rounds: "<<endl;
cin >> rounds;
Player one("some player");
for (int i = 1; i < rounds+1; i++){
one.recieve(i);
}
for(int i = 0; i < rounds; i++) {
one.play();
int randnum = rand()%(rounds-1 + 1) + 1;
cout << one << endl;
cout << " The dealer draws : " << randnum << endl;
if (randnum < one.play()){
one.score = one.score + 1;}}
return 0;
}