こんにちは
作りかけなのですが行き詰ったので相談です
http://www1.axfc.net/uploader/so/2839442 PASS「arasiyama」
○のターンのフラグが立っているので対応した位置のアルファベットを押すと□から○になるはずなのですが、□にままで変わりません。
配列に数字は入っているみたいなのですがその後がわかりません。
アドバイスお願いします。
自分なりにOXゲームを作っているのですが……
Re: 自分なりにOXゲームを作っているのですが……
byausya関数の
以下三箇所のswitchについてですが、"dan1[OOKISA]"の部分が間違っています。
#defune OOKISA 3 とありますので、このままだと常にdan1[3]について判定してしまいます。
追伸
関数名のローマ字が間違っているようなので直しておきましょう。
int a;
for(a = 0; a<OOKISA; a++)
{
switch(dan1[OOKISA])
{
case NASI:
printf("□");
break;
case MARU:
printf("○");
break;
case BATU:
printf("×");
break;
}
}
#defune OOKISA 3 とありますので、このままだと常にdan1[3]について判定してしまいます。
追伸
関数名のローマ字が間違っているようなので直しておきましょう。
オフトピック
defineとconstってどっち使うのがいいんでしょ
Re: 自分なりにOXゲームを作っているのですが……
ありがとうございます。
switch(dan1[OOKISA])をswitch(dan1[a%OOKISA])と変えたところうまくいきました。
ローマ字はもっと気を付けるようにします。
switch(dan1[OOKISA])をswitch(dan1[a%OOKISA])と変えたところうまくいきました。
ローマ字はもっと気を付けるようにします。
オフトピック
経験が浅いので調べてみたりなどの意見なのですが、
constは変数や引数の時に少し違う機能になるみたいなので、
自分みたいな経験の浅い人間は機能が一つしかないdefineを使ったほうがいいと思います
constは変数や引数の時に少し違う機能になるみたいなので、
自分みたいな経験の浅い人間は機能が一つしかないdefineを使ったほうがいいと思います
Re: 自分なりにOXゲームを作っているのですが……
あれ、わざわざa%OOKISAにする必要ってあるんでしょうか?
OOKISAがフィールドの最大値である以上はaをOOKISAで割ってもa余るに決まってますのでそれでも確かに動きますが、それなら普通に添え字にはaを入れてあげた方が分かりやすいのでは?
分かりやすいかどうかは個人のこだわりの範疇なのかも知れませんが・・・
OOKISAがフィールドの最大値である以上はaをOOKISAで割ってもa余るに決まってますのでそれでも確かに動きますが、それなら普通に添え字にはaを入れてあげた方が分かりやすいのでは?
分かりやすいかどうかは個人のこだわりの範疇なのかも知れませんが・・・
Re: 自分なりにOXゲームを作っているのですが……
offtopic部分に反応。
ただし,a[N]はa[10]と一緒ではなく,実行時に長さNの配列を作ることになります。
# C99ならNはconstでなくても動く。
C++におけるconstは,状況によっては定数を作り出します。
このため,とは真に等しくなります。
# 当然,constが外部結合を持つ,定義されていない対象に使われている場合は変更不可能なオブジェクト扱いです。
C++において,定数には#defineではなくconstまたはenum使うのが鉄則です。
Cにおいては
今回だと,NASI/MARU/BATUはenumの方がよいと思います (これらは関連があるため)。
ぱにしん さんが書きました:defineとconstってどっち使うのがいいんでしょ
Cにおけるconstは,対象が「変更不可能なオブジェクト」であることを表すもので,「定数」を表す物ではありません。 というコード片は,C99ではvalidですがC90/C95ではinvalidなコードになります。嵐山二世 さんが書きました:constは変数や引数の時に少し違う機能になるみたいなので、
自分みたいな経験の浅い人間は機能が一つしかないdefineを使ったほうがいいと思います
ただし,a[N]はa[10]と一緒ではなく,実行時に長さNの配列を作ることになります。
# C99ならNはconstでなくても動く。
C++におけるconstは,状況によっては定数を作り出します。
このため,とは真に等しくなります。
# 当然,constが外部結合を持つ,定義されていない対象に使われている場合は変更不可能なオブジェクト扱いです。
C++において,定数には#defineではなくconstまたはenum使うのが鉄則です。
Cにおいては
- 列挙型がふさわしい定数にはenumを使う
- 列挙型がふさわしくない定数の定義には#defineを使う
- オブジェクトが変更不可能であることを示すためにはconstを使う
今回だと,NASI/MARU/BATUはenumの方がよいと思います (これらは関連があるため)。
Re: 自分なりにOXゲームを作っているのですが……
>YuOさん
解説ありがとうございます。
C++とCではconstは違う意味を持ってるんですね。いきなりC++に手を出したからか知りませんでした。
もう一回入門書読んだりしてキッチリ調べ直すことにします。
解説ありがとうございます。
C++とCではconstは違う意味を持ってるんですね。いきなりC++に手を出したからか知りませんでした。
もう一回入門書読んだりしてキッチリ調べ直すことにします。