C——五子棋小游戲

前言

五子棋,又稱連珠棋,是一種雙人對弈的棋類游戲。游戲目標是在一個棋盤上,通過在橫、豎、斜線上依次放置棋子,使自己的五個棋子連成一線,即橫線、豎線或斜線,且無被對手堵住的空位,從而獲勝。

實現簡單的五子棋游戲,需要有二維數組、函數調用等知識。我使用的編譯器是:VS2022。

代碼如果有顯示錯誤可把scanf改為scanf_s。

一、游戲規則

棋盤與開局
棋盤:標準的五子棋棋盤通常是橫縱各 15 條線交叉組成的正方形,形成 15×15 共 225 個交叉點,當然也有其他規格如 19×19 的棋盤存在,但 15×15 使用最為普遍。這些交叉點就是雙方落子的位置。
開局:對局開始前,棋盤為空。一般規定黑子先落子,之后雙方輪流在棋盤的空交叉點上放置棋子,白子隨后按順序落子。
落子規則
雙方交替將自己顏色的棋子(黑方執黑子,白方執白子)放置在棋盤的空交叉點上,每次只能落一子,且落子位置必須是沒有棋子的空交叉點,不可以在已有棋子占據的點或者棋盤范圍之外落子。
獲勝判定
常規五子連珠獲勝:當一方成功在棋盤的橫、豎、斜方向上連續放置五個同色棋子時,即達成五子連珠,該方立即獲勝,對局結束。例如,橫排連續五個黑子或者豎排連續五個白子等情況出現,對應的棋手便贏得比賽。
特殊規則下的獲勝(禁手規則適用情況,多用于競技比賽中限制黑方先行優勢)
三三禁手:黑方一子落下同時形成兩個或兩個以上的 “活三”(“活三” 指再落一子就能形成五子連珠的三枚同色連續棋子且兩端有空點可延伸),則此點為三三禁手,黑方若下在此處違規,白方獲勝。
四四禁手:黑方一子落下同時形成兩個或兩個以上的 “活四”(“活四” 指已有四枚同色連續棋子且兩端有空點可延伸,下子必成五子連珠的棋形),此點為四四禁手,黑方下在此處算違規,白方獲勝。
長連禁手:黑方一子落下形成連續六個或六個以上同色棋子,稱為長連禁手,黑方違規,白方獲勝。
和棋判定
滿盤情況:如果棋盤上所有的交叉點都已經落有棋子,雙方均未達成五子連珠,此時判定為和棋,對局結束。
循環局面:在對弈過程中,若出現雙方反復下出相同局面,經過判定符合循環局面和棋的相關規定,也會判定為和棋結束對局。

以上是詳細的五子棋規則,簡單來說就是:兩位玩家分別執黑棋和白棋,輪流在15*15的棋盤內落子,先一步在橫、豎、斜三種情況下相連五個相同顏色的棋子的一方勝利。如果棋盤填滿尚未由一位玩家五子相連,即判平局。特殊情況特殊判勝負。

二、游戲實現思路

  1. 使用坐標輸入代替鼠標點擊,坐標應該符合人們使用習慣從1開始;(【鼠標左擊】功能)
  2. 若有人勝利提示勝利方為誰,并結束游戲;
  3. 若無人勝利,且棋盤未滿,提示繼續;
  4. 若棋盤已滿,提示平局;
  5. 實現清屏功能,每次落完子之后刷新屏幕;
  6. 可以加入進度條,在游戲開始時展示。

三、各個代碼的用處

將源代碼分為三個文件,一個頭文件(.h),一個源文件(.c),一個測試文件(test.c)。

頭文件gobang.h:用于聲明函數和定義常量等。

源文件gobang.c:實現頭文件中生命的函數。

測試文件test.c:調用上述函數實現游戲邏輯。

四、代碼實現

gobang.h

gobang.c

test.c

總結

實際上這個版本還是一個非常簡易的版本,在之后學習到別的模塊之后可以對這個項目再進行改進,比如可以嘗試以下功能:

人機對戰

功能擴展:顏色提示,步數記錄,先手隨機交換等

網絡版本

以上便是此次分享,希望本篇博客對大家有幫助。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/80689.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/80689.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/80689.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ik 分詞器 設置自定義詞典

進入 ES 的安裝目錄,進入 /elasticsearch-8.10.0/plugins/ik/config/ 文件夾目錄,打開 IKAnalyzer.cfg.xml 文件進行配置。 一、添加 自定義擴展詞典 擴展詞:就是不想哪些詞分開,讓他們成為一個詞,比如“蒙的全是對…

Linux筆記---信號(上)

1. 信號的概念 Linux下的信號機制是一種進程間通信(IPC)的方式,用于在不同進程之間傳遞信息。 信號是一種異步的信息傳遞方式,這意味著發送信號的進程只發送由信號作為載體的命令,而并不關心接收信號的進程如何處置這…

UG 二次開發- UG內部調用DLL

【1】用VS新建一個dll工程 將項目設置為x64平臺(這步很重要,否則程序無法編譯成功) 【2】添加UG頭文件目錄,屬性頁->C/C->常規->附加包含目錄 【3】添加UG庫所在目錄,屬性頁->鏈接器->常規->附加庫目…

wordcount在mapreduce的例子

1.啟動集群 2.創建項目 項目結構為&#xff1a; 3.pom.xml文件為 <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://mave…

智慧城市綜合運營管理系統Axure原型

這款Axure原型的設計理念緊緊圍繞城市管理者的需求展開。它旨在打破傳統城市管理中信息孤島的局面&#xff0c;通過統一標準接入各類業務系統&#xff0c;實現城市運營管理信息資源的全面整合與共享。以城市管理者為中心&#xff0c;為其提供一個直觀、便捷、高效的協同服務平臺…

Go語言:json 作用和語法

在 Go 語言中&#xff0c;JSON 字段&#xff08;也稱為 JSON Tag&#xff09;是附加在結構體字段上的元數據&#xff0c;用于控制該字段在 JSON 編碼&#xff08;序列化&#xff09;和解碼&#xff08;反序列化&#xff09; 時的行為。它的語法是&#xff1a; type StructName…

MATLAB復制Excel數據到指定區域

Matlab中如何將Excel表中的265-528行F-AA列數據復制到1-263行AE-AZ中 版本&#xff1a;MatlabR2018b clc; clear; %舊Excel文件名 oldFile ; %新Excel文件名 newFile ; % 工作表名稱&#xff08;舊表和新表一致&#xff09; sheetName Sheet1; % 舊文件中待復制的數據范…

vue3+flask+sqlite前后端項目實戰

基礎環境安裝 pycharm 下載地址&#xff1a; https://www.jetbrains.com/zh-cn/pycharm/download/?sectionwindows vscode 下載地址 https://code.visualstudio.com/docs/?dvwin64user python 下載地址 https://www.python.org/downloads/windows/ Node.js&#xff08;含npm…

Java 內存模型(JMM)與內存屏障:原理、實踐與性能權衡

Java 內存模型&#xff08;JMM&#xff09;與內存屏障&#xff1a;原理、實踐與性能權衡 在多線程高并發時代&#xff0c;Java 內存模型&#xff08;JMM&#xff09; 及其背后的內存屏障機制&#xff0c;是保障并發程序正確性與性能的基石。本文將系統梳理 JMM 的核心原理、內…

動手學深度學習12.3.自動并行-筆記練習(PyTorch)

以下內容為結合李沐老師的課程和教材補充的學習筆記&#xff0c;以及對課后練習的一些思考&#xff0c;自留回顧&#xff0c;也供同學之人交流參考。 本節課程地址&#xff1a;無 本節教材地址&#xff1a;12.3. 自動并行 — 動手學深度學習 2.0.0 documentation 本節開源代…

C++類和對象之初始化列表

初始化列表 C初始化列表詳解&#xff1a;性能優化與正確實踐什么是初始化列表&#xff1f;初始化列表的三大核心作用1. 性能優化&#xff1a;避免不必要的賦值操作2. 強制初始化&#xff1a;處理const和引用成員3. 基類初始化&#xff1a;正確調用父類構造函數4.必須使用初始化…

continue通過我們的開源 IDE 擴展和模型、規則、提示、文檔和其他構建塊中心,創建、共享和使用自定義 AI 代碼助手

?一、軟件介紹 文末提供程序和源碼下載 Continue 使開發人員能夠通過我們的開源 VS Code 和 JetBrains 擴展以及模型、規則、提示、文檔和其他構建塊的中心創建、共享和使用自定義 AI 代碼助手。 二、功能 Chat 聊天 Chat makes it easy to ask for help from an LLM without…

基于Spring Boot + Vue的母嬰商城系統( 前后端分離)

一、項目背景介紹 隨著母嬰行業在互聯網平臺的快速發展&#xff0c;越來越多的家庭傾向于在線選購母嬰產品。為了提高商品管理效率和用戶購物體驗&#xff0c;本項目開發了一個基于 Spring Boot Vue 技術棧的母嬰商城系統&#xff0c;實現了商品分類、商品瀏覽、資訊展示、評…

實戰演練:用 AWS Lambda 和 API Gateway 構建你的第一個 Serverless API

實戰演練:用 AWS Lambda 和 API Gateway 構建你的第一個 Serverless API 理論千遍,不如動手一遍!在前面幾篇文章中,我們了解了 Serverless 的概念、FaaS 的核心原理以及 BaaS 的重要作用。現在,是時候把這些知識運用起來,親手構建一個簡單但完整的 Serverless 應用了。 …

node.js 實戰——express圖片保存到本地或服務器(七牛云、騰訊云、阿里云)

本地 ? 使用formidable 讀取表單內容 npm i formidable ? 使用mime-types 獲取圖片后綴 npm install mime-types? js 中提交form表單 document.getElementById(uploadForm).addEventListener(submit, function(e){e.preventDefault();const blob preview._blob;if(!blob)…

2025最新:3分鐘使用Docker快速部署單節點Redis

&#x1f9d1;?&#x1f3eb; 詳細教程&#xff1a;通過 Docker 安裝單節點 Redis &#x1f6e0;? 前提條件&#xff1a; 你需要在 Ubuntu 系統上進行操作&#xff08;如果你在其他系統上操作&#xff0c;可以按相似步驟進行調整&#xff09;。已安裝 Docker 和 Docker Com…

CentOS 7 系統下安裝 OpenSSL 1.0.2k 依賴問題的處理

前面有提到過這個openssl的版本沖突問題&#xff0c;也是在這次恢復服務器時遇到的問題&#xff0c;我整理如下&#xff0c;供大家參考。小小一個軟件的安裝&#xff0c;挺坑的。 一、問題 項目運行環境需要&#xff0c;指定PHP7.0.9這個版本&#xff0c;但是?系統版本與軟件…

LoRA(Low-Rank Adaptation)原理詳解

LoRA(Low-Rank Adaptation)原理詳解 LoRA(低秩適應)是一種參數高效微調(Parameter-Efficient Fine-Tuning, PEFT)技術,旨在以極低的參數量實現大模型在特定任務上的高效適配。其核心思想基于低秩分解假設,即模型在適應新任務時,參數更新矩陣具有低秩特性,可用少量參…

Solana批量轉賬教程:提高代幣持有地址和生態用戶空投代幣

前言 Solana區塊鏈因其高吞吐量和低交易費用成為批量操作&#xff08;如空投&#xff09;的理想選擇。本教程將介紹幾種在Solana上進行批量轉賬的方法&#xff0c;幫助您高效地向多個地址空投代幣。 solana 賬戶模型 在Solana中有三類賬戶&#xff1a; 數據賬戶&#xff0c;…

基于LSTM與SHAP可解釋性分析的神經網絡回歸預測模型【MATLAB】

基于LSTM與SHAP可解釋性分析的神經網絡回歸預測模型【MATLAB】 一、引言 在數據驅動的智能時代&#xff0c;時間序列預測已成為許多領域&#xff08;如金融、氣象、工業監測等&#xff09;中的關鍵任務。長短期記憶網絡&#xff08;LSTM&#xff09;因其在捕捉時間序列長期依…