如何用codeblocks创建多个.c .h文件编写C语言程序

开干

  1. 首先打开codeblocks,并且创建一个main.c文件。
  2. 打开左上角文件(File),点击新建(New),点击文件(File)。
    如图所示:创建文件第一步
  3. 来到模板新建页面(New from template),点击C/C++ header。创建文件第二步
  4. 点击Go,亦或是双击C/C++ header,会来到C/C++ header界面。创建文件第三步
  5. 点击下次跳过这个界面(Skip this page next time),点击下一步(Next)。创建文件第四步
  6. 点击“具有完整路径的文件名”(Filename with full path)下面方框旁边的三个点,选取你要创建的文件的路径。创建文件第五步
  7. 在文件名后面的蓝色方框里随便写你想要创建的文件的名称,在这里我写了一个house,(加不加后缀.h都无所谓),因为我之前弄了一个房屋信息租赁系统。创建文件第六步
  8. 点击保存,点击DEbug和Release前面方框就可以了。
    创建文件第七步
  9. 点击完成(finish)就OK了。创建文件第八步
    10.就这样创建好了一个.h头文件了,至于创建.c文件也是一样的道理。不过要注意的是1,在模板新建页面(New from template),点击C/C++ source;2,选取创建的文件的路径的时候不用点击方框里面的文件,只用在蓝色方框里输入你想要创建的文件的名称就行了;3,创建的.c文件的名称最好要与.h文件的名称一样。最后就是这种效果:创建文件完成
  • 14
    点赞
  • 105
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
以下是一个简单的双人对弈围棋程序,使用C语言编写,基于CodeBlocks开发环境。 ``` #include <stdio.h> #include <stdlib.h> #include <stdbool.h> #define SIZE 9 typedef enum { EMPTY, BLACK, WHITE } stone; void print_board(stone board[SIZE][SIZE]) { printf(" "); for (int i = 0; i < SIZE; i++) printf("%c ", 'A' + i); printf("\n"); for (int i = 0; i < SIZE; i++) { printf("%d ", i + 1); for (int j = 0; j < SIZE; j++) { if (board[i][j] == EMPTY) printf(". "); else if (board[i][j] == BLACK) printf("X "); else printf("O "); } printf("%d\n", i + 1); } printf(" "); for (int i = 0; i < SIZE; i++) printf("%c ", 'A' + i); printf("\n"); } bool is_valid_move(stone board[SIZE][SIZE], int row, int col, stone player) { if (row < 0 || row >= SIZE || col < 0 || col >= SIZE) return false; if (board[row][col] != EMPTY) return false; stone opponent = (player == BLACK) ? WHITE : BLACK; if ((row > 0 && board[row - 1][col] == opponent) || (row < SIZE - 1 && board[row + 1][col] == opponent) || (col > 0 && board[row][col - 1] == opponent) || (col < SIZE - 1 && board[row][col + 1] == opponent)) return true; return false; } void place_stone(stone board[SIZE][SIZE], int row, int col, stone player) { board[row][col] = player; } bool is_captured(stone board[SIZE][SIZE], int row, int col) { if (board[row][col] == EMPTY) return false; stone opponent = (board[row][col] == BLACK) ? WHITE : BLACK; if ((row > 0 && board[row - 1][col] == opponent && !is_liberty(board, row - 1, col)) || (row < SIZE - 1 && board[row + 1][col] == opponent && !is_liberty(board, row + 1, col)) || (col > 0 && board[row][col - 1] == opponent && !is_liberty(board, row, col - 1)) || (col < SIZE - 1 && board[row][col + 1] == opponent && !is_liberty(board, row, col + 1))) return true; return false; } bool is_liberty(stone board[SIZE][SIZE], int row, int col) { if (board[row][col] == EMPTY) return true; if (row > 0 && board[row - 1][col] == EMPTY) return true; if (row < SIZE - 1 && board[row + 1][col] == EMPTY) return true; if (col > 0 && board[row][col - 1] == EMPTY) return true; if (col < SIZE - 1 && board[row][col + 1] == EMPTY) return true; return false; } void remove_stone(stone board[SIZE][SIZE], int row, int col) { board[row][col] = EMPTY; } bool is_legal_move(stone board[SIZE][SIZE], int row, int col, stone player) { if (!is_valid_move(board, row, col, player)) return false; place_stone(board, row, col, player); bool legal = !is_captured(board, row, col); remove_stone(board, row, col); return legal; } int count_liberties(stone board[SIZE][SIZE], int row, int col) { int liberties = 0; if (row > 0 && board[row - 1][col] == EMPTY) liberties++; if (row < SIZE - 1 && board[row + 1][col] == EMPTY) liberties++; if (col > 0 && board[row][col - 1] == EMPTY) liberties++; if (col < SIZE - 1 && board[row][col + 1] == EMPTY) liberties++; return liberties; } bool is_eye(stone board[SIZE][SIZE], int row, int col, stone player) { if (board[row][col] != EMPTY) return false; if (count_liberties(board, row, col) != 2) return false; stone opponent = (player == BLACK) ? WHITE : BLACK; int border_count = 0; if (row == 0 || row == SIZE - 1) border_count++; if (col == 0 || col == SIZE - 1) border_count++; if (border_count == 1) return false; if ((row > 0 && board[row - 1][col] == player) || (row < SIZE - 1 && board[row + 1][col] == player) || (col > 0 && board[row][col - 1] == player) || (col < SIZE - 1 && board[row][col + 1] == player)) return false; int opponent_count = 0; if (row > 0 && board[row - 1][col] == opponent) opponent_count++; if (row < SIZE - 1 && board[row + 1][col] == opponent) opponent_count++; if (col > 0 && board[row][col - 1] == opponent) opponent_count++; if (col < SIZE - 1 && board[row][col + 1] == opponent) opponent_count++; if (opponent_count > 1) return false; return true; } bool is_valid_eye(stone board[SIZE][SIZE], int row, int col, stone player) { if (!is_eye(board, row, col, player)) return false; stone opponent = (player == BLACK) ? WHITE : BLACK; int friendly_stones = 0; int enemy_stones = 0; if (row > 0) { if (board[row - 1][col] == player) friendly_stones++; else if (board[row - 1][col] == opponent) enemy_stones++; } if (row < SIZE - 1) { if (board[row + 1][col] == player) friendly_stones++; else if (board[row + 1][col] == opponent) enemy_stones++; } if (col > 0) { if (board[row][col - 1] == player) friendly_stones++; else if (board[row][col - 1] == opponent) enemy_stones++; } if (col < SIZE - 1) { if (board[row][col + 1] == player) friendly_stones++; else if (board[row][col + 1] == opponent) enemy_stones++; } if (friendly_stones == 4 || enemy_stones > 0) return false; return true; } bool is_valid_placement(stone board[SIZE][SIZE], int row, int col, stone player) { if (is_valid_move(board, row, col, player)) { if (is_legal_move(board, row, col, player)) { if (!is_valid_eye(board, row, col, player)) { return true; } } } return false; } stone get_player(int move_number) { return (move_number % 2 == 0) ? BLACK : WHITE; } int main() { stone board[SIZE][SIZE] = { EMPTY }; int move_number = 0; while (true) { print_board(board); stone player = get_player(move_number); printf("%c's turn (e.g. B4): ", (player == BLACK) ? 'X' : 'O'); char input[3]; scanf("%s", input); if (input[0] == 'q' || input[0] == 'Q') break; int row = input[1] - '1'; int col = input[0] - 'A'; if (is_valid_placement(board, row, col, player)) { place_stone(board, row, col, player); move_number++; } else { printf("Invalid move.\n"); } } return 0; } ``` 这个程序实现了基本的落子、吃子和判断胜负的功能,可以通过控制台输入坐标来进行游戏。但是这个程序还有很多不足之处,比如没有对禁手规则进行处理,也没有判断胜负的算法。如果需要更加完善的围棋程序,需要进一步优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值