ページ 1 / 1
野球の点数について
Posted: 2012年12月22日(土) 01:37
by みじんこ
野球の点数を実現したいのですが、どのように書けばいいでしょうか。
ランナー2塁の状況で2ベースヒット(2BHIT == 2)を打った場合みなさんならどのようにかきますか?
アドバイスお願いします。
いま考えているのがbase[8]を作り、1塁2塁3塁をbase[1]base[2]base[3]、ランナーがいれば1いなければ0。
コード:
base[1] = 0;
base[2] = 1;
base[3] = 0;
if(hitType == 2BHIT){
for(i=1; i<4; i++){
base[i + 2BHIT] = base[i];
}
base[2BHIT] = 1;
for(i=4; i<7; i++){
if(base[i]==1){
score++;
}
}
Re: 野球の点数について
Posted: 2012年12月22日(土) 02:52
by Poco
どこまで細かく野球をシミュレートするかにもよりますが、
一番単純なケースだと、私なら8ビットの領域を用意し、下位4ビットをランナーの情報、
ヒットを打ったら進塁数分左シフトさせ、上位4ビットの1の数だけ点数として加算するようなコードをかくと思います。
Re: 野球の点数について
Posted: 2012年12月22日(土) 13:33
by みじんこ
Poco さんが書きました:どこまで細かく野球をシミュレートするかにもよりますが、
一番単純なケースだと、私なら8ビットの領域を用意し、下位4ビットをランナーの情報、
ヒットを打ったら進塁数分左シフトさせ、上位4ビットの1の数だけ点数として加算するようなコードをかくと思います。
ありがとうございます。
上位4ビットの1の数をとりだすのは、どのようにやるのがベストでしょうか。
よろしくお願いします。
コード:
unsigned char runner;
runnner &= 11110000;
nunofbit(runnner);
int nunofbit(){
//1の数を返す
}
Re: 野球の点数について
Posted: 2012年12月22日(土) 15:42
by nil
僕ならこうします
コード:
unsigned char x = 0;
// 上位4ビットの設定
for( int i=0; i<4; i++ ) x |= (1<<(i+4));
// 取り出し
bool result[4] = {};
for( int i=0; i<4; i++ ) result[i] = x&(1<<(i+4));
for( int i=0; i<4; i++ ) cout << result[i] << endl;