こんにちは私はゲームに接続するためのCコードをビルドしています4.ゲームはシングルプレイヤー対簡単アイ/ハードAIと最終的に2プレーヤーモードを持ちます。ゲームボードとコラムの選択(あなたのゲームピースを落とす場所)はすべて現時点では機能していますが、ゲームボードとループの底部で常に始めるように作品を作るためには、ユーザーが選択した列に空のスポットが見つかるまで、マトリックスの上に移動します。ループステートメントを提供して、プレイヤーのゲームピースをグラフィックアレイの一番下の行に移動させます
これは私が今行っていることですが、私はさまざまな方法で失敗した試みをいくつか試してみましたが、今は悪い構文を完全にマッシュアップしていると思います。私はgccでコンパイルしています。
#include <stdio.h>
#include <stdlib.h>
// function: check
// input: takes user [5][*]
// output: completes check to place the users '@' piece on board, if row 6 is taken it moves to row 5 and so on.
int space_1 (char b[][]) {
int k,x
while (b[][] == '@' || '#'){
for (k=5;k>5;k--){
if (b[k][x] == ' '){
board[k][x] = '@';
}
}
}
}
// function: check
// input: takes user [5][*]
// output: completes check to place the users '#' piece on board, if row 6 is taken it moves to row 5 and so on.
int space_2 (char b[][]) {
int k,x
while (b[][] == '@' || '#'){
for (k=5;k>5;k--){
if (b[k][x] == ' '){
board[k][x] = '#';
}
}
}
}
//function: display_board
// input : where to place piece on board
// output: places users piece on board
void display_board (char b[][6]) {
printf ("\033[01;33m 1 2 3 4 5 6 7\n");
printf ("\033[01;33m-----------------------------\n");
printf ("\033[01;33m| %c | %c | %c | %c | %c | %c | %c |\n", b[0][0], b[0][1], b[0][2], b[0][3], b[0][4], b[0][5], b[0][6]);
printf ("\033[01;33m-----------------------------\n");
printf ("\033[01;33m| %c | %c | %c | %c | %c | %c | %c |\n", b[1][0], b[1][1], b[1][2], b[1][3], b[1][4], b[1][5], b[1][6]);
printf ("\033[01;33m-----------------------------\n");
printf ("\033[01;33m| %c | %c | %c | %c | %c | %c | %c |\n", b[2][0], b[2][1], b[2][2], b[2][3], b[2][4], b[2][5], b[2][6]);
printf ("\033[01;33m-----------------------------\n");
printf ("\033[01;33m| %c | %c | %c | %c | %c | %c | %c |\n", b[3][0], b[3][1], b[3][2], b[3][3], b[3][4], b[3][5], b[3][6]);
printf ("\033[01;33m-----------------------------\n");
printf ("\033[01;33m| %c | %c | %c | %c | %c | %c | %c |\n", b[4][0], b[4][1], b[4][2], b[4][3], b[4][4], b[4][5], b[4][6]);
printf ("\033[01;33m-----------------------------\n");
printf ("\033[01;33m| %c | %c | %c | %c | %c | %c | %c |\n", b[5][0], b[5][1], b[5][2], b[5][3], b[5][4], b[5][5], b[5][6]);
printf ("\033[01;33m-----------------------------\n");
}
void display_board2 (char b[][6]) {
int i, j;
printf ("\033[01;33m 1 2 3 4 5 6 7\n");
printf ("\033[01;33m-----------------------------\n");
for (i=0; i<6; i++) {
for (j=0; j<7; j++) {
printf ("\033[01;33m| %c ", b[i][j]);
}
printf ("\033[01;33m|\n");
printf ("\033[01;33m-----------------------------\n");
}
}
void main/*2*/() {
char board[5][6];
int row, col, status;
// initialize the game board w/ blanks
board[0][0] = ' '; board[0][1] = ' '; board[0][2] = ' '; board[0][3] = ' '; board[0][4] = ' '; board[0][5] = ' '; board[0][6] = ' ';
board[1][0] = ' '; board[1][1] = ' '; board[1][2] = ' '; board[1][3] = ' '; board[1][4] = ' '; board[1][5] = ' '; board[1][6] = ' ';
board[2][0] = ' '; board[2][1] = ' '; board[2][2] = ' '; board[2][3] = ' '; board[2][4] = ' '; board[2][5] = ' '; board[2][6] = ' ';
board[3][0] = ' '; board[3][1] = ' '; board[3][2] = ' '; board[3][3] = ' '; board[3][4] = ' '; board[3][5] = ' '; board[3][6] = ' ';
board[4][0] = ' '; board[4][1] = ' '; board[4][2] = ' '; board[4][3] = ' '; boar d[4][4] = ' '; board[4][5] = ' '; board[4][6] = ' ';
board[5][0] = ' '; board[5][1] = ' '; board[5][2] = ' '; board[5][3] = ' '; board[5][4] = ' '; board[5][5] = ' '; board[5][6] = ' ';
//display_board (board);
display_board2 (board);
while (1) {
printf ("\033[22;[email protected]'s move enter column: ");
scanf ("%d", &col);
space_1[5][col-1] = '@'; // mark the board
display_board2 (board);
// check for winner
status = check2 (board);
if (status == 1) {
printf ("@ wins!\n");
break;
}
printf ("\033[22;34m#'s move enter column: ");
scanf ("%d", &col);
space_2[5][col-1] = '#'; // mark the board
display_board2 (board);
// check for winner
status = check2 (board);
if (status == 1) {
printf ("# wins!\n");
break;
}
}
printf ("Thanks for playing!\n");
}
私は、任意およびすべてのヘルプははるかに高く評価され、私の貧弱なCプログラミングのスキルに焦点を当て、すべての追加のサブ・ルーチンをadmitedています。
として渡すことによって回避することができ、それも見ていませんintを返すべき関数として2を返しますが、実際には何も返しません。次に、それらをmainの配列として使用しています。私はあなたがもう少し問題を解くべきだと思って、タイトルの質問をする前に、それの別々のビットを作ることに焦点を合わせます。 –
これは、n次元配列の少なくともn-1次元を指定する必要がありますか? (つまり、b [] []は無効ですか?) – John