じゃんけんゲーム

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

じゃんけんゲーム

#1

投稿記事 by situmon » 16年前

#include "include/DxLib.h"
int pzyoutai = 0;
int azyoutai = 0;
int White   = GetColor( 255 , 255 , 255 ) ; // 白色の値を取得
void janken(){
    DrawString(  50,  100, "じゃんけんゲーム" , White);            //文字列表示
        if( CheckHitKey( KEY_INPUT_A ) == 1 ){
        DrawString(  80,  120, "パー" , White);            //文字列表示
        pzyoutai = 1;
		}
        if( CheckHitKey( KEY_INPUT_B ) == 1 ){
        DrawString(  80,  120, "グー" , White);            //文字列表示
        pzyoutai = 2;
		}
        if( CheckHitKey( KEY_INPUT_C ) == 1 ){
        DrawString(  80,  120, "チョキ" , White);            //文字列表示
        pzyoutai = 3;
		}
        	azyoutai = GetRand(3);
}

void hantei(){
	if(pzyoutai = 1 && azyoutai =2)
        DrawString(  80,  150, "あいてはグーです。" , White);            //文字列表示
        DrawString(  80,  180, "あなたのかちです。" , White);            //文字列表示
WaitKey() ; 
	if(pzyoutai = 1 && azyoutai =3)
        DrawString(  80,  150, "あいてはチョキです。" , White);            //文字列表示
        DrawString(  80,  180, "あなたのまけです。" , White);            //文字列表示
WaitKey() ; 
	if(pzyoutai = 1 && azyoutai =1)
        DrawString(  80,  150, "あいてはパーです。" , White);            //文字列表示
        DrawString(  80,  180, "あなたとあいこです。" , White);            //文字列表示
WaitKey() ; 
	if(pzyoutai = 2 && azyoutai =2)
        DrawString(  80,  150, "あいてはグーです。" , White);            //文字列表示
        DrawString(  80,  180, "あなたのあいこです。" , White);            //文字列表示
WaitKey() ; 
	if(pzyoutai = 2 && azyoutai =3)
        DrawString(  80,  150, "あいてはチョキです。" , White);            //文字列表示
        DrawString(  80,  180, "あなたのかちです。" , White);            //文字列表示
WaitKey() ; 
	if(pzyoutai = 2 && azyoutai =1)
        DrawString(  80,  150, "あいてはパーです。" , White);            //文字列表示
        DrawString(  80,  180, "あなたのまけです。" , White);            //文字列表示
WaitKey() ; 
	if(pzyoutai = 3 && azyoutai =2)
        DrawString(  80,  150, "あいてはグーです。" , White);            //文字列表示
        DrawString(  80,  180, "あなたのまけです。" , White);            //文字列表示
WaitKey() ; 
	if(pzyoutai = 3 && azyoutai =3)
        DrawString(  80,  150, "あいてはチョキです。" , White);            //文字列表示
        DrawString(  80,  180, "あなたとあいこです。" , White);            //文字列表示
WaitKey() ; 
	if(pzyoutai = 3 && azyoutai =1)
        DrawString(  80,  150, "あいてはパーです。" , White);            //文字列表示
        DrawString(  80,  180, "あなたのかちです。" , White);            //文字列表示
WaitKey() ; 
}
	


int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
        ChangeWindowMode( TRUE ) ; // ウインドウモードに変更
        if( DxLib_Init() == -1 ) return -1; // DXライブラリ初期化処理 エラーが起きたら終了

janken();

hantei();

        DxLib_End() ;           // DXライブラリ使用の終了処理
        return 0 ;              // ソフトの終了
}
としたのですが
test.cpp(23) : error C2106: '=' : 左のオペランドが、左辺値になっていません。
とwarning C4305: '=' : 'int' から 'bool' へ切り詰めます。
という警告がでてしまいました。
なんとなるわかるようなないようななのですが、
理由がわかりません。

box

Re:じゃんけんゲーム

#2

投稿記事 by box » 16年前

>	if(pzyoutai = 1 && azyoutai =2)

左右両辺が等しいかどうかを調べるには、等号が2個必要です。

situmon

Re:じゃんけんゲーム

#3

投稿記事 by situmon » 16年前

またまちがえてしまいました。
これでは代入になってしまいますね。

situmon

Re:じゃんけんゲーム

#4

投稿記事 by situmon » 16年前

#include "include/DxLib.h"
int pzyoutai = 0;
int azyoutai = 0;
int White   = GetColor( 255 , 255 , 255 ) ; // 白色の値を取得
void janken(){
    DrawString(  50,  100, "じゃんけんゲーム" , White);            //文字列表示
        if( CheckHitKey( KEY_INPUT_A ) == 1 ){
        DrawString(  80,  120, "パー" , White);            //文字列表示
        pzyoutai = 1;
		}
        if( CheckHitKey( KEY_INPUT_B ) == 1 ){
        DrawString(  80,  120, "グー" , White);            //文字列表示
        pzyoutai = 2;
		}
        if( CheckHitKey( KEY_INPUT_C ) == 1 ){
        DrawString(  80,  120, "チョキ" , White);            //文字列表示
        pzyoutai = 3;
		}
        	azyoutai = GetRand(3);
}

void hantei(){
	if(pzyoutai == 1 && azyoutai ==2)
        DrawString(  80,  150, "あいてはグーです。" , White);            //文字列表示
        DrawString(  80,  180, "あなたのかちです。" , White);            //文字列表示
WaitKey() ; 
	if(pzyoutai == 1 && azyoutai ==3)
        DrawString(  80,  150, "あいてはチョキです。" , White);            //文字列表示
        DrawString(  80,  180, "あなたのまけです。" , White);            //文字列表示
WaitKey() ; 
	if(pzyoutai == 1 && azyoutai ==1)
        DrawString(  80,  150, "あいてはパーです。" , White);            //文字列表示
        DrawString(  80,  180, "あなたとあいこです。" , White);            //文字列表示
WaitKey() ; 
	if(pzyoutai == 2 && azyoutai ==2)
        DrawString(  80,  150, "あいてはグーです。" , White);            //文字列表示
        DrawString(  80,  180, "あなたのあいこです。" , White);            //文字列表示
WaitKey() ; 
	if(pzyoutai == 2 && azyoutai ==3)
        DrawString(  80,  150, "あいてはチョキです。" , White);            //文字列表示
        DrawString(  80,  180, "あなたのかちです。" , White);            //文字列表示
WaitKey() ; 
	if(pzyoutai == 2 && azyoutai ==1)
        DrawString(  80,  150, "あいてはパーです。" , White);            //文字列表示
        DrawString(  80,  180, "あなたのまけです。" , White);            //文字列表示
WaitKey() ; 
	if(pzyoutai == 3 && azyoutai ==2)
        DrawString(  80,  150, "あいてはグーです。" , White);            //文字列表示
        DrawString(  80,  180, "あなたのまけです。" , White);            //文字列表示
WaitKey() ; 
	if(pzyoutai == 3 && azyoutai ==3)
        DrawString(  80,  150, "あいてはチョキです。" , White);            //文字列表示
        DrawString(  80,  180, "あなたとあいこです。" , White);            //文字列表示
WaitKey() ; 
	if(pzyoutai == 3 && azyoutai ==1)
        DrawString(  80,  150, "あいてはパーです。" , White);            //文字列表示
        DrawString(  80,  180, "あなたのかちです。" , White);            //文字列表示
WaitKey() ; 
}
	


int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
        ChangeWindowMode( TRUE ) ; // ウインドウモードに変更
        if( DxLib_Init() == -1 ) return -1; // DXライブラリ初期化処理 エラーが起きたら終了

janken();

hantei();

        DxLib_End() ;           // DXライブラリ使用の終了処理
        return 0 ;              // ソフトの終了
}
ですね。
エラーがなくなりましたが
文字が表示されませんでした。
ですが処理は終わったみたいでDXライブラリが終了しました。

ランド

Re:じゃんけんゲーム

#5

投稿記事 by ランド » 16年前

>azyoutai = GetRand(3);
たしかGetRand(3)は0,1,2,3のいずれかの値を入手だったはずです。
0が選ばれてどの条件式も真にならなかったのではないでしょうか。
azyoutai = GetRand(2)+1;にすれば正常に動作すると思います。

Justy

Re:じゃんけんゲーム

#6

投稿記事 by Justy » 16年前


>文字が表示されませんでした

 ソースを見る限り、文字の表示はされてるはずですよ。
 ・・・多分黒色で。


# GetColor()は DxLib_Init()の後に使わないと正しく取得できません。

situmon

Re:じゃんけんゲーム

#7

投稿記事 by situmon » 16年前

#include "include/DxLib.h"
int pzyoutai = 0;
int azyoutai = 0;
void janken(int White){
    DrawString(  50,  100, "じゃんけんゲーム" , White);            //文字列表示
        if( CheckHitKey( KEY_INPUT_A ) == 1 ){
        DrawString(  80,  120, "パー" , White);            //文字列表示
        pzyoutai = 1;
		}
        if( CheckHitKey( KEY_INPUT_B ) == 1 ){
        DrawString(  80,  120, "グー" , White);            //文字列表示
        pzyoutai = 2;
		}
        if( CheckHitKey( KEY_INPUT_C ) == 1 ){
        DrawString(  80,  120, "チョキ" , White);            //文字列表示
        pzyoutai = 3;
		}
        	azyoutai = GetRand(2)+1;
}

void hantei(int White){
	if(pzyoutai == 1 && azyoutai ==2)
        DrawString(  80,  150, "あいてはグーです。" , White);            //文字列表示
        DrawString(  80,  180, "あなたのかちです。" , White);            //文字列表示
WaitKey() ; 
	if(pzyoutai == 1 && azyoutai ==3)
        DrawString(  80,  150, "あいてはチョキです。" , White);            //文字列表示
        DrawString(  80,  180, "あなたのまけです。" , White);            //文字列表示
WaitKey() ; 
	if(pzyoutai == 1 && azyoutai ==1)
        DrawString(  80,  150, "あいてはパーです。" , White);            //文字列表示
        DrawString(  80,  180, "あなたとあいこです。" , White);            //文字列表示
WaitKey() ; 
	if(pzyoutai == 2 && azyoutai ==2)
        DrawString(  80,  150, "あいてはグーです。" , White);            //文字列表示
        DrawString(  80,  180, "あなたのあいこです。" , White);            //文字列表示
WaitKey() ; 
	if(pzyoutai == 2 && azyoutai ==3)
        DrawString(  80,  150, "あいてはチョキです。" , White);            //文字列表示
        DrawString(  80,  180, "あなたのかちです。" , White);            //文字列表示
WaitKey() ; 
	if(pzyoutai == 2 && azyoutai ==1)
        DrawString(  80,  150, "あいてはパーです。" , White);            //文字列表示
        DrawString(  80,  180, "あなたのまけです。" , White);            //文字列表示
WaitKey() ; 
	if(pzyoutai == 3 && azyoutai ==2)
        DrawString(  80,  150, "あいてはグーです。" , White);            //文字列表示
        DrawString(  80,  180, "あなたのまけです。" , White);            //文字列表示
WaitKey() ; 
	if(pzyoutai == 3 && azyoutai ==3)
        DrawString(  80,  150, "あいてはチョキです。" , White);            //文字列表示
        DrawString(  80,  180, "あなたとあいこです。" , White);            //文字列表示
WaitKey() ; 
	if(pzyoutai == 3 && azyoutai ==1)
        DrawString(  80,  150, "あいてはパーです。" , White);            //文字列表示
        DrawString(  80,  180, "あなたのかちです。" , White);            //文字列表示
WaitKey() ; 
}
	


int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
        ChangeWindowMode( TRUE ) ; // ウインドウモードに変更
        if( DxLib_Init() == -1 ) return -1; // DXライブラリ初期化処理 エラーが起きたら終了

int White;
    White = GetColor( 255 , 255 , 255 ) ;                    //色の取得



janken(White);

hantei(White);

ScreenFlip();//裏画面反映

        DxLib_End() ;           // DXライブラリ使用の終了処理
        return 0 ;              // ソフトの終了
}
と書き換えることによりなんとか文字を表示することができましたが、
最初から あなたがかちです。 と表示されてしまいます。
それにあいてはパーですなどが表示されません。

non

Re:じゃんけんゲーム

#8

投稿記事 by non » 16年前

> if(pzyoutai == 1 && azyoutai ==2)
> DrawString( 80, 150, "あいてはグーです。" , White); //文字列表示
> DrawString( 80, 180, "あなたのかちです。" , White); //文字列表示

DXライブラリは勉強したことがないので、わかりませんが、文法の話として
ifが成立したときに実行する文は1行だけですか、それとも2行ですか?

木霊

Re:じゃんけんゲーム

#9

投稿記事 by 木霊 » 16年前

 boxさんの指摘で既に直ってるんですが、代入(=)と比較(==)を良く間違えるのであれば、
if文の中だけ数字と変数の場所を逆にするようにしてみてください。

 こんな感じです。

if ( 1 == pzyoutai && 2 == azyoutai ) {・・・}

 こうしておけば=を一つしか書いてなかった時にはコンパイル時にエラーが出るので間違いに気付けますよ。

 1 == pzyoutai・・・○ 1とpzyoutai が同じ値かを比較する事はできます。
 pzyoutai = 1・・・○ pzyoutaiに1を代入する事もできます。
 1 = pzyoutai・・・× でも1にpzyoutaiを代入する事はできません。
 だからエラーが出ます。
 一度自分で確かめてみてください。

situmon

Re:じゃんけんゲーム

#10

投稿記事 by situmon » 16年前

< ifが成立したときに実行する文は1行だけですか、それとも2行ですか?
2行です。

box

Re:じゃんけんゲーム

#11

投稿記事 by box » 16年前

慣れないうちは、

if (...) {
	// if文が成立したとき
}
else {
	// if文が成立しなかったとき
}

のように、実行する文の数に関係なく、必ず { と } で囲う方がよいと思います。

conio

Re:じゃんけんゲーム

#12

投稿記事 by conio » 16年前

●situmonさんへ
-----------------------------------------------------------------------------------
>> if(pzyoutai == 1 && azyoutai ==2) 
>> DrawString( 80, 150, "あいてはグーです。" , White); //文字列表示 
>> DrawString( 80, 180, "あなたのかちです。" , White); //文字列表示 
>>DXライブラリは勉強したことがないので、わかりませんが、文法の話として 
>>ifが成立したときに実行する文は1行だけですか、それとも2行ですか?
 
>>  < ifが成立したときに実行する文は1行だけですか、それとも2行ですか? 
>>2行です。  
------------------------------------------------------------------------------------


	if(pzyoutai == 1 && azyoutai ==2)
        DrawString(  80,  150, "あいてはグーです。" , White);            //文字列表示
        DrawString(  80,  180, "あなたのかちです。" , White);            //文字列表示

ifが成立した時に、2行分の文を実行したいのであれば、{}で閉じないと駄目です。
上の場合、if文の成立によって判定されるのは"あいてはグーです"と書いてある行だけです。
"あなたのかちです"という行はif分の判定に含まれません。

2行ともif分の判定により実行させたいのであれば、

	if(pzyoutai == 1 && azyoutai ==2)
{
        DrawString(  80,  150, "あいてはグーです。" , White);            //文字列表示
        DrawString(  80,  180, "あなたのかちです。" , White);            //文字列表示
}
と書く必要があります。
他の部分も2行ずつ実行させたいのであれば、同じように{}で囲めばいいと思います。

situmon

Re:じゃんけんゲーム

#13

投稿記事 by situmon » 16年前

みなさまどうもありがとうございました。
成功しました!
今度は10回勝負ができるようにしたり
switch文を使ったりしてコードをより簡潔にしたいです。
最初は{}を付け忘れないように、と==をしっかりと覚えて今後、
このようなミスが内容に努めたいです。
成功したコードを表示しておきます。
本当にどうもありがとうございました。
#include "include/DxLib.h"
int pzyoutai = 0;
int azyoutai = 0;
void janken(int White){
    DrawString(  50,  20, "じゃんけんゲーム" , White);            //文字列表示
    DrawString(  50,  40, "パーならA、グーならB、チョキならCキーを押してください。" , White);            //文字列表示
    DrawString(  50,  60, "A、B、C以外のキーを押すと終了します。" , White);            //文字列表示

WaitKey() ; 

        if( CheckHitKey( KEY_INPUT_A ) == 1 ){
        DrawString(  80,  120, "パー" , White);            //文字列表示
        pzyoutai = 1;
		}
        if( CheckHitKey( KEY_INPUT_B ) == 1 ){
        DrawString(  80,  120, "グー" , White);            //文字列表示
        pzyoutai = 2;
		}
        if( CheckHitKey( KEY_INPUT_C ) == 1 ){
        DrawString(  80,  120, "チョキ" , White);            //文字列表示
        pzyoutai = 3;
		}
        	azyoutai = GetRand(2)+1;
}

void hantei(int White){
	if(pzyoutai == 1 && azyoutai ==2){
        DrawString(  80,  150, "あいてはグーです。" , White);            //文字列表示
        DrawString(  80,  180, "あなたのかちです。" , White);            //文字列表示
WaitKey() ; 
	}
	if(pzyoutai == 1 && azyoutai ==3){
        DrawString(  80,  150, "あいてはチョキです。" , White);            //文字列表示
        DrawString(  80,  180, "あなたのまけです。" , White);            //文字列表示
WaitKey() ; 
	}
	if(pzyoutai == 1 && azyoutai ==1){
        DrawString(  80,  150, "あいてはパーです。" , White);            //文字列表示
        DrawString(  80,  180, "あなたとあいこです。" , White);            //文字列表示
WaitKey() ; 
	}
	if(pzyoutai == 2 && azyoutai ==2){
        DrawString(  80,  150, "あいてはグーです。" , White);            //文字列表示
        DrawString(  80,  180, "あなたのあいこです。" , White);            //文字列表示
WaitKey() ; 
	}
	if(pzyoutai == 2 && azyoutai ==3){
        DrawString(  80,  150, "あいてはチョキです。" , White);            //文字列表示
        DrawString(  80,  180, "あなたのかちです。" , White);            //文字列表示
WaitKey() ; 
	}
	if(pzyoutai == 2 && azyoutai ==1){
        DrawString(  80,  150, "あいてはパーです。" , White);            //文字列表示
        DrawString(  80,  180, "あなたのまけです。" , White);            //文字列表示
WaitKey() ;
	}
	if(pzyoutai == 3 && azyoutai ==2){
        DrawString(  80,  150, "あいてはグーです。" , White);            //文字列表示
        DrawString(  80,  180, "あなたのまけです。" , White);            //文字列表示
WaitKey() ; 
	}
	if(pzyoutai == 3 && azyoutai ==3){
        DrawString(  80,  150, "あいてはチョキです。" , White);            //文字列表示
        DrawString(  80,  180, "あなたとあいこです。" , White);            //文字列表示
WaitKey() ; 
	}
	if(pzyoutai == 3 && azyoutai ==1){
        DrawString(  80,  150, "あいてはパーです。" , White);            //文字列表示
        DrawString(  80,  180, "あなたのかちです。" , White);            //文字列表示
WaitKey() ; 
	}
}
	


int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
        ChangeWindowMode( TRUE ) ; // ウインドウモードに変更
        if( DxLib_Init() == -1 ) return -1; // DXライブラリ初期化処理 エラーが起きたら終了

int White;
    White = GetColor( 255 , 255 , 255 ) ;                    //色の取得

janken(White);

hantei(White);

ScreenFlip();//裏画面反映

        DxLib_End() ;           // DXライブラリ使用の終了処理
        return 0 ;              // ソフトの終了
}

situmon

Re:じゃんけんゲーム

#14

投稿記事 by situmon » 16年前

みなさまどうもありがとうございました。
成功しました!
今度は10回勝負ができるようにしたり
switch文を使ったりしてコードをより簡潔にしたいです。
最初は{}を付け忘れないように、と==をしっかりと覚えて今後、
このようなミスが内容に努めたいです。
成功したコードを表示しておきます。
本当にどうもありがとうございました。
#include "include/DxLib.h"
int pzyoutai = 0;
int azyoutai = 0;
void janken(int White){
    DrawString(  50,  20, "じゃんけんゲーム" , White);            //文字列表示
    DrawString(  50,  40, "パーならA、グーならB、チョキならCキーを押してください。" , White);            //文字列表示
    DrawString(  50,  60, "A、B、C以外のキーを押すと終了します。" , White);            //文字列表示

WaitKey() ; 

        if( CheckHitKey( KEY_INPUT_A ) == 1 ){
        DrawString(  80,  120, "パー" , White);            //文字列表示
        pzyoutai = 1;
		}
        if( CheckHitKey( KEY_INPUT_B ) == 1 ){
        DrawString(  80,  120, "グー" , White);            //文字列表示
        pzyoutai = 2;
		}
        if( CheckHitKey( KEY_INPUT_C ) == 1 ){
        DrawString(  80,  120, "チョキ" , White);            //文字列表示
        pzyoutai = 3;
		}
        	azyoutai = GetRand(2)+1;
}

void hantei(int White){
	if(pzyoutai == 1 && azyoutai ==2){
        DrawString(  80,  150, "あいてはグーです。" , White);            //文字列表示
        DrawString(  80,  180, "あなたのかちです。" , White);            //文字列表示
WaitKey() ; 
	}
	if(pzyoutai == 1 && azyoutai ==3){
        DrawString(  80,  150, "あいてはチョキです。" , White);            //文字列表示
        DrawString(  80,  180, "あなたのまけです。" , White);            //文字列表示
WaitKey() ; 
	}
	if(pzyoutai == 1 && azyoutai ==1){
        DrawString(  80,  150, "あいてはパーです。" , White);            //文字列表示
        DrawString(  80,  180, "あなたとあいこです。" , White);            //文字列表示
WaitKey() ; 
	}
	if(pzyoutai == 2 && azyoutai ==2){
        DrawString(  80,  150, "あいてはグーです。" , White);            //文字列表示
        DrawString(  80,  180, "あなたのあいこです。" , White);            //文字列表示
WaitKey() ; 
	}
	if(pzyoutai == 2 && azyoutai ==3){
        DrawString(  80,  150, "あいてはチョキです。" , White);            //文字列表示
        DrawString(  80,  180, "あなたのかちです。" , White);            //文字列表示
WaitKey() ; 
	}
	if(pzyoutai == 2 && azyoutai ==1){
        DrawString(  80,  150, "あいてはパーです。" , White);            //文字列表示
        DrawString(  80,  180, "あなたのまけです。" , White);            //文字列表示
WaitKey() ;
	}
	if(pzyoutai == 3 && azyoutai ==2){
        DrawString(  80,  150, "あいてはグーです。" , White);            //文字列表示
        DrawString(  80,  180, "あなたのまけです。" , White);            //文字列表示
WaitKey() ; 
	}
	if(pzyoutai == 3 && azyoutai ==3){
        DrawString(  80,  150, "あいてはチョキです。" , White);            //文字列表示
        DrawString(  80,  180, "あなたとあいこです。" , White);            //文字列表示
WaitKey() ; 
	}
	if(pzyoutai == 3 && azyoutai ==1){
        DrawString(  80,  150, "あいてはパーです。" , White);            //文字列表示
        DrawString(  80,  180, "あなたのかちです。" , White);            //文字列表示
WaitKey() ; 
	}
}
	


int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
        ChangeWindowMode( TRUE ) ; // ウインドウモードに変更
        if( DxLib_Init() == -1 ) return -1; // DXライブラリ初期化処理 エラーが起きたら終了

int White;
    White = GetColor( 255 , 255 , 255 ) ;                    //色の取得

janken(White);

hantei(White);

ScreenFlip();//裏画面反映

        DxLib_End() ;           // DXライブラリ使用の終了処理
        return 0 ;              // ソフトの終了
}

組木紙織

Re:じゃんけんゲーム

#15

投稿記事 by 組木紙織 » 16年前

>みなさまどうもありがとうございました。
>成功しました!

完成したようでよかったです。


私からvoid hantei(int White)の部分で二つアドバイスを

1:長さが少し長いと感じませんか?
もう少し短く出来るので考えてみたらいかがでしょうか?

2:表示の色を変えることが出来ますよね。でも変数名がWhiteだと読んでる人が勘違いします。
もっと適切な変数名を考えてみたらどうでしょうか?

kazuoni

Re:じゃんけんゲーム

#16

投稿記事 by kazuoni » 16年前

自分からも・・・おめでとうございます^^
進歩してる感があっていいですねw
そうですねー。確かに
相手の出したもの、勝負を全とおり書くのは長いですね。
あとWaitKey()も。
作るゲームが大きくなっていくと、このままだとものすごいことになって、
自分でもどこがどうなってるのかわからなくなってしまう気がします。
早い段階からコードを簡潔に書くように工夫することはとても大切かと^^

がんばってください!

木霊

Re:じゃんけんゲーム

#17

投稿記事 by 木霊 » 16年前

 とりあえず完成したみたいでなによりです。

 上の御二方も今後へのアドバイスをされているので自分からも・・・

1・変数のスコープ(使える範囲)を理解して、グローバル変数を控える(極力使わない)
  グローバル変数はどこからでも使えるので便利ですが、同時にどこからでも変更できるので
  思わぬバグの温床になり、しかも駆除しにくいのでしっかり管理できないなら使わない方がいいです。

2・(1とは逆に)whiteのように値を変更する事のない変数はconstをつけて定数にするか、
  #defineでマクロ化しておく。(個人的には定数化を勧めます)

3・変数の横にコメントで「何に使うか」と「取る値の範囲」を書いておく。(フラグなら説明も)
  (前トピまでのsitumonさんの質問内容をみると、この部分をほとんど把握してない様子なので。)
  他人のコードを改変するならば、これをおざなりにすると何をやってるか全く分からないので
  改変する前に「何に使うか」ぐらいは把握するようにしないと同じことの繰り返しになります。

4・インデント(字下げ)はきっちりと。
  ところどころインデントがおかしいので少し見難いです。
  処理がif文の{}の中か外かが分かりくいので、それぐらいは分かりやすくするようにしてください。

 それでは本命のSTG作成、頑張ってください。

P.S.
 中学生という事は来月には期末試験ですよね。
 そっちの方も頑張ってくださいね。

閉鎖

“C言語何でも質問掲示板” へ戻る