当前位置: 首页 > news >正文

门源县电子商务网站建设公司一键生成app制作器

门源县电子商务网站建设公司,一键生成app制作器,免费主页空间申请,国内企业手机网站建设目录 C语言编程实现五子棋&#xff1a;&#xff1a; game.h game.c 1.打印菜单 2.打印棋盘 3.玩家下棋 4.判断五子连珠 5.判断输赢 6.游戏运行 game.c完整源代码展示 test.c C语言编程实现五子棋&#xff1a;&#xff1a; game.h #pragma once #include<stdio.h> …

目录

C语言编程实现五子棋::

game.h

game.c

                        1.打印菜单

                        2.打印棋盘

                        3.玩家下棋

                        4.判断五子连珠

                        5.判断输赢

                        6.游戏运行

game.c完整源代码展示

test.c


C语言编程实现五子棋::

game.h

#pragma once
#include<stdio.h>
#include<stdlib.h>
#define ROW 20
#define COL 20
#define PLAYER1 1
#define PLAYER2 2
#define NEXT 0
#define PLAYER1_WIN 1
#define PLAYER2_WIN 2
#define DRAW 3 
enum Dir
{LEFT,RIGHT,UP,DOWN,LEFT_UP,LEFT_DOWN,RIGHT_UP,RIGHT_DOWN
};
void Menu();
void Game();

game.c

1.打印菜单

void Menu()
{printf("#############################\n");printf("#######   五子棋游戏   ######\n");printf("#######1.Play    0.Exit######\n");printf("#############################\n");printf("#############################\n");printf("Please Select:");
}

2.打印棋盘

void ShowBoard(int board[ROW][COL], int row, int col)
{//清屏system("cls");printf("  ");int i = 1;for (i = 1;i <= col;i++){printf("%3d", i);}printf("\n");for (i = 0;i < row;i++){int j = 0;printf("%2d ", i + 1);for (j = 0;j < col;j++){if (board[i][j] == 0){printf(" . ");}else if (board[i][j] == PLAYER1){printf(" # ");}else{printf(" o ");}}printf("\n");}
}

3.玩家下棋

void PlayerMove(int board[ROW][COL], int row, int col, int who)
{while (1){printf("Player[%d] Please Enter your Pos:", who);scanf("%d %d", &x, &y);if (x < 1 || x > row || y < 1 || y > col){printf("输入坐标不合法!\n");continue;}else if (board[x - 1][y - 1] != 0){printf("Pos Is Occupied!\n");continue;}else{board[x - 1][y - 1] = who;break;}}
}

4.判断五子连珠

int ChessCount(int board[ROW][COL], int row, int col,enum Dir d)
{int _x = x - 1;int _y = y - 1;int count = 0;while (1){switch (d){case LEFT:_y--;break;case RIGHT:_y++;break;case UP:_x--;break;case DOWN:_x++;break;case LEFT_UP:_x--;_y--;break;case LEFT_DOWN:_x++;_y--;break;case RIGHT_UP:_x--;_y++;break;case RIGHT_DOWN:_x++;_y++;break;default://Do Nothingbreak;}//不合法if (_x < 0 || _x > row - 1 || _y < 0 || _y > col - 1){break;}//合法if (board[x - 1][y - 1] == board[_x][_y]){count++;}else{break;}}return count;
}

5.判断输赢

int IsWin(int board[ROW][COL], int row, int col)
{//在当前位置(x,y)处int count1 = ChessCount(board, row, col, LEFT) + ChessCount(board, row, col, RIGHT) + 1;int count2 = ChessCount(board, row, col, UP) + ChessCount(board, row, col, DOWN) + 1;int count3 = ChessCount(board, row, col, LEFT_UP) + ChessCount(board, row, col, RIGHT_DOWN) + 1;int count4 = ChessCount(board, row, col, LEFT_DOWN) + ChessCount(board, row, col, RIGHT_UP)+ 1;if (count1 >= 5 || count2 >= 5 || count3 >= 5 || count4 >= 5){if (board[x - 1][y - 1] == PLAYER1){return PLAYER1_WIN;}else{return PLAYER2_WIN;}}int i = 0;for (i = 0;i < row;i++){int j = 0;for (j = 0;i < col;j++){if (board[i][j] == 0){return NEXT;}}}return DRAW;
}

6.游戏运行

void Game()
{int board[ROW][COL];memset(board, 0, sizeof(board));int result = NEXT;do{ShowBoard(board, ROW, COL);PlayerMove(board, ROW, COL, PLAYER1);result = IsWin(board, ROW, COL);ShowBoard(board, ROW, COL);if (NEXT != result){break;}ShowBoard(board, ROW, COL);PlayerMove(board, ROW, COL, PLAYER2);result = IsWin(board, ROW, COL);if (NEXT != result){break;}} while (1);//用户1赢 用户2赢 平局switch (result){case PLAYER1_WIN:printf("恭喜用户1,你已经赢了!\n");break;case PLAYER2_WIN:printf("恭喜用户2,你已经赢了!\n");break;case DRAW:printf("平局,和气生财!\n");break;default:break;}system("pause");ShowBoard(board, ROW, COL);
}

game.c完整源代码展示:

#define _CRT_SECURE_NO_WARNINGS
#include"game.h"
int x = 0;
int y = 0;
void Menu()
{printf("#############################\n");printf("#######   五子棋游戏   ######\n");printf("#######1.Play    0.Exit######\n");printf("#############################\n");printf("#############################\n");printf("Please Select:");
}
//按照(x,y)作为起点,按照特定的方向,求连续相对的最大个数
int ChessCount(int board[ROW][COL], int row, int col,enum Dir d)
{int _x = x - 1;int _y = y - 1;int count = 0;while (1){switch (d){case LEFT:_y--;break;case RIGHT:_y++;break;case UP:_x--;break;case DOWN:_x++;break;case LEFT_UP:_x--;_y--;break;case LEFT_DOWN:_x++;_y--;break;case RIGHT_UP:_x--;_y++;break;case RIGHT_DOWN:_x++;_y++;break;default://Do Nothingbreak;}//不合法if (_x < 0 || _x > row - 1 || _y < 0 || _y > col - 1){break;}//合法if (board[x - 1][y - 1] == board[_x][_y]){count++;}else{break;}}return count;
}
//4种返回值 NEXT:继续 PLAYER1_WIN:用户1赢 PLAYER2_WIN:用户2赢 DRAW:平局
int IsWin(int board[ROW][COL], int row, int col)
{//在当前位置(x,y)处int count1 = ChessCount(board, row, col, LEFT) + ChessCount(board, row, col, RIGHT) + 1;int count2 = ChessCount(board, row, col, UP) + ChessCount(board, row, col, DOWN) + 1;int count3 = ChessCount(board, row, col, LEFT_UP) + ChessCount(board, row, col, RIGHT_DOWN) + 1;int count4 = ChessCount(board, row, col, LEFT_DOWN) + ChessCount(board, row, col, RIGHT_UP)+ 1;if (count1 >= 5 || count2 >= 5 || count3 >= 5 || count4 >= 5){if (board[x - 1][y - 1] == PLAYER1){return PLAYER1_WIN;}else{return PLAYER2_WIN;}}int i = 0;for (i = 0;i < row;i++){int j = 0;for (j = 0;i < col;j++){if (board[i][j] == 0){return NEXT;}}}return DRAW;
}
void ShowBoard(int board[ROW][COL], int row, int col)
{//清屏system("cls");printf("  ");int i = 1;for (i = 1;i <= col;i++){printf("%3d", i);}printf("\n");for (i = 0;i < row;i++){int j = 0;printf("%2d ", i + 1);for (j = 0;j < col;j++){if (board[i][j] == 0){printf(" . ");}else if (board[i][j] == PLAYER1){printf(" # ");}else{printf(" o ");}}printf("\n");}
}
void PlayerMove(int board[ROW][COL], int row, int col, int who)
{while (1){printf("Player[%d] Please Enter your Pos:", who);scanf("%d %d", &x, &y);if (x < 1 || x > row || y < 1 || y > col){printf("输入坐标不合法!\n");continue;}else if (board[x - 1][y - 1] != 0){printf("Pos Is Occupied!\n");continue;}else{board[x - 1][y - 1] = who;break;}}
}
void Game()
{int board[ROW][COL];memset(board, 0, sizeof(board));int result = NEXT;do{ShowBoard(board, ROW, COL);PlayerMove(board, ROW, COL, PLAYER1);result = IsWin(board, ROW, COL);ShowBoard(board, ROW, COL);if (NEXT != result){break;}ShowBoard(board, ROW, COL);PlayerMove(board, ROW, COL, PLAYER2);result = IsWin(board, ROW, COL);if (NEXT != result){break;}} while (1);//用户1赢 用户2赢 平局switch (result){case PLAYER1_WIN:printf("恭喜用户1,你已经赢了!\n");break;case PLAYER2_WIN:printf("恭喜用户2,你已经赢了!\n");break;case DRAW:printf("平局,和气生财!\n");break;default:break;}system("pause");ShowBoard(board, ROW, COL);
}

test.c

#define _CRT_SECURE_NO_WARNINGS
#include"game.h"
int main()
{int select = 0;int quit = 0;while (quit == 0){Menu();scanf("%d", &select);switch (select){case 1:Game();break;case 0:quit = 1;printf("游戏结束\n");break;default:printf("输入错误,请重新输入!\n");break;}}return 0;
}

http://www.hkea.cn/news/407624/

相关文章:

  • 双线主机可以做彩票网站吗网络推广合作协议
  • 做外贸的b2b网站域名批量查询系统
  • 建设网站需要哪些职位网站建设策划书
  • 苏州网站建设哪里好网站点击排名优化
  • 网站建设收费标准策划百度推广关键词越多越好吗
  • 网站怎么做更新吗如何建立网页
  • 国外建设工程招聘信息网站tool站长工具
  • 专业做相册书的网站电商网站建设制作
  • 银川网站开发公司电话东莞网
  • 环境保护局网站管理制度建设百度指数的主要功能有
  • 安装wordpress提示500错误关键词优化的策略有哪些
  • 企业网站建设公司排名深圳高端seo公司助力企业
  • 做网站套餐网站seo
  • 网站上的代码网页怎么做的下载百度软件
  • 网站功能模块建设搜狗推广
  • 网站做推广有用吗网站页面设计
  • 做简报的网站广州搜发网络科技有限公司
  • 南乐县住房和城乡建设局网站制作网站的步骤是什么
  • 金华做网站最专业的公司搜易网提供的技术服务
  • wordpress适合门户网站吗怎么营销自己的产品
  • 常用的网站类型有哪些seo优化专员编辑
  • 网站专题框架怎么做海阳seo排名
  • 手机网站代码下载黄页网站推广服务
  • 做网站前端多少钱在线bt种子
  • wordpress+模版+推荐专业网站seo推广
  • 浦项建设公司员工网站2023免费推广入口
  • 如何查询某个网站的设计公司最新推广注册app拿佣金
  • 八宝山做网站公司打广告
  • wordpress vip查看插件南宁seo费用服务
  • 建站之星模板怎么设置手机如何做网站