C語言實現(xiàn)三子棋小游戲(vs2013多文件)
更新時間:2021年09月10日 15:27:03 作者:m0_53146328
這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)三子棋小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文通過實例為大家分享了C語言實現(xiàn)三子棋小游戲的具體代碼,供大家參考,具體內(nèi)容如下
基本思路:
1.創(chuàng)建一個游戲選擇面板.
2.創(chuàng)建并初始化棋盤。
3.玩家落子并判定,電腦落子并判定。
4.判定結(jié)果 ,游戲結(jié)束!
代碼如下:
頭文件:
#pragma once #include<stdio.h> #include<windows.h> #include<stdlib.h> #include <time.h> #pragma warning(disable:4996) extern void Game();//游戲代碼需要定義調(diào)用的函數(shù) #define ROW 3//FOW、FOL代表三子棋邊界的長和寬 #define COL 3 #define INIT ' ' //INIT為空格的宏定義 #define WHITE 'X' //X在三字棋代表Player #define BLACK 'O' //O在三字棋代表Computer #define DRAW 'D' //DRAW代表平局 #define NEXT 'N' //NEXT代表繼續(xù) //MineClearence
各類函數(shù):
void InitBoard(char board[][COL], int row, int col)//棋盤初始化
{
for (int i = 0; i < row; i++){
for (int j = 0; j < col; j++){
board[i][j] = INIT;
}
}
}
static void ShowBoard(char board[][COL], int row, int col)//顯示棋盤
{
system("cls");
printf(" ");
for (int i = 0; i < col; i++){
printf("%4d", i + 1);
}
printf("\n--------------\n");
for (int i = 0; i < row; i++){
printf("%-2d", i + 1); //2
for (int j = 0; j < col; j++){
printf("| %c ", board[i][j]);
}
printf("\n--------------\n");
}
}
static char IsEnd(char board[][COL], int row, int col)//最終結(jié)果
{
for (int i = 0; i < row; i++){
if (board[i][0] == board[i][1] &&
board[i][1] == board[i][2] &&
board[i][0] != INIT){
return board[i][0];
}
}
for (int j = 0; j < COL; j++){
if (board[0][j] == board[1][j] &&
board[1][j] == board[2][j] &&
board[0][j] != INIT){
return board[0][j];
}
}
if (board[0][0] == board[1][1] &&
board[1][1] == board[2][2] &&
board[1][1] != INIT){
return board[1][1]; }
if (board[0][2] == board[1][1] &&
board[1][1] == board[2][0] &&
board[1][1] != INIT){
return board[1][1]; }
for (int i = 0; i < row; i++){
for (int j = 0; j < col; j++){
if (board[i][j] == INIT){
return NEXT;
}
}
}
return DRAW;
}
static void PlayerMove(char board[][COL], int row, int col)//玩家
{ int x = 0; int y = 0;
while (1){
printf("Please Enter Postion<x,y># ");
scanf("%d %d", &x, &y);
if (x < 1 || y < 1 || x > 3 || y > 3){
printf("Enter Postion Error!\n");
continue;
}
if (board[x - 1][y - 1] == INIT){
board[x - 1][y - 1] = WHITE;
break;
}
else{
printf("Postion Is Not Empty!\n");
}
}
}
static void ComputerMove(char board[][COL], int row, int col)//電腦
{
while (1){
int x = rand() % row;
int y = rand() % col;
if (board[x][y] == INIT){
board[x][y] = BLACK;
break;
}
}
}
void Game()
{
char board[ROW][COL];
InitBoard(board, ROW, COL);
srand((unsigned long)time(NULL));
char result = 0;
while (1){
ShowBoard(board, ROW,COL);
PlayerMove(board, ROW,COL);
result = IsEnd(board, ROW, COL);
if (result != NEXT){
break;
}
ShowBoard(board, ROW, COL);
ComputerMove(board,ROW, COL);
result = IsEnd(board, ROW,COL);
if (result != NEXT){
break;
}
}
ShowBoard(board, ROW,COL);
switch (result){
case WHITE:
printf("You Win!\n");
break;
case BLACK:
printf("You Lose!\n");
break;
case DRAW:
printf("You == Computer!\n");
break;
default:
printf("BUG!\n");
break;
}
}
游戲選擇面板(主函數(shù))
#include "game.h"
static void Menu()
{
printf("|------------- 開始游戲 -------------|\n");
printf("+------------- 1. Play -------------+\n");
printf("+------------- 0. Exit -------------+\n");
}
int main()
{
int select = 0;
int quit = 0;
while (!quit){
Menu();
printf("Please Select#");
scanf("%d",&select);
switch (select){
case 1:
Game();
break;
case 0:
quit = 1;
break;
default:
printf("Enter Error, Try Again!\n");
break;
}
}
printf("bye!\n");
system("pause");
return 0;
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C/C++實現(xiàn)矩陣的轉(zhuǎn)置(示例代碼)
C/C++實現(xiàn)矩陣的轉(zhuǎn)置(示例代碼)需要的朋友可以過來參考下,希望對大家有所幫助2013-10-10
C++設(shè)計與實現(xiàn)ORM系統(tǒng)實例詳解
這篇文章主要為大家介紹了C++設(shè)計與實現(xiàn)ORM系統(tǒng)實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09
C語言數(shù)據(jù)結(jié)構(gòu)之順序表和單鏈表
在數(shù)據(jù)結(jié)構(gòu)中,線性表是入門級數(shù)據(jù)結(jié)構(gòu),線性表又分為順序表和鏈表,這篇文章主要給大家介紹了關(guān)于C語言數(shù)據(jù)結(jié)構(gòu)之順序表和單鏈表的相關(guān)資料,需要的朋友可以參考下2021-06-06

