こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

プログラミングについて質問です。

プログラミングについて質問です。

ゲームのプログラミングの一部を作っているところで

たとえば

H13
D5
C2
D6
H1
S12

と表示されているとき、D6とキーボードで入力すると、その文字だけ消えて、

H13
D5
C2
H1
S12

と表示しなおされる(全ての文字が消えるまで繰り返す)、というプログラミングを書きたいと思っています。
しかしどうやったらいいのかわからないので、教えていただけたら嬉しいです。

使っているのはC++言語です。

授業でハングマンのゲームをやったときに
キーボード入力された文字が、配列の文字と一致するか調べる、というものをやったので
それが応用できるかなと思うのですが…
そのハングマンのプログラミングは

#include <iostream>
#include <string.h>
using namespace std;

void tryAndSee() {
char x[100], y[100], c;
strcpy(x, "hippopotamus");
strcpy(y, "____________");

cout << "character?";
cin >> c;

for(int i=0;i<100;i++){
if(x[i]=='\0'){
break;
}
else if(x[i]==c){
y[i]=c;
}
}

cout << y << "\n";
}

main() {
tryAndSee();
}

です。

ほんとに初心者なので、解説付きで教えていただけると嬉しいです。
よろしくお願いします。

投稿日時 - 2009-12-23 21:19:16

QNo.5543067

すぐに回答ほしいです

質問者が選んだベストアンサー

1.一連の文字列を何らかのデータ構造として用意する
2.検索文字列を入力
3.入力文字列を各文字列データと比較する
4.一致した文字列データがあれば削除する
5.2に戻る

ということをやれば良いと思います。


#include <iostream>
#include <vector>
#include <string.h>

using namespace std;

int main(int argc, char *argv[])
{
string text[] = {"H13", "D5", "C2", "D6", "H1", "S12"};
vector<string> tlist;
char input[256] = "";

for (int i = 0; i < 6; i++) {
tlist.push_back(text[i]);
}

while (1) {
vector<string>::iterator ite;

for (ite = tlist.begin(); ite != tlist.end(); ) {
if (ite->compare(input) == 0) {
ite = tlist.erase(ite);
}
else {
cout << *ite << endl;
ite++;
}
}

cout << "input:";
fgets(input, 255, stdin);
*(strstr(input, "\n")) = 0;
}

return 0;
}

投稿日時 - 2009-12-24 13:33:24

お礼

反応が遅くなってしまいごめんなさい。

丁寧に回答いただき、本当にありがとうございました!
参考にさせていただきました。

投稿日時 - 2010-01-22 18:07:37

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問