C/C++編程筆記:C語言實現(xiàn)“井字棋”小游戲,零基礎(chǔ)項目(含源碼)
在這里我們要寫出一個井子棋的小游戲,能夠?qū)崿F(xiàn)所需要的三字連珠的功能,并且可以使得游戲讓玩家進行選擇是否繼續(xù)的功能。
本項目為C語言零基礎(chǔ)小項目,可供C語言入門者學(xué)習(xí)。
效果圖:

代碼:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define ROW 3
#define COL 3
void init_board(char arr[ROW][COL])
{
? int i=0;
? int j=0;
? for (i = 0; i < ROW; i++)
? {
? ? for (j = 0; j < COL; j++)
? ? {
? ? ? arr[i][j] = ' ';
? ? }
? }
}
void display_board(char arr[ROW][COL])
{
? int i = 0;
? for (i = 0; i < ROW; i++)
? {
? ? printf(" %c|%c |%c\n", arr[i][0], arr[i][1], arr[i][2]);
? ? if (i < 2)
? ? {
? ? ? printf("--|--|--");
? ? }
? ? printf("\n");
? }
}
void player_chess(char arr[ROW][COL])
{
? int x = 0;
? int y = 0;
? while (1)
? {
? ? printf("請輸入你所要下棋的方位:");
? ? scanf("%d%d", &x, &y);
? ? x--;
? ? y--;
? ? if (arr[x][y] == ' ')
? ? {
? ? ? arr[x][y] = '#';
? ? ? break;
? ? }
? ? else
? ? {
? ? ? printf("這個位置已經(jīng)被占,請重新下棋。\n");
? ? ? continue;
? ? }
? }
}
void computer_chess(char arr[ROW][COL])
{
? srand((unsigned)time(NULL));
? while (1)
? {
? ? int x = 0;
? ? int y = 0;
? ? srand((unsigned)time(NULL));
? ? x = rand() % 3;
? ? y = rand() % 3;
? ? if (arr[x][y] == ' ')
? ? {
? ? ? arr[x][y] = '@';
? ? ? break;
? ? }
? ? else
? ? {
? ? ? if (check_full(arr) == 0)
? ? ? {
? ? ? ? continue;
? ? ? }
? ? ? else
? ? ? {
? ? ? ? break;
? ? ? }
? ? }
? }
}
int check_full(char arr[ROW][COL])
{
? int i = 0;
? int j = 0;
? for (i = 0; i < ROW; i++)
? {
? ? for (j = 0; j < COL; j++)
? ? {
? ? ? if (arr[i][j] == ' ')
? ? ? {
? ? ? ? return 0;
? ? ? }
? ? }
? }
? return 1;
}
char check_win(char arr[ROW][COL])
{
? int i = 0;
? int ret = 0;
? for (i = 0; i < ROW; i++)
? {
? ? if ((arr[i][0] == arr[i][1]) && (arr[i][2] == arr[i][1]))
? ? {
? ? ? return arr[i][0];
? ? }
? }
? for (i = 0; i < COL; i++)
? {
? ? if ((arr[0][i] == arr[1][i]) && (arr[2][i] == arr[1][i]))
? ? {
? ? ? return arr[0][i];
? ? }
? }
? if ((arr[0][0] == arr[1][1]) && (arr[1][1] == arr[2][2]))
? {
? ? return arr[0][0];
? }
? if ((arr[0][2] == arr[1][1]) && (arr[1][1] == arr[2][0]))
? {
? ? return arr[2][0];
? }
? ret = check_full(arr);
? if (ret == 1)
? {
? ? return 'q';
? }
? return ' ';
}
int main()
{
? char arr[ROW][COL] = { 0 };
? int input = 1;
? while (input)
? {
? ? printf("請選擇是否開始游戲:");
? ? printf("1:繼續(xù)游戲,0:結(jié)束游戲");
? ? scanf("%d", &input);
? ? switch (input)
? ? {
? ? case 1:{
? ? ? char ret = 0;
? ? ? init_board(arr);
? ? ? do
? ? ? {
? ? ? ? display_board(arr);
? ? ? ? player_chess(arr);
? ? ? ? display_board(arr);
? ? ? ? if (check_win(arr) != ' ')
? ? ? ? {
? ? ? ? ? ret = check_win(arr);
? ? ? ? ? break;
? ? ? ? }
? ? ? ? computer_chess(arr);
? ? ? ? ret = check_win(arr);
? ? ? } while (ret == ' ');
? ? ? display_board(arr);
? ? ? if (ret == '#')
? ? ? {
? ? ? ? printf("玩家贏的游戲\n");
? ? ? }
? ? ? else if (ret == '@')
? ? ? {
? ? ? ? printf("電腦贏的游戲\n");
? ? ? }
? ? ? else if (ret == 'q')
? ? ? {
? ? ? ? printf("游戲平局\n");
? ? ? }
? ? }
? ? ? break;
? ? case 0:
? ? ? break;
? ? }
? }
? system("pause");
? return 0;
}
程序如果有不足之處,希望大家能夠多多指出來。
以上就是本文的全部內(nèi)容,也希望對大家的學(xué)習(xí)有所幫助!

學(xué)習(xí)C/C++編程知識,提升C/C++編程能力,歡迎關(guān)注UP一起來成長!
另外,UP在主頁上傳了一些學(xué)習(xí)C/C++編程的視頻教程(含C語言入門全套),有興趣或者正在學(xué)習(xí)的小伙伴一定要去看一看哦!會對你有幫助的~