プロが教えるわが家の防犯対策術!

void Taiketu_basyo::taiketu()
{
int iti,kougeki; //一時的に必要な「位置」と「攻撃量」の変数

cout << "さあ、あなたの攻撃です。" << '\n';
cout << "攻撃の位置(1~5の数値)を入力してください。" << '\n';
cin >> iti;
cout << "攻撃に使うパワー(100以下の数値)を入力してください。" << '\n';
cin >> kougeki;
cout << '\n';
you.kougeki_suru(kougeki);
if(buu_no_basyo == iti){
buu.kougeki_sareru(kougeki * 2);
}else{
cout << "あなたの攻撃は外れたようです。" << '\n';
}
cout << '\n';

cout << "大魔王の攻撃です。" << '\n';
cout << "(エンターキーを押してください)" << '\n';

cin.sync();
cin.get();

iti = rand() % 5 + 1;
kougeki = rand() % 100 + 1;
buu.kougeki_suru(kougeki);
if(you_no_basyo == iti){
you.kougeki_sareru(kougeki * 2);
}else{
cout << "大魔王ブウの攻撃は外れたようです。" << '\n';
}
}

int main()
{
Taiketu_basyo dokoka; //対決場所dokokaの生成
//ここでコンストラクタが働きヒーローと大魔王の位置が決められる
dokoka.taiketu(); //dokokaの対決

このプログラムなんですが
cin.sync();
cin.get();
の部分で「プログラムの進行を一時ストップし、エンターキー(リターンキー)で進行を再開する」としたんですがプログラムを動かしてみるとストップしません。
色々考えてみたんですが原因がわからないのでどなたか教えてもらえませんでしょうか?
よろしくお願いします。
言語はC++でやってます。

A 回答 (1件)

よくわかりませんが


やってみたら回避できたのでサンプルを。

#include <iostream>

void main()
{
int num;

std::cin >> num;
std::cin.get();//これがないと突き抜けますよ

printf( "a" );
std::cin.sync();
std::cin.get();
printf( "b" );
}


要は、前に入力した内容が
文字列+改行
となっていて、
前回入力時の改行のみ次のget()で拾っている。
と、思います。

他にもっと方法があると思いますが
これでとりあえずは回避できるかと。
    • good
    • 0
この回答へのお礼

ありがとうございます!
教えてもらった通りにプログラムを直したらきちんと動きました♪
本当にありがとうでした(^^)

お礼日時:2006/03/09 12:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!