プロが教えるわが家の防犯対策術!

五目並べのプログラムを配列と関数を使ってつくりたいのですが、どなたか教えていただけますか?

あと作る際に次の条件を入れてつくれますでしょうか?
1:斜めの判定を入れる
2:手札を切る部分を関数でつくる
3:3×3を禁止にするプログラムを入れる

A 回答 (1件)

別に普通に2次元配列でできるでしょう。


0..なし
1..黒
2..白
3..範囲外
という感じで。

>1:斜めの判定を入れる
forでもwhileでも使えば出来ると思いますが。縦、横の判定と変わるところはないです。

>2:手札を切る部分を関数でつくる
五目並べに手札ってありましたっけ?

>3:3×3を禁止にするプログラムを入れる
3が2つ以上あるかどうかで判定すればいいだけでは?
    • good
    • 3
この回答へのお礼

上のようにやればできるということは分かりましたが、どうもプログラムを作るのが下手なものでして、もしよければプログラムの方も教えていただけましたら幸いです。
下記のプログラムの中に出題された内容を入れて作るみたいなのですが知識が少なすぎてできません。

include<stdio.h>

main (void){
printf("\x1b[2j");


int i, j, r, c, array[9][9]={
{0,1,2,3,4,5,6,7,8},
{1,0,0,0,0,0,0,0,0},
{2,0,0,0,0,0,0,0,0},
{3,0,0,0,0,0,0,0,0},
{4,0,0,0,0,0,0,0,0},
{5,0,0,0,0,0,0,0,0},
{6,0,0,0,0,0,0,0,0},
{7,0,0,0,0,0,0,0,0},
{8,0,0,0,0,0,0,0,0},
};

for(i=0;i<9;i++){
for(j=0;j<9;j++){

printf("%d ",array[i][j]);
}
printf("\n");
}
while(1){
printf("***USER1***\n");
printf("input row:");
scanf("%d",&r);
printf("input column:");
scanf("%d",&c);

array[r][c]=1;
printf("\x1b[2j");
for(i=0;i<9;i++){
for(i=0;i<9;i++){
printf("%d ",array[i][j]);
}
printf("\n");
}
for(i=1;i<9;i++){
for(j=1;j<5;j++){

if(array[i][j]==1 && array[i][j+1]==1 && array[i][j+2]==1 && array[i][j+3]==1 && array[i][j+4]==1){
printf("USER1 WIN!!\n");
}
}
}
for(j=1;j<9;j++){
for(i=1;i<5;i++){
if(array[j][i]==1 && array[j][i+1]==1 && array[j][i+2]==1 && array[j][i+3]==1 && array[j][i+4]==1){
printf("USER1 Win!!\n");
}
}
}
printf("***USER2***\n");
printf("input row:");
scanf("%d",&r);
printf("input column:");
scanf("%d",&c);

array[r][c]=1;
printf("\x1b[2j");
for(i=0;i<9;i++){
for(i=0;i<9;i++){
if(i>0&&j>0&&array[i][j]==1{
printf("\x1b[33m");
}
if(i>0&&j>0&&array[i][j]==2{
printf("\x1b[32m");
}

printf("%d ",array[i][j]);
printf("\x1b[0m");
}
printf("\n");
}
for(i=1;i<9;i++){
for(j=1;j<5;j++){

if(array[i][j]==2 && array[i][j+1]==2 && array[i][j+2]==2 && array[i][j+3]==2 && array[i][j+4]==2){
printf("USER2 WIN!!\n");
}
}
}
for(j=1;j<9;j++){
for(i=1;i<5;i++){
if(array[j][i]==2 && array[j][i+1]==2 && array[j][i+2]==2 && array[j][i+3]==2 && array[j][i+4]==2){
printf("USER2 Win!!\n");
}
}
}
}
}

お礼日時:2010/11/07 17:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!