2人のプレイヤーが3回勝つまでじゃんけんをして、勝負がついたならそれまでの勝負の履歴を表示するプログラムを作成してください。ヘッダファイルとcppファイルで分けてください。答えてくれた方にはそれなりのお礼をします

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら

トピックに返信する


答えを正確にご入力ください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: 2人のプレイヤーが3回勝つまでじゃんけんをして、勝負がついたならそれまでの勝負の履歴を表示するプログラムを作成してください。ヘッダファイルとcppファイルで分けてください。答えてくれた方にはそれなりのお礼をします

Re: 2人のプレイヤーが3回勝つまでじゃんけんをして、勝負がついたならそれまでの勝負の履歴を表示するプログラムを作成してください。ヘッダファイルとcppファイルで分けてください。答えてくれた方にはそれなりのお礼をします

#7

by あたっしゅ » 10ヶ月前

.cpp ってのは、class を使えって意味では ?
ちゃんと親クラス作って、継承しないとw(
コミケ終わったらやりますよ。急ぎなら、
他の方に、まかせます)

Re: 2人のプレイヤーが3回勝つまでじゃんけんをして、勝負がついたならそれまでの勝負の履歴を表示するプログラムを作成してください。ヘッダファイルとcppファイルで分けてください。答えてくれた方にはそれなりのお礼をします

#6

by usao » 10ヶ月前

補足:
ああ,「ヘッダとcppがどうの」という条件があるのだった.そうだな…

まず,A.cppを用意して,↑のコードを全部書いて,"main"だけを何か別に関数名に変える.
次に,A.h を用意して,前記名前を変えた関数の宣言を書く.

でいいか.

Re: 2人のプレイヤーが3回勝つまでじゃんけんをして、勝負がついたならそれまでの勝負の履歴を表示するプログラムを作成してください。ヘッダファイルとcppファイルで分けてください。答えてくれた方にはそれなりのお礼をします

#5

by usao » 10ヶ月前

仕事でもないのに画像認識とかは,やっぱつれぇので,かわりにプレイヤーを2人用意した.
プレイヤー1はパーを出しやすいが,対するプレイヤー2はグーを出しにくい.
こいつは熱い勝負になりそうだぜ!

コード:

//じゃんけん用各種
enum HAND{  G=0, C=1, P=2 };    //グー,チョキ,パー
enum RESULT{    WIN=0, DRAW=1, LOSE=2   };
inline RESULT Judge( HAND a, HAND b )   //bに対するaの勝敗を判定
{   //考えるの面倒だから表引き
    static const RESULT R[] = { DRAW, WIN, LOSE,  LOSE, DRAW, WIN,  WIN, LOSE, DRAW };
    return R[ a*3 + b ];
}

//2人のプレイヤー
namespace
{
    std::mt19937 RND( std::random_device().operator()() );

    HAND Player1()
    {
        static const HAND H[4] = { G,C,P,P };
        return H[ std::uniform_int_distribution<int>( 0, 3 )( RND ) ];
    }

    HAND Player2()
    {
        HAND cond = ( HAND )std::uniform_int_distribution<int>( 0, 2 )( RND );
        return ( cond==G   ?   ( HAND )std::uniform_int_distribution<int>( 0, 2 )( RND )   :   cond );
    }
}
3本先取がどうの,というつまらない部分はまぁ適当にやればよくね?

コード:

int main(void)
{
    const char Hand[] = "GCP";
    const std::string ResultMsg[3] = { "P1 win", "draw", "P2 win" };

    unsigned int Counter[3] = { 0,0,0 };
    const unsigned int Thresh = 3;
    while( Counter[0]<Thresh && Counter[2]<Thresh )
    {
        auto h1 = Player1();
        auto h2 = Player2();
        auto j = Judge( h1, h2 );
        ++Counter[j];
        std::cout << Hand[h1] << " vs " << Hand[h2] << " ... " << ResultMsg[j] << std::endl;
    }
    std::cout << "---" << std::endl;
    for( int i=0; i<3; ++i ){   std::cout << "Num of " << ResultMsg[i] << " = " << Counter[i] << std::endl; }

    std::cin.ignore();
    return 0;
}
果たして「それなりのお礼」を書き込んでいただくに足るであろうか?

Re: 2人のプレイヤーが3回勝つまでじゃんけんをして、勝負がついたならそれまでの勝負の履歴を表示するプログラムを作成してください。ヘッダファイルとcppファイルで分けてください。答えてくれた方にはそれなりのお礼をします

#4

by あたっしゅ » 10ヶ月前

ワイの回答に不満なら、「他の方、お願いします」とか、レスすればいいのに。
ワイのイメージとしては、

一人目の手を入力してください (G)グー (P)パー (C)チー: G
二人目の手を入力してください (G)グー (P)パー (C)チー: G
**** 引き分け ****
一人目の 0 勝 0 敗 1 引き分け

という感じでしょうか。
どうせ、課題の締め切りは過ぎているでしょうから、コミケが終わってから(2019 年になってから)、コードを書こうかな ?

Re: 2人のプレイヤーが3回勝つまでじゃんけんをして、勝負がついたならそれまでの勝負の履歴を表示するプログラムを作成してください。ヘッダファイルとcppファイルで分けてください。答えてくれた方にはそれなりのお礼をします

#3

by usao » 10ヶ月前

それなりのお礼って何だよw
通常は「ありがとう」を1回書くところを3回書きますとか?
オフトピック
雰囲気的には,
Webカメラあたりで2人のプレイヤがじゃんけんする様子を撮影して
勝敗を自動判定して履歴を収集するようなものを目指す感じだろうか?

Re: 2人のプレイヤーが3回勝つまでじゃんけんをして、勝負がついたならそれまでの勝負の履歴を表示するプログラムを作成してください。ヘッダファイルとcppファイルで分けてください。答えてくれた方にはそれなりのお礼をします

#2

by あたっしゅ » 10ヶ月前

irony.hpp

コード:

 
#include <iostream>

class TMain
{
public:
	TMain() {}
	void exec();
	~TMain() {}
};
 

irony.cpp

コード:

 
#include <iostream>
#include "irony.hpp"

void TMain::exec()
{
	std::cout << "2人のプレイヤーが3回勝つまでじゃんけんをして、勝負がついたならそれまでの勝負の履歴";
}

int main()
{
	TMain* main = new TMain();

	main->exec();
	delete main;
}
 

2人のプレイヤーが3回勝つまでじゃんけんをして、勝負がついたならそれまでの勝負の履歴を表示するプログラムを作成してください。ヘッダファイルとcppファイルで分けてください。答えてくれた方にはそれなりのお礼をします

#1

by けんせい » 10ヶ月前

2人のプレイヤーが3回勝つまでじゃんけんをして、勝負がついたならそれまでの勝負の履歴を表示するプログラムを作成してください。ヘッダファイルとcppファイルで分けてください。答えてくれた方にはそれなりのお礼をします

ページトップ