经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C 语言 » 查看文章
C语言实现三子棋小游戏(vs2013多文件)
来源:jb51  时间:2021/6/15 9:23:36  对本文有异议

本文通过实例为大家分享了C语言实现三子棋小游戏的具体代码,供大家参考,具体内容如下

基本思路:

1.创建一个游戏选择面板.

2.创建并初始化棋盘。

3.玩家落子并判定,电脑落子并判定。

4.判定结果 ,游戏结束!

代码如下:

头文件:

  1. #pragma once
  2. #include<stdio.h>
  3. #include<windows.h>
  4. #include<stdlib.h>
  5. #include <time.h>
  6. #pragma warning(disable:4996)
  7. extern void Game();//游戏代码需要定义调用的函数
  8. #define ROW 3//FOW、FOL代表三子棋边界的长和宽
  9. #define COL 3
  10. #define INIT ' ' //INIT为空格的宏定义
  11. #define WHITE 'X' //X在三字棋代表Player
  12. #define BLACK 'O' //O在三字棋代表Computer
  13. #define DRAW 'D' //DRAW代表平局
  14. #define NEXT 'N' //NEXT代表继续 //MineClearence

各类函数:

  1. void InitBoard(char board[][COL], int row, int col)//棋盘初始化
  2. {
  3. for (int i = 0; i < row; i++){
  4. for (int j = 0; j < col; j++){
  5. board[i][j] = INIT;
  6. }
  7. }
  8. }
  9. static void ShowBoard(char board[][COL], int row, int col)//显示棋盘
  10. {
  11. system("cls");
  12. printf(" ");
  13. for (int i = 0; i < col; i++){
  14. printf("%4d", i + 1);
  15. }
  16. printf("\n--------------\n");
  17. for (int i = 0; i < row; i++){
  18. printf("%-2d", i + 1); //2
  19. for (int j = 0; j < col; j++){
  20. printf("| %c ", board[i][j]);
  21. }
  22. printf("\n--------------\n");
  23. }
  24. }
  25. static char IsEnd(char board[][COL], int row, int col)//最终结果
  26. {
  27. for (int i = 0; i < row; i++){
  28. if (board[i][0] == board[i][1] &&
  29. board[i][1] == board[i][2] &&
  30. board[i][0] != INIT){
  31. return board[i][0];
  32. }
  33. }
  34. for (int j = 0; j < COL; j++){
  35. if (board[0][j] == board[1][j] &&
  36. board[1][j] == board[2][j] &&
  37. board[0][j] != INIT){
  38. return board[0][j];
  39. }
  40. }
  41. if (board[0][0] == board[1][1] &&
  42. board[1][1] == board[2][2] &&
  43. board[1][1] != INIT){
  44. return board[1][1]; }
  45. if (board[0][2] == board[1][1] &&
  46. board[1][1] == board[2][0] &&
  47. board[1][1] != INIT){
  48. return board[1][1]; }
  49. for (int i = 0; i < row; i++){
  50. for (int j = 0; j < col; j++){
  51. if (board[i][j] == INIT){
  52. return NEXT;
  53. }
  54. }
  55. }
  56. return DRAW;
  57. }
  58. static void PlayerMove(char board[][COL], int row, int col)//玩家
  59. { int x = 0; int y = 0;
  60. while (1){
  61. printf("Please Enter Postion<x,y># ");
  62. scanf("%d %d", &x, &y);
  63. if (x < 1 || y < 1 || x > 3 || y > 3){
  64. printf("Enter Postion Error!\n");
  65. continue;
  66. }
  67. if (board[x - 1][y - 1] == INIT){
  68. board[x - 1][y - 1] = WHITE;
  69. break;
  70. }
  71. else{
  72. printf("Postion Is Not Empty!\n");
  73. }
  74. }
  75. }
  76. static void ComputerMove(char board[][COL], int row, int col)//电脑
  77. {
  78. while (1){
  79. int x = rand() % row;
  80. int y = rand() % col;
  81. if (board[x][y] == INIT){
  82. board[x][y] = BLACK;
  83. break;
  84. }
  85. }
  86. }
  87. void Game()
  88. {
  89. char board[ROW][COL];
  90. InitBoard(board, ROW, COL);
  91. srand((unsigned long)time(NULL));
  92. char result = 0;
  93. while (1){
  94. ShowBoard(board, ROW,COL);
  95. PlayerMove(board, ROW,COL);
  96. result = IsEnd(board, ROW, COL);
  97. if (result != NEXT){
  98. break;
  99. }
  100. ShowBoard(board, ROW, COL);
  101. ComputerMove(board,ROW, COL);
  102. result = IsEnd(board, ROW,COL);
  103. if (result != NEXT){
  104. break;
  105. }
  106. }
  107. ShowBoard(board, ROW,COL);
  108. switch (result){
  109. case WHITE:
  110. printf("You Win!\n");
  111. break;
  112. case BLACK:
  113. printf("You Lose!\n");
  114. break;
  115. case DRAW:
  116. printf("You == Computer!\n");
  117. break;
  118. default:
  119. printf("BUG!\n");
  120. break;
  121. }
  122. }

游戏选择面板(主函数) 

  1. #include "game.h"
  2. static void Menu()
  3. {
  4. printf("|------------- 开始游戏 -------------|\n");
  5. printf("+------------- 1. Play -------------+\n");
  6. printf("+------------- 0. Exit -------------+\n");
  7. }
  8. int main()
  9. {
  10. int select = 0;
  11. int quit = 0;
  12. while (!quit){
  13. Menu();
  14. printf("Please Select#");
  15. scanf("%d",&select);
  16. switch (select){
  17. case 1:
  18. Game();
  19. break;
  20. case 0:
  21. quit = 1;
  22. break;
  23. default:
  24. printf("Enter Error, Try Again!\n");
  25. break;
  26. }
  27. }
  28. printf("bye!\n");
  29. system("pause");
  30. return 0;
  31. }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号