今天用vs2022写了三子棋,编写和调试花了很长时间,终于完成了。
源文件test.cpp
#include<stdio.h>
#include"game.h"
int main()
{int input;do{menu();scanf_s("%d", &input);srand((unsigned)time(NULL));switch (input){case 1:game();break;case 2:printf("退出三子棋世界n");break;default:printf("请输入“1”玩游戏n或者“2”退出游戏n不要输其他字符");}} while (input - 2);}
源文件game.cpp
#include<stdio.h>
#include"game.h"
void menu()
{printf("***********************************n");printf("******少年,欢迎来到三子棋世界 ****n");printf("************* 1.play **************n");printf("************* 2.exit **************n");printf("***********************************n");}
void game()
{printf("少年,你将对抗这世间最强的力量n你,准备好了吗?n");char board[ROW][COL];Initboard(board, ROW, COL);Displayboard(board, ROW, COL);while (1){ Playermove(board, ROW, COL);Displayboard(board, ROW, COL);if (IsWin(board, ROW, COL) == 0)break;Computerermove(board, ROW, COL);Displayboard(board, ROW, COL);if (IsWin(board, ROW, COL) == 0)break;}printf("nnn");
}
void Initboard(char board[ROW][COL],int row,int col)
{int i, j;for (i = 0;i < row;i++)for (j = 0;j < col;j++)board[i][j] = ' ';}void Displayboard(char board[ROW][COL], int row, int col)
{int i, j,m;for(i=0;i<row;i++){for (j = 0;j < col;j++){printf(" %c ", board[i][j]);if (j < col - 1)printf("|");if (j == col - 1)printf("n");}printf("n");if (i < row - 1){for (m = 0;m < col - 1;m++)printf("---|");printf("---n");;}}
}void Playermove(char board[ROW][COL], int row, int col)
{int x = 0, y = 0;printf("阁下,该你落子了n");while (1){scanf_s("%d%d", &x, &y);if (x >= 1 && x <= 3 && y >= 1 && y <= 3){if (board[--x][--y] != ' ')printf("抱歉,阁下,此地已被占据了,请重新落子n");else{board[x][y] = '*';break;}}elseprintf("抱歉,阁下,只可落子于%d行%d列方格中n请重新落子n", ROW, COL);}}void Computerermove(char board[ROW][COL], int row, int col)
{while (1){int x, y;x = rand() % row;y = rand() % col;if (board[x][y] == ' '){board[x][y] = '@';break;}}}int IsWin(char board[ROW][COL], int row, int col )
{int i, j;for (i = 0;i < row;i++)if (board[i][0] == board[i][1] && board[i][2] == board[i][1] && board[i][1] != ' '){if (board[i][1] == '*')printf("谋士以身入局,举棋胜天半子!n阁下运筹帷幄之中,决胜千里之外n智勇双全,国士无双!n");elseprintf("君不见长沟卧壑困风霜,时来屹立扶明堂n阁下虽然惜败,但展现出的实力威震天下!n");return 0;}for (i = 0;i < col;i++)if (board[0][i] == board[1][i] && board[0][i] == board[2][i] && board[0][i] != ' '){if (board[0][i] == '*')printf("谋士以身入局,举棋胜天半子!n阁下运筹帷幄之中,决胜千里之外n智勇双全,国士无双!n");elseprintf("君不见长沟卧壑困风霜,时来屹立扶明堂n阁下虽然惜败,但展现出的实力威震天下!n");return 0;}if (board[0][0] == board[1][1] && board[2][2] == board[0][0] && board[0][0] != ' '){if (board[0][0] == '*')printf("谋士以身入局,举棋胜天半子!n阁下运筹帷幄之中,决胜千里之外n智勇双全,国士无双!n");elseprintf("君不见长沟卧壑困风霜,时来屹立扶明堂n阁下虽然惜败,但展现出的实力威震天下!n");return 0;}if (board[2][0] == board[1][1] && board[2][0] == board[0][2] && board[2][0] != ' '){if (board[1][1] == '*')printf("谋士以身入局,举棋胜天半子!n阁下运筹帷幄之中,决胜千里之外n智勇双全,国士无双!n");elseprintf("君不见长沟卧壑困风霜,时来屹立扶明堂n阁下虽然惜败,但展现出的实力威震天下!n");return 0;}for (i = 0;i < row;i++)for (j = 0;j < col;j++)if (board[i][j] == ' ')return 1;printf("这局棋妙不可言!n阁下虽然战平,但展现出的实力威震天下!n");return 0;
}
头文件game.h
#pragma once
#include<stdlib.h>
#include<time.h>
void menu();
#define ROW 3
#define COL 3
void game();
void Initboard(char board[ROW][COL],int,int);
void Displayboard(char board[ROW][COL], int, int);
void Playermove(char board[ROW][COL], int, int);
void Computerermove(char board[ROW][COL], int, int);
int IsWin(char board[ROW][COL], int, int);
中途调试了几个错误
本文发布于:2024-02-02 02:00:55,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170681406240688.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |