![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
オセロゲームを作ってますが、オセロの石はただ置けばよいものではなく、他の石と接触している場所でないといけないですよね。だから、いきなり角に石を置く事ができないわけです。
隣に石があるか調べるには基本的には、左・右・上・下・左上・右上・左下・右下と8箇所ですが、端だと5箇所箇所となり、更に角になると3箇所となるわけです。
それぞれ石が置けるかを調べるために関数の一部にこのようなもの作って見ました。
でも、端に接触するマスの座標を指定しても、置けないはずなのに、いしが置けてしまいます。
動解決すればよいかおしえてください。
NGだと0を返し、OKだと1を返します。
#defien OTHELLO_NON 0
int Contact(int data[][GOBAN], int tate, int yoko )
{
int signal = 0;
if(data[tate][yoko - 1] != OTHELLO_NON){ signal = 1; }
if(data[tate][yoko + 1] != OTHELLO_NON){ signal = 1; }
if(data[tate - 1][yoko - 1] != OTHELLO_NON){ signal = 1; }
if(data[tate - 1][yoko] != OTHELLO_NON){ signal = 1; }
if(data[tate - 1][yoko + 1] != OTHELLO_NON){ signal = 1; }
if(data[tate + 1][yoko - 1] != OTHELLO_NON){ signal = 1; }
if(data[tate + 1][yoko] != OTHELLO_NON){ signal = 1; }
if(data[tate + 1][yoko + 1] != OTHELLO_NON){ signal = 1; }
return signal;
}
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
data[]の
入力処理とか他の部分は見せてくれないのか、、。
(==;
まあ、いいや。
予想です。、
たぶん、data構造体の初期化忘れが原因。
for (int iCntX =0; iCntX< xxx; iCntX++) {
for (int iCntY =0; iCntY< YYY; iCntY++) {
data[iCntX][iCntY] = (初期値);
}
}
こんな感じのコードちゃんと書いてますか?
書かないと、メモリ上のゴミデータ読んじゃうよ。
No.1
- 回答日時:
> 石が置けるかを調べる
まず「すでに相手、または自分の石があると不可」
これがクリアされたら
「周囲8個に相手、または自分の石が無いと不可」
ということですよね。
(さらには「相手を挟む石」も必要でしょうけど)
2次元配列は外周1列余計に宣言したほうが、チェックが単純化できます。
オセロの盤面って8×8ですから10×10で宣言して、添字の範囲を絞って、内側の8×8のみを使用。
もちろん初期値セットは外周部も含め「石なし」で。
これならチェック対象は常に周囲8セルになりますので
「周辺で対象外となるセルが意図しない値を返す」ことが回避できます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- FX・外国為替取引 mql4のコンパイルエラー箇所の修正お願いします。 1 2023/03/15 16:14
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- その他(プログラミング・Web制作) Python - Excel で Webからデータを連続取得したいのですが エラーが出ます 1 2023/07/06 20:08
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- Visual Basic(VBA) vbaのループ処理について 6 2022/05/06 15:35
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# pythonのファイルの並びでの読み込みとリストについて 4 2022/04/13 03:52
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ポインター引数の関数でコンパ...
-
stable diffusionのエラー
-
エクセルVBA:日付データの変換...
-
テキストファイルの結合について
-
printfの%eで指数部分の桁数を...
-
C言語の勉強しています。すみま...
-
【Excel VBA】10進数を2進数に...
-
C#でのswitch文
-
オセロゲーム 2次元配列で困...
-
&ReadParseでフォームの値が取...
-
【sed】変数に設定したコマンド...
-
C言語の勉強しています。すみま...
-
'dataType' 引数を Null にする...
-
10Mバイトて文字数に すると何...
-
UTF-8で5~6バイトになる文字コ...
-
char str[256]の256の意味は?
-
COBOLのCOMP形式について
-
Excel VBA メール作成について ...
-
バイナリとBCDコード
-
Excel 1セル当りの文字数が2...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ポインター引数の関数でコンパ...
-
stable diffusionのエラー
-
printfの%eで指数部分の桁数を...
-
【Excel VBA】10進数を2進数に...
-
int型(2バイト)データの分割
-
pythonでDBのカラム名で取得し...
-
エクセルVBA:日付データの変換...
-
C#でのswitch文
-
linuxのシェルでファイル名に先...
-
C言語の構造体にてバブルソート...
-
c言語での wavファイルの編集(...
-
'dataType' 引数を Null にする...
-
H8/36064を使ったシリアル通信...
-
オセロゲーム 2次元配列で困...
-
10個の実数に対する降順ソート...
-
c言語の多次元配列で1から100ま...
-
c言語 配列から数字だけをint型...
-
matlabのソースコードをpython...
-
Cのプログラムがどうしても動き...
-
テキストファイルの結合について
おすすめ情報