ページ 1 / 1
2人のプレイヤーが3回勝つまでじゃんけんをして、勝負がついたならそれまでの勝負の履歴を表示するプログラムを作成してください。ヘッダファイルとcppファイルで分けてください。答えてくれた方にはそれなりのお礼をします
Posted: 2018年12月12日(水) 15:53
by けんせい
2人のプレイヤーが3回勝つまでじゃんけんをして、勝負がついたならそれまでの勝負の履歴を表示するプログラムを作成してください。ヘッダファイルとcppファイルで分けてください。答えてくれた方にはそれなりのお礼をします
Re: 2人のプレイヤーが3回勝つまでじゃんけんをして、勝負がついたならそれまでの勝負の履歴を表示するプログラムを作成してください。ヘッダファイルとcppファイルで分けてください。答えてくれた方にはそれなりのお礼をします
Posted: 2018年12月12日(水) 23:06
by あたっしゅ
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;
}
Re: 2人のプレイヤーが3回勝つまでじゃんけんをして、勝負がついたならそれまでの勝負の履歴を表示するプログラムを作成してください。ヘッダファイルとcppファイルで分けてください。答えてくれた方にはそれなりのお礼をします
Posted: 2018年12月17日(月) 18:33
by usao
それなりのお礼って何だよw
通常は「ありがとう」を1回書くところを3回書きますとか?
オフトピック
雰囲気的には,
Webカメラあたりで2人のプレイヤがじゃんけんする様子を撮影して
勝敗を自動判定して履歴を収集するようなものを目指す感じだろうか?
Re: 2人のプレイヤーが3回勝つまでじゃんけんをして、勝負がついたならそれまでの勝負の履歴を表示するプログラムを作成してください。ヘッダファイルとcppファイルで分けてください。答えてくれた方にはそれなりのお礼をします
Posted: 2018年12月21日(金) 06:42
by あたっしゅ
ワイの回答に不満なら、「他の方、お願いします」とか、レスすればいいのに。
ワイのイメージとしては、
一人目の手を入力してください (G)グー (P)パー (C)チー: G
二人目の手を入力してください (G)グー (P)パー (C)チー: G
**** 引き分け ****
一人目の 0 勝 0 敗 1 引き分け
という感じでしょうか。
どうせ、課題の締め切りは過ぎているでしょうから、コミケが終わってから(2019 年になってから)、コードを書こうかな ?
Re: 2人のプレイヤーが3回勝つまでじゃんけんをして、勝負がついたならそれまでの勝負の履歴を表示するプログラムを作成してください。ヘッダファイルとcppファイルで分けてください。答えてくれた方にはそれなりのお礼をします
Posted: 2018年12月21日(金) 12:03
by usao
仕事でもないのに画像認識とかは,やっぱつれぇので,かわりにプレイヤーを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ファイルで分けてください。答えてくれた方にはそれなりのお礼をします
Posted: 2018年12月21日(金) 12:09
by usao
補足:
ああ,「ヘッダとcppがどうの」という条件があるのだった.そうだな…
まず,A.cppを用意して,↑のコードを全部書いて,"main"だけを何か別に関数名に変える.
次に,A.h を用意して,前記名前を変えた関数の宣言を書く.
でいいか.
Re: 2人のプレイヤーが3回勝つまでじゃんけんをして、勝負がついたならそれまでの勝負の履歴を表示するプログラムを作成してください。ヘッダファイルとcppファイルで分けてください。答えてくれた方にはそれなりのお礼をします
Posted: 2018年12月21日(金) 22:56
by あたっしゅ
.cpp ってのは、class を使えって意味では ?
ちゃんと親クラス作って、継承しないとw(
コミケ終わったらやりますよ。急ぎなら、
他の方に、まかせます)