引言
(1) 真正的程式員沒有進度表,只有討好領導的馬屁精才有進度表,真正的程式員會讓領導提心吊膽,
(2) 真正的程式員不寫使用說明書,用戶應當自己去猜想程式的功能,
(3) 真正的程式員幾乎不寫代碼的注釋,如果注釋很難寫,它理所當然也很難讀,
(4) 真正的程式員不畫流程圖,原始人和文盲才會干這事,
(5) 真正的程式員不看參考手冊,新手和膽小鬼才會看,
(6) 真正的程式員不寫檔案也不需要檔案,只有看不懂程式的笨蛋才用檔案,
(7) 真正的程式員認為自己比用戶更明白用戶需要什么,
(8) 真正的程式員不接受團隊開發的理念,除非他自己是頭頭,
(9) 真正的程式員的程式不會在第一次就正確運行,但是他們愿意守著機器進行若干個30 小時的除錯改錯,
(10) 真正的程式員不會在上午 9:00 到下午 5:00 之間作業,如果你看到他在上午 9:00 作業,這表明他從昨晚一直干到現在,
——————————林銳《高質量 C++/C 編程指南》

1.game.h
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
//給行號和列號初始值
#define ROW 3//可更改,如10
#define COL 3//可更改,如10
//初始化棋盤宣告
void InitBoard(char board[ROW][COL], int row, int col);
//列印棋盤宣告
void DisplayBoard(char board[ROW][COL], int row, int col);
//玩家下棋宣告
void PlayerMove(char board[ROW][COL], int row, int col);
//電腦下棋宣告
void ComputerMove(char board[ROW][COL], int row, int col);
//判斷游戲輸,贏,平局
char IsWin(char board[ROW][COL], int row, int col);
2.game.c
#include"game.h"
//棋盤初始化
void InitBoard(char board[ROW][COL], int row, int col)
{
int i = 0;
int j = 0;
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 = 0;
int j = 0;
for (i = 0; i < row; i++)
{
for (j = 0; j < col; j++)
{
printf(" %c ", board[i][j]);
if (j < col - 1)
printf("|");
}
printf("\n");
if (i < row - 1)
{
for (j = 0; j < col; j++)
{
printf("---");
if (j < col - 1)
printf("|");
}
}
printf("\n");
}
}
//玩家下棋
void PlayerMove(char board[ROW][COL], int row, int col)
{
int x = 0;
int y = 0;
printf("玩家落子:>>\n");
while (1)
{
printf("請輸入落子的坐標:>>");
scanf("%d %d", &x, &y);
if ((x >= 1 && x <= row) && (y >= 1 && y <= col))
{
if (board[x - 1][y - 1] == ' ')
{
board[x - 1][y - 1] = '*';
break;
}
else
{
printf("坐標已被占用,請重新輸入\n");
}
}
else
{
printf("坐標輸入錯誤,請重新輸入\n");
}
}
}
//電腦下棋
void ComputerMove(char board[ROW][COL], int row, int col)
{
int x = 0;
int y = 0;
while (1)
{
x = rand() % row;
y = rand() % col;
if (board[x][y] == ' ')
{
board[x][y] = '#';
break;
}
}
}
//判斷棋盤是否滿了
int IsFull(char board[ROW][COL], int row, int col)
{
int i = 0;
int j = 0;
int count = 0;
for (i = 0; i < row; i++)
{
for (j = 0; j < col; j++)
{
if (board[i][j] == ' ')
count++;
}
}
if (count == 0)
return 1;
else
return 0;
}
//判斷游戲輸,贏,平局
char IsWin(char board[ROW][COL], int row, int col)
{
int i = 0;
for (i = 0; i < row; i++)
{
if ((board[i][0] == board[i][1]) && (board[i][0] == board[i][2]) && (board[i][0] != ' '))
{
return board[i][0];
}
}
for (i = 0; i < row; i++)
{
if ((board[0][i] == board[1][i]) && (board[0][i] == board[2][i]) && (board[0][i] != ' '))
{
return board[0][i];
}
}
if ((board[0][0] == board[1][1]) && (board[0][0] == board[2][2]) && (board[0][0] != ' '))
{
return board[0][0];
}
if ((board[0][2] == board[1][1]) && (board[0][2] == board[2][0]) && (board[0][2] != ' '))
{
return board[0][2];
}
int ret = IsFull(board, row, col);
if (ret == 1)
return 'Q';
else
return 'C';
}
3.test.c
#include"game.h"
void GameMenu()
{
printf("*****************************************\n");
printf("************** ***************\n");
printf("************** 1.游戲開始 ***************\n");
printf("************** ***************\n");
printf("************** 0.退出游戲 ***************\n");
printf("************** ***************\n");
printf("*****************************************\n");
}
void PlayGame()
{
char board[ROW][COL] = { 0 };
InitBoard(board, ROW, COL);
DisplayBoard(board, ROW, COL);
char ret = 0;
while (1)
{
PlayerMove(board, ROW, COL);
DisplayBoard(board, ROW, COL);
ret = IsWin(board, ROW, COL);
if (ret != 'C')
break;
ComputerMove(board, ROW, COL);
DisplayBoard(board, ROW, COL);
ret = IsWin(board, ROW, COL);
if (ret != 'C')
break;
}
if (ret == '*')
{
printf("勝利!\n");
}
else if (ret == '#')
{
printf("失敗!\n");
}
else if (ret == 'Q')
{
printf("平局!\n");
}
}
int main()
{
int input = 0;
srand((unsigned int)time(NULL));
do
{
GameMenu();
printf("請選擇:>\n");
scanf("%d", &input);
switch (input)
{
case 1:
PlayGame();
break;
case 0:
printf("退出游戲\n");
break;
default:
printf("選擇錯誤,請重新選擇\n");
break;
}
} while (input);
return 0;
}


轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/280566.html
標籤:其他
上一篇:C語言人機大戰之決戰三子棋之巔
