プログラミング初心者です。
一回は自分でプログラムを書いてみようと思い自分の知識だけで五目並べをC言語で作っていました。
そこで、よくわからないエラーが出てしまったのですが、どうも解決できずにここに来た次第です。
これがソースです↓↓
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define BOARDSIZE 10
#define EMPTY 0
#define BLACK 1
#define WHITE 2
int board[BOARDSIZE][BOARDSIZE];
char piece[] = {'-','X','O'};
int stop,count = 1;
void setBoard();
void showBoard();
void inputKey();
void putPiece();
void checkPiece();
int main ()
{
printf("黒の番です\n");
setBoard();
showBoard();
while(1){
inputKey();
showBoard();
stop++;
if(stop == 102){printf("error\n");break;}
}
return 0;
}
void setBoard ()
{
int i,j;
if(count == 1){
for(i = 0;i < BOARDSIZE;i++){
for(j = 0;j < BOARDSIZE;j++){
board[j] = EMPTY;
}
}
}
}
void putPiece(int y,int x)
{
int check;
check = count % 2; //偶数か奇数か判定
if(y == 0 && x == 0){printf("終了します。\n");getch();exit(0);}
if(board[y][x]==EMPTY){
count++;
if(check == 0){
printf("白の番です\n");//奇数
board[y][x] = BLACK;
}else{
printf("黒の番です\n");//偶数
board[y][x] = WHITE;
}
}else{
printf("そこには置けません\n");
inputKey();
}
checkPiece(y,x);
}
void showBoard() //盤面を表示
{
int y,x;
printf(" 1 2 3 4 5 6 7 8 910\n");
for(y=1;y<BOARDSIZE+1;y++){
printf("%2d",y);
for(x=0;x<BOARDSIZE;x++){
printf(" %c",piece[board[y][x]]);
}
printf("\n");
}
}
void inputKey()
{
int y,x;
printf(">");
scanf("%d %d",&y,&x);
putPiece(y,x);
}
void checkPiece(int y,int x)
{
printf("%d %d",y,x);
}
checkPieceを作っていたときにできたことなのでcheckPiece関数はまだ作り途中です。
そこで、このエラーの解消方法と五目並べの五連の判定の方法も教えてくれれば助かります。
余談なのですが、僕はいろいろな言語に挑戦してみているのですがひとつの言語を完璧にしてから次のほかの言語へ挑戦したほうが良いのでしょうか?それともいろいろな言語を触れてもいいのでしょうか。
いろいろな言語を触れる中で言語がごちゃごちゃにならないものなのでしょうか。
本題とはなれて長々と質問して申し訳ありません。回答お願いします。
'checkPiece' : 関数に2個の引数は指定できません。
Re: 'checkPiece' : 関数に2個の引数は指定できません。
これらのプロトタイプ宣言では引数がないと言っているにもかかわらず、実際には
2個の引数があります。
矛盾が起きている、とコンパイラーが言っています。
言語の覚え方については人それぞれだと思います。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
Re: 'checkPiece' : 関数に2個の引数は指定できません。
オフトピック
このトピックは二重投稿されています。(誘導)
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)