1. 程式人生 > >C語言三字棋遊戲先簡單介紹一下三子棋的規則,方便我們接下來的程式設計和理解。規則如下: 在九宮格棋盤上,只要將自己的三個棋子走成一條線(橫、豎、對角線),對方就算輸了。

C語言三字棋遊戲先簡單介紹一下三子棋的規則,方便我們接下來的程式設計和理解。規則如下: 在九宮格棋盤上,只要將自己的三個棋子走成一條線(橫、豎、對角線),對方就算輸了。

//判斷輸贏
char IsWin(char arr[ROW][COL], int row, int col)
{
	int i;
	for (i = 0; i < row; i++)
	{
		if (arr[i][0] == arr[i][1] && arr[i][1] == arr[i][2] )//判斷列是否相同
		{
			if (arr[i][1] == 'X')
			{
				printf("你連電腦都打不過好菜!!!\n");
				return 1;
			}
				
			if (arr[i][1] == 'O')
			{
				printf("恭喜你你贏了!!!\n");
				return 1;
			}
		}
		
	}
	for (i = 0; i < col; i++)
	{
		if (arr[0][i] == arr[1][i] && arr[1][i] ==arr[2][i] )//判斷行是否相同
		{
			if (arr[1][i] == 'X')
			{
				printf("你連電腦都打不過好菜!!!\n");
				return 1;
			}

			if (arr[1][i] == 'O')
			{
				printf("恭喜你你贏了!!!\n");
				return 1;
			}
		}
		
	}
	if (arr[0][0] == arr[1][1] && arr[1][1] == arr[2][2] && arr[1][1])//判斷左斜線是否相同
	{
		if (arr[1][1] == 'X')
		{
			printf("你連電腦都打不過好菜!!!\n");
			return 1;
		}

		if (arr[1][1] == 'O')
		{
			printf("恭喜你你贏了!!!\n");
			return 1;
		}
	}
	if (arr[2][0] == arr[1][1] && arr[1][1] == arr[0][2] && arr[1][1])//判斷右斜線是否相同
	{
		if (arr[1][1] == 'X')
		{
			printf("你連電腦都打不過好菜!!!\n");
			return 1;
		}

		if (arr[1][1] == 'O')
		{
			printf("恭喜你你贏了!!!\n");
			return 1;
		}
	}
	else if (IsFull(arr, row, col))
	return 0;
}
由於可能出現棋盤下滿,卻沒人獲勝的情況,所以我們需要在其中判斷一下平局的情況,我們就寫個IsFull函式來判斷棋盤是否下滿。

相關推薦

利用SHAPEITvcf文件進行基因型genotype定相phasing查看兩突變是否來源於同一染色體或父本或母本

soft jar GC maps tst PE mes center mat 首先,下載SHAPEIT. 按照裏面的步驟安裝完後,將vcf文件進行基因型定相,分四步走。 第一步,將vcf文件轉化為plink二進制文件(.bed, .bim, .fam)。 這一步

MySQL語句獲取最後記錄ID數值最大的 - - Java EE

使用升序排序,將ID數值最大的放到最頂部。並顯示出來。 order by % desc 表示按降序排序 在sql語句的最後加上 limit 0,1 只取第一條記錄 select * from 表名 order by 表中ID欄位名稱 desc limit 0,1;

c語言從入門到精通》看書筆記——第16章 網路套程式設計——網路

      (1)TCP協議:傳輸協議(TCP)是一種提供克勞資料傳送的通用協議,他是TCP/IP體系結構中傳輸層上的協議。在傳送資料時,應用層的資料傳輸到傳輸層,傢伙是哪個TCP首部,資料就構成了報文。報文就是網路層IP的資料,如果再加上IP首部,就構成了IP資料報。TCP協議的C語言資料描述如下:  

【loj-1055-Going Together-棋子推箱子到目的地--講預判的bfs】

題目 step 是否 3.x 單個 size inf AI fin light oj 1055-Going Together 題目大致意思:   簡單的三個棋子,每次可以下達一個命令,robots全部按照指令進行前進;若下一步不為空地則停留在原地。   特殊考慮:     

三字遊戲簡單實現

三字棋遊戲:玩家與電腦對抗,棋盤是3*3的小方格,當任一行或任一列,或者正對角線,或者副對角線棋子個數為三或棋子型別完全一致,則該把棋局就贏了,但是如果棋盤滿了有沒有贏,則為平局。下面我們就開始我們的程式設計: chess.h 標頭檔案(用於函式的宣告) chess.c 原始檔(用於函式的定

C語言實現掃雷遊戲要求第一次不踩雷能展開片雷區望各位大佬斧正

對於實現掃雷遊戲思路如下: 首先佈置一定大小的掃雷區如9*9 隨機(rand())佈置一定數量的雷 實現掃雷(其中要求第一次踩不到雷,能展開一片無雷區) 其具體操作如下: 建立game.h, game.c, test.c檔案以便整理 在test.c檔案中:

ACMNO.38 C語言-報數 有n人圍順序排號從第1個人開始報數從1到3報數凡報到3的人退出圈子問最後留下的是原來的第幾號的那位

題目描述 有n人圍成一圈,順序排號。 從第1個人開始報數(從1到3報數),凡報到3的人退出圈子。`在這裡插入程式碼片` 問最後留下的是原來的第幾號的那位。 輸入 初始人數n 輸出 最後一人的初始編號 樣例輸入 3 樣例輸出 2 來源/分類

簡單C語言猜數遊戲

#include<time.h> #include<stdlib.h> void meau() {printf("**************************\n");printf("***1.start     2.end    ***\n");printf("*******

1098: C語言程式設計教程課後習題10.5---有n人圍順序排號從第1個人開始報數從1到3報數凡報到3的人退出圈子問最後留下的是原來的第幾號的那位

題目描述 有n人圍成一圈,順序排號。從第1個人開始報數(從1到3報數),凡報到3的人退出圈子,問最後留下的是原來的第幾號的那位。 輸入 初始人數n 輸出 最後一人的初始編號 樣例輸入 3 樣例輸出 2 提示 來源 思路點撥:定義一個數組,陣列下標表示人的編號,若數組裡面的

C語言語句完成結構體定義變數建立成員初始化

struct { struct nlmsghdr nlh; struct netlink_diag_req ndr; } req = { .nlh = { .nlmsg_len = sizeof(req), .nlm

實現0.5px的

red -s content absolut width tom -o 前綴 ont .box{   position: relative; } .box::after{   content: ‘‘;   position: absolute;   width: 200%

鼠標移到某個地方時從左向右劃出的動畫

spl near webkit forward line for solid linear clas .line { border-bottom: 2px solid #E40012; width:0px; display: inline-bloc

C++入門經典-例6.10-多維數組轉換維數組

ima clas ++ c++ pla stream include ace .com 1:代碼如下: // 6.10.cpp : 定義控制臺應用程序的入口點。 // #include "stdafx.h" #include <iostream> usin

C語言 黃金點遊戲

eof i++ 重復 size strcpy_s ++ == math 打印   今天用C語言把這個寫出來了,雖然c不是很熟,寫的還是蠻簡單,目前還想寫一個判斷輸入數字是否重復,重復就需要重新輸入,由於時間原因,還沒有寫。   代碼: #include<stdio.

如何在Mac的NTFS格式化驅動器 - 簡單的步驟

是什麽 win splay 我們 情況 goods eight tiger 許可 在運行macOS或OS X的Mac和運行Windows的PC之間共享數據可能並不那麽簡單。默認情況下,Mac只能從Windows格式的外部硬盤讀取文件,而不能寫入文件。這可以防止您使用Mac

Qt的paint函數重寫以及QPaint給繪制箭頭

ons eal mark .net urn div stat class sdn 直接代碼: QPainter *painter; static const double Pi = 3.1415926535897932384626433832795

KafkaZK+Kafka+Spark Streaming集群環境搭建二十五Structured Streaming同一個topic中包含組數據的多部分按照key它們拼接為記錄以及遇到的問題

eas array 記錄 splay span ack timestamp b- each 需求: 目前kafka的topic上有一批數據,這些數據被分配到9個不同的partition中(就是發布時key:{m1,m2,m3,m4...m9},value:{records

ECharts 多座標軸軸線合併為

一、問題 2條y軸,y軸的座標軸軸線axisLine太多,擾人視線,如圖 二、經過 剛開始用分割線(yAxis.splitLine)做出來的這個效果。 後期,改為兩條線合併為一條。 網上找一個沒有關於splitLine的設定,查詢ECharts,發現一

C++從零開始區塊鏈P2P模組之簡單介紹一下原理

想徹底說明P2P的原理太麻煩了,而且這種東西網上一搜就是一大堆(雖然好多連結其實都是同一篇文章),這裡就不贅述了,只簡單說一下本例所用到的一些東西。 如果所有節點都在公網上,p2p通訊就非常容易,找臺搭橋伺服器,每個節點啟動的時候都向搭橋伺服器註冊自己,並獲取其他節點資訊,然後就可以節點間