15×15の碁盤の上で、5つ先に同じマークを縦横斜めどれでも並べたら勝ちなゲームのコードで、勝利判定の部分がわからないので教えていただけると嬉しいです。
同じマークが5つ揃ったら1に返すコードのつもりで考えています。
自分なりに作ってみたのですが、縦5つの時と、横5つの時と、左上がりの斜めのの時の判定は合ってると思っています。間違っていたら指摘をお願いします。
また、右あがりの時の判定はどう書けば良いでしょうか。
int judge(int Row, int Column, char Board[15][15]){ int i,j; for(i = Row - 4; i<=14; i++){ for(j = Column -4; j <=14; j++){ if(i >= 0 && i <= 10 && j >= 0 && j <= 14){ if((Board[i][j] == '@' && Board[i+1][j] == '@' && Board[i+2][j] == '@' && Board[i+3][j] == '@' && Board[i+4][j] == '@')||(Board[i][j] == 'o' && Board[i+1][j] == 'o' && Board[i+2][j] == 'o' &&Board[i+3][j] == 'o' &&Board[i+4][j] == 'o')){ return 1; } } if(i>= 0 && i <= 14 && j >= 0 && j <= 10){ if((Board[i][j]== '@' && Board[i][j+1] == '@' && Board[i][j+2] == '@' && Board[i][j+3] == '@' && Board[i][j+4] == ; '@')||(Board[i][j] == 'o' && Board[i][j+1] == 'o' && Board[i][j+2] == 'o' &&Board[i][j+3] == 'o' &&Board[i][j+4] == 'o')){ return 1; } } if(i >= 0 && i <= 10 && j >= 0 && j<= 10){ if((Board[i][j] == '@' && Board[i+1][i+1] == '@' && Board[i+2][j+2] == '@' && Board[i+3][j+3] == '@' && Board[i+4][j+4] =='@')||(Board[i][j] =='o' && Board[i+1][j+1] == 'o' && Board[i+2][j+2] == 'o' && Board[i+3][j+3] == 'o' && Board[i+4][j+4] == 'o')){ return 1; } }
c言語初心者でもあり、至らない点等あるかもしれませんが、よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/31 13:15
2020/08/31 13:56
2020/08/31 14:05
2020/08/31 14:29