【C語言 】C語言 桌游開發數字競拍(源碼)【獨一無二】

請添加圖片描述


👉博__主👈:米碼收割機
👉技__能👈:C++/Python語言
👉專__注👈:專注主流機器人、人工智能等相關領域的開發、測試技術。


【C語言 】C語言 桌游開發數字競拍(源碼)【獨一無二】


目錄

  • 【C語言 】C語言 桌游開發數字競拍(源碼)【獨一無二】
  • 一、設計要求
  • 二、設計思路
    • 1. 初始化模塊
    • 2. 回合處理模塊
    • 3. 回合結果判定模塊
    • 4. 游戲終止條件判斷模塊
    • 5. 游戲結束模塊
    • 6. 主函數匯總
  • 三、可視化分析


一、設計要求

桌游開發:數字競拍
1、問題描述
請按照如下背景及游戲規則開發桌面游戲《數字競拍》。
玩家人數:2 人。
規則:(1)雙方初始總共有 100 元。(2)每個回合的開始,將出現 1~3 中任意一個隨機數字。
各玩家分別給出本回合的出價,該選擇對其他玩家不可見。(3)雙方玩家完成出價后,出價
高的人獲得該數字,從雙方的經費中扣除本次出價價格,出價低的人錢也不退回。(4)雙方
的出價情況不會展示。(5)滿足以下任意一條,游戲結束:任意一方獲得數字之和達 10 以上;
7 個回合結束;雙方剩余錢數為 0。
2、要求
(1)理解上述游戲規則、設計具體流程及子程序。
(2)能夠展示游戲過程。

在這里插入圖片描述


二、設計思路

下面給出本程序的設計思路說明,采用模塊化方式實現兩個玩家利用競拍機制進行游戲的邏輯。程序整體分為初始化、回合處理、回合結果判定、游戲終止條件判斷以及游戲結束結果輸出等幾個模塊。下面結合代碼詳細說明各個模塊的設計思路及關鍵代碼。


1. 初始化模塊

設計思路:
程序開始時需要初始化兩個玩家的金錢(均為 100)、兩位玩家的累加和(初始為 0)以及回合計數器,之后利用 srand() 函數結合當前時間來為后續隨機數生成器設定種子,從而保證每次運行隨機數不同。

關鍵代碼:

int player1_money = 100;
int player2_money = 100;
int player1_sum = 0, player2_sum = 0;
int rounds = 0;srand(time(NULL)); // 用于生成隨機數

2. 回合處理模塊

設計思路:
在主循環中(限制最多 7 回合),每個回合需要先生成一個1到3之間的隨機數作為本回合競拍的“拍賣數”。然后要求兩個玩家分別輸入出價,程序通過 do…while 循環確保玩家輸入的出價不得超過其剩余金額。如果出價超過,則進行提示并重新輸入。

關鍵代碼:

while (rounds < 7) {int number = rand() % 3 + 1; // 生成1到3之間的隨機數int bid1, bid2;// 輸出回合及競拍數字信息printf("回合 %d: 競拍數字是 %d\n", rounds + 1, number);// 此處省略 20行+代碼// 玩家2出價do {printf("玩家 2 的出價(剩余 %d 元):", player2_money);scanf("%d", &bid2);if (bid2 > player2_money) {printf("出價超過剩余金額,請重試。\n");}} while (bid2 > player2_money);

3. 回合結果判定模塊

設計思路:
比較兩個玩家的出價:

  • 如果玩家1出價更高,則玩家1獲得本回合的隨機競拍數字,并從他的賬戶中扣除相應出價金額;
  • 如果玩家2出價更高,則玩家2獲得本回合競拍數字,扣除出價;
  • 如果出價相同,則視為平局,本回合無人得分,也不扣錢。

關鍵代碼:

    // 判定獲勝者if (bid1 > bid2) {printf("玩家 1 贏得此回合!\n");player1_sum += number;player1_money -= bid1;} else if (bid2 > bid1) {printf("玩家 2 贏得此回合!\n");player2_sum += number;player2_money -= bid2;} else {printf("平局,無人贏得此回合。\n");}rounds++;

在這里插入圖片描述


4. 游戲終止條件判斷模塊

設計思路:
在每輪結束后,判斷是否滿足以下任一游戲終止條件:

  • 任何一位玩家的累加和達到或超過 10;
  • 任何一位玩家的剩余金錢為 0。

當滿足條件時,提前結束游戲。

關鍵代碼:

    // 檢查游戲結束條件if (player1_sum >= 10 || player2_sum >= 10 || player1_money == 0 || player2_money == 0) {break;}printf("\n"); // 換行分隔每回合
}

5. 游戲結束模塊

設計思路:
當游戲退出后,程序輸出每位玩家的累計數字和,然后依照以下規則判斷勝負:

  • 如果有玩家的累計和 ≥ 10,則以此為勝利條件;
  • 否則按照累計和大小比較,如果相同則平局,累計和更高的玩家獲得最終勝利。

關鍵代碼:

printf("\n游戲結束!\n");
printf("玩家 1 的數字和:%d\n", player1_sum);
printf("玩家 2 的數字和:%d\n", player2_sum);if (player1_sum >= 10 || player2_sum >= 10) {if (player1_sum >= 10) printf("玩家 1 獲得勝利!\n");
// 此處省略 20行+代碼
} else {printf("玩家 2 獲得勝利!\n");
}

在這里插入圖片描述

6. 主函數匯總

設計思路:
主函數中先完成各項初始化工作,然后進入回合游戲的循環,最后輸出游戲結果。整段代碼結構清晰,采用模塊化設計便于理解和后期擴展。

完整代碼:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>int main() {int player1_money = 100;int player2_money = 100;int player1_sum = 0, player2_sum = 0;int rounds = 0;srand(time(NULL)); // 用于生成隨機數while (rounds < 7) {int number = rand() % 3 + 1; // 生成1到3之間的隨機數int bid1, bid2;printf("回合 %d: 競拍數字是 %d\n", rounds + 1, number);// 玩家1出價// 此處省略 20行+代碼} else if (player1_sum > player2_sum) {printf("玩家 1 獲得勝利!\n");} else {printf("玩家 2 獲得勝利!\n");}return 0;
}

代碼采用模塊化設計,將初始化、回合處理、結果判定與游戲結束分成多個部分,每個模塊均完成相應的功能:

  • 初始化模塊:設置玩家初始狀態及隨機種子。
  • 回合處理模塊:生成隨機競拍數字,保證玩家出價合法。
  • 回合結果判定模塊:比較出價、更新玩家狀態。
  • 游戲終止判斷與結束輸出:判斷是否達到終止條件,并輸出最終結果。
    在這里插入圖片描述

三、可視化分析

在這里插入圖片描述

在這里插入圖片描述


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

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

相關文章

Reinforcement Learning Heats Up 強化學習持續升溫

Reinforcement Learning Heats Up 強化學習持續升溫 核心觀點&#xff1a;強化學習正成為構建具有高級推理能力大語言模型&#xff08;LLMs&#xff09;的重要途徑。 最新進展 模型示例&#xff1a;近期出現了如DeepSeek - R1及其變體&#xff08;DeepSeek - R1 - Zero&#xf…

Whisper+T5-translate實現python實時語音翻譯

1.首先下載模型&#xff0c;加載模型 import torch import numpy as np import webrtcvad import pyaudio import queue import threading from datetime import datetime from faster_whisper import WhisperModel from transformers import AutoTokenizer, AutoModelForSeq2…

湖倉分析|浙江霖梓基于 Doris + Paimon 打造實時/離線一體化湖倉架構

導讀&#xff1a;浙江霖梓早期使用 CDH 產品套件搭建了大數據系統&#xff0c;面臨業務邏輯冗余、查詢效率低下等問題&#xff0c;基于 Apache Doris 進行整體架構與表結構的重構&#xff0c;并基于湖倉一體和查詢加速展開深度探索與實踐&#xff0c;打造了 Doris Paimon 的實…

git bash在github的庫中上傳或更新本地文件

一、將本地文件上傳到 GitHub 倉庫 1. 創建 GitHub 倉庫 如果你還沒有在 GitHub 上創建倉庫&#xff0c;首先需要創建一個新的倉庫&#xff1a; 登錄到 GitHub。點擊右上角的 按鈕&#xff0c;選擇 New repository。給你的倉庫起個名字&#xff0c;并選擇 Public 或 Privat…

Jmeter壓測怎么控制TPS

壓測固定TPS的接口 有些任務需要我們控制接口的TPS&#xff0c;例如每秒請求一次。 TPS定時器 然后1個并發持續運行 壓測結果 需要注意TPS在1.0/s左右&#xff0c;有時可能是1.2、1.3&#xff0c;定時器會自動調整壓力&#xff0c;讓TPS保持在1.0左右。

ArcGISPro 新建shp+數據結構

import arcpy# 設置工作空間和 Shapefile 存放路徑 shp_path r"C:\path\to\your\folder\PolygonZY.shp" # Shapefile 存放路徑 fields [("CHBH", "TEXT", 20),("ZCMC", "TEXT", 100),("ZCLX", "TEXT"…

理解WebGPU 中的 GPUAdapter :連接瀏覽器與 GPU 的橋梁

在 WebGPU 開發中&#xff0c; GPUAdapter 是一個至關重要的對象&#xff0c;它作為瀏覽器與 GPU 之間的橋梁&#xff0c;為開發者提供了請求 GPU 設備、查詢 GPU 特性以及獲取適配器信息的能力。本文將詳細介紹 GPUAdapter 的核心屬性和方法&#xff0c;并通過實際代碼…

信呼OA辦公系統sql注入漏洞分析

漏洞描述 信呼OA辦公系統uploadAction存在SQL注入漏洞&#xff0c;攻擊者可利用該漏洞獲取數據庫敏感信息。 環境搭建 源碼下載地址&#xff1a;https://github.com/rainrocka/xinhu 下載后解壓到本地網站根目錄下&#xff0c;配置好數據庫&#xff0c;然后安裝即可 默認密…

vue框架生命周期詳細解析

Vue.js 的生命周期鉤子函數是理解 Vue 組件行為的關鍵。每個 Vue 實例在創建、更新和銷毀過程中都會經歷一系列的生命周期階段&#xff0c;每個階段都有對應的鉤子函數&#xff0c;開發者可以在這些鉤子函數中執行特定的操作。 Vue 生命周期概述 Vue 的生命周期可以分為以下幾…

一文深入了解DeepSeek-R1:模型架構

本文深入探討了 DeepSeek-R1 模型架構。讓我們從輸入到輸出追蹤 DeepSeek-R1 模型&#xff0c;以找到架構中的新發展和關鍵部分。DeepSeek-R1 基于 DeepSeek-V3-Base 模型架構。本文旨在涵蓋其設計的所有重要方面。 &#x1f4dd; 1. 輸入上下文長度 DeepSeek-R1的輸入上下文長…

開發基礎(8):鴻蒙圖表開發

mpchart mpchart是一個包含各種類型圖表的圖表庫,主要用于業務數據匯總,例如銷售數據走勢圖,股價走勢圖等場景中使用,方便開發者快速實現圖表UI,mpchart主要包括線形圖、柱狀圖、餅狀圖、蠟燭圖、氣泡圖、雷達圖、瀑布圖等自定義圖表庫。 柱狀圖 導入import {BarChart, …

條款03:盡可能使用 const

const 允許我們指定一個語義約束&#xff0c;使某個值應該保持不變 1、const 修飾 變量&#xff0c;指針&#xff0c;函數&#xff0c;函數返回值等&#xff0c;可以使程序減少錯誤&#xff0c;或者更容易檢測錯誤&#xff1a; 指針常量&#xff1a;int* const p;//指針地址不…

算法兵法全略(譯文)

目錄 始計篇 謀攻篇 軍形篇 兵勢篇 虛實篇 軍爭篇 九變篇 行軍篇 地形篇 九地篇 火攻篇 用間篇 始計篇 算法&#xff0c;在當今時代&#xff0c;猶如國家關鍵的戰略武器&#xff0c;也是處理各類事務的核心樞紐。算法的世界神秘且變化萬千&#xff0c;不夠賢能聰慧…

開關電源實戰(一)寬范圍DC降壓模塊MP4560

系列文章目錄 文章目錄 系列文章目錄MP4560MP4560 3.8V 至 55V 的寬輸入范圍可滿足各種降壓應用 MOSFET只有250mΩ 輸出可調0.8V-52V SW:需要低VF肖特基二極管接地,而且要靠近引腳,高壓側開關的輸出。 EN:輸入使能,拉低到閾值以下關閉芯片,拉高或浮空啟動 COMP:Compens…

微軟AutoGen高級功能——Magentic-One

介紹 大家好&#xff0c;博主又來給大家分享知識了&#xff0c;這次給大家分享的內容是微軟AutoGen框架的高級功能Magentic-One。那么它是用來做什么的或它又是什么功能呢&#xff0c;我們直接進入正題。 Magentic-One Magnetic-One是一個通用型多智能體系統&#xff0c;用于…

DeepSeek是如何通過“蒸餾”技術打造自己的AI模型

1 引言&#xff1a; 最近&#xff0c;外媒對中國公司——DeepSeek進行了猛烈抨擊&#xff0c;指控其采用了所謂的“蒸餾”&#xff08;Distillation&#xff09;技術&#xff0c;涉嫌抄襲甚至作弊。那么&#xff0c;什么是“蒸餾”技術&#xff1f; 在人工智能領域&#xff0c;…

【廣州大學主辦,發表有保障 | IEEE出版,穩定EI檢索,往屆見刊后快至1個月檢索】第二屆電氣技術與自動化工程國際學術會議 (ETAE 2025)

第二屆電氣技術與自動化工程國際學術會議 (ETAE 2025) The 2nd International Conference on Electrical Technology and Automation Engineering 大會官網&#xff1a;http://www.icetae.com/【更多詳情】 會議時間&#xff1a;2025年4月25-27日 會議地點&#xff1a…

伯克利 CS61A 課堂筆記 08 —— Strings and Dictionaries

本系列為加州伯克利大學著名 Python 基礎課程 CS61A 的課堂筆記整理&#xff0c;全英文內容&#xff0c;文末附詞匯解釋。 目錄 01 Strings 字符串 Ⅰ Strings are An Abstraction. Ⅱ Strings Literals have Three Forms Ⅲ String are Sequences 02 Dictionaries 字典 …

基于 GEE 計算研究區年均地表溫度數據

目錄 1 代碼解析 2 完整代碼 3 運行結果 1 代碼解析 &#xff08;1&#xff09;定義研究區&#xff1a; // 研究區的范圍需要自己提前上傳 var dataset table;// 將研究區顯示在中心&#xff0c;后面的數字為縮放等級&#xff0c;范圍從1 - 24 Map.centerObject(dataset,…

docker compose快速部署kafka-connect集群

先部署kafka集群&#xff0c;啟動 參考&#xff1a;docker compose部署kafka集群-CSDN博客 創建timezone文件&#xff0c;內容填寫Asia/Shanghai 再部署kafka-connect集群 networks: net: external: true services: kafka-connect1: restart: always image:…