2011-03-01 5 views
1

こんにちは私はゲームに接続するための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ています。

+1

として渡すことによって回避することができ、それも見ていませんintを返すべき関数として2を返しますが、実際には何も返しません。次に、それらをmainの配列として使用しています。私はあなたがもう少し問題を解くべきだと思って、タイトルの質問をする前に、それの別々のビットを作ることに焦点を合わせます。 –

+0

これは、n次元配列の少なくともn-1次元を指定する必要がありますか? (つまり、b [] []は無効ですか?) – John

答えて

0
int space_1 (char b[][]) { 

配列の引数を宣言するときは、一番左の配列の次元を空白のままにすることができます。

int k,x 
while (

変数の宣言を終了するには、;が必要です。 Cには、;が含まれています。

while (b[][] == '@' || '#') { 

このテストは、あなたが(b[][]が何かを意味と仮定して)何を考えてテストされていません。これは、b[][]'@'を比較し、異なる場合は'#'と0(ゼロ)を比較します。最後の比較は常にfalseです。

for (k=5; k>5; k--) { 

kは決して5を超えません。このループの本体は決して実行されません。

void main() { 

あなたが自立した環境(オペレーティングシステムのないコンピュータ)のために書いている場合を除きmain関数はintを返します。すべての回であなたのコードのコンパイルをしてください

:それはint main(void) { /*...*/ }

提案して定義する必要があります。 コードがコンパイルされない場合は、何かを追加しないでください。 機能を追加するときは、保存してコンパイルをテストしてください。それは...あなたはspace_1を定義しているコンパイルする必要がありますようにB [] []を渡すもちろん

0

は、コードを見てみるのchar ** B

関連する問題