C言語ではさみ将棋

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

C言語ではさみ将棋

#1

投稿記事 by hiro » 12年前

コードタグをご利用ください。 by softya(ソフト屋)

コード:

#include <stdio.h>
#include <stdlib.h>

int field[9][9] = {0};
int gameover = 1;

void fieldFormat();
void showGameField();
int deleteKoma();
void createKoma(int,int);


int main(void)
{
	fieldFormat();
	
	while(gameover)
	{
	createKoma(deleteKoma(),1);
	showGameField();
	
	createKoma(deleteKoma(),2);
	showGameField();
	

}

	
	

return 0;
}


void fieldFormat()
{
	int i,j;
	
	for(i=0; i<9; i++)
	{
		for(j=0;j<9;j++)
		{
			
			field[i][j] = 0;
		}
	}
	
	for(i=0;i<9;i++)
	{
		field[0][i] = 1;
		field[8][i] = 2;
	}
	
	showGameField();
}

		

void showGameField()
{
	int i, j;
		system("cls");
	

	
	for(i=0;i<9;i++)
	{
		for(j=0;j<9;j++)
		{
			switch(field[i][j])
			{
				case 0:
				printf("+");
				break;
				
				case 1:
				printf("@");
				break;
				
				default:
				printf("o");
				break;
			}
		}
		printf("\n");
	}
}


int deleteKoma()
{
	
	int a,b;
	int flag = 1;
while(flag)
{
	printf("select tate and yoko:");
	scanf("%d", &a);
	scanf("%d", &b);
	
	if(field[a][b] != 0)
	{
	
	field[a][b] = 0;
	
	flag = 0;
	}
}
	
	return b;
}

void createKoma(int b,int i)
{
		
	int a;

	printf("select tate:");
	scanf("%d", &a);
	
	field[a][b] = i;
}
とりあえずここまで作りましたが,相手の駒を飛び越せない という条件はどのように挿入すべきでしょうか。

初級者
記事: 200
登録日時: 13年前

Re: C言語ではさみ将棋

#2

投稿記事 by 初級者 » 12年前

仕様の説明もコードのコメントもありませんので、
なんとも回答のしようがありません。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: C言語ではさみ将棋

#3

投稿記事 by softya(ソフト屋) » 12年前

他の人が作ったプログラムを読むことは困難が伴いますので、コメントとインデント(字下げ)の調整、仕様の説明などがあると回答者が助かります。
で、操作性としては
・入力のミスをレポートすること。
・縦横の番号を盤面にも表示すること。
・どちらの番なのか明確に指示すること。
・マイナスなど異常値が入力されたらガードすること。
を行なってみてください。

肝心の質問のポイントは、移動開始点から到着点までをforで回して途中に相手の駒があったらNGで良いと思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

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