在C中进行连接4游戏

时间:2015-09-19 08:39:48

标签: c compiler-errors

感谢您的帮助。我联系了我的讲师并正在与他合作寻求解决方案。再次感谢你。

对于一个小项目,我们需要进行连接四场比赛。我们的项目分为几个部分,每周我们都会分配不同的部分来处理。

本周我们必须完成对列的工作,我的意思是我们必须使用一个名为get_column的函数,并使用它来读取用户的有效列号,下一篇文章将在玩了。

因此我们提供了以下文件connect4.h(用于存储函数的文件),week8_object.o(忽略名称仅仅是当前的sem周),week8.c是{我正在编辑的文件。

到目前为止,我有以下内容,但是当我去检查程序是否工作到目前为止,我在编译器中遇到错误:

  

" ld:警告:忽略文件week8_object.o,文件是为...而构建的   不支持的文件格式(0x7F 0x45 0x4C 0x46 0x01 0x01 0x01 0x00 0x00   0x00 0x00 0x00 0x00 0x00 0x00 0x00)这不是架构   被链接(x86_64):week8_object.o未定义的符号   体系结构x86_64:" _main",引自:        主要可执行文件的隐式输入/启动ld:找不到架构x86_64 clang的符号:错误:链接器命令失败并退出   代码1(使用-v查看调用)"

我用来编译的代码是:gcc week8.c week8_object.o

我的代码:

#include <stdio.h>
#include "connect4.h" 

/* get_move
Prompts the user to enter a column, then checks that
 - the column is in the valid range (1-COLS)
 - that the column is not full (use function column_full to check)
If an invalid column is entered, the user is reprompted until it is valid
Returns the column number between 1 and COLS
*/

int get_move ( int board[COLS][ROWS] ){

    int col;

    printf("Please enter a column number:");
    scanf("%d",&col);

    if(col<0 && col<=COLS){
        printf("Your token has been placed");
    }
    else{
        printf("Your token has not been placed");
    }
    return(0);
}

标题文件:

#ifndef CONNECT4_H
#define CONNEXT4_H 1

#define ROWS 6
#define COLS 7

// displays the board to the screen
int display_board ( int[COLS][ROWS] ) ;

// sets up the board to an empty state
int setup_board ( int[COLS][ROWS] ) ;

// Returns TRUE if the specified column in the board is completely full
// FALSE otherwise
// col should be between 1 and COLS
int column_full ( int[COLS][ROWS], int col ) ;

// prompts the user to enter a move, and checks that it is valid
// for the supplied board and board size
// Returns the column that the user has entered, once it is valid (1-COLS)
int get_move ( int[COLS][ROWS] ) ;

// adds a token of the given value (1 or 2) to the board at the
// given column (col between 1 and COLS inclusive)
// Returns 0 if successful, -1 otherwise
int add_move ( int b[COLS][ROWS], int col, int colour ) ;

// determines who (if anybody) has won.  Returns the player id of the
// winner, otherwise 0
int winner ( int[COLS][ROWS] ) ;

// determines if the board is completely full or not
int board_full ( int[COLS][ROWS] ) ;


#endif

我不知道如何添加目标文件代码,因为我不知道如何打开它。到目前为止,我的代码只是打印语句,如果用户在这些限制内输入的值。我还没有添加任何东西来检查列是否已满,请不要误解。我只是一步一步地检查。

1 个答案:

答案 0 :(得分:0)

根据快速谷歌搜索,这意味着您的目标文件是ELF格式,这基本上意味着它是为Linux构建的。 Mac OS不使用ELF,因此您无法链接该文件。

您的选择是:

  1. 切换到Linux进行开发,或
  2. 让创建week8_object.o的人为Mac编译版本。