【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;
}
代码采用模块化设计,将初始化、回合处理、结果判定与游戏结束分成多个部分,每个模块均完成相应的功能:
- 初始化模块:设置玩家初始状态及随机种子。
- 回合处理模块:生成随机竞拍数字,保证玩家出价合法。
- 回合结果判定模块:比较出价、更新玩家状态。
- 游戏终止判断与结束输出:判断是否达到终止条件,并输出最终结果。
三、可视化分析
相关文章:
【C语言 】C语言 桌游开发数字竞拍(源码)【独一无二】
👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。 【C语言 】C语言 桌游开发数字竞拍(源码…...
开源赋能,智造未来:Odoo+工业物联网,解锁智能工厂新范式——以真实案例解读制造业数字化转型的降本增效密码
工业物联网的机遇与挑战:为什么企业需要Odoo? 《中国智能制造发展研究报告2023》指出,85%的制造企业已启动数字化转型,但超60%面临“数据孤岛、系统割裂、成本高企”的痛点[1]。传统ERP系统难以实时对接产线设备,而定…...
在分布式场景下可以使用synchronized加锁么?
首先说结论,在分布式系统中,单纯使用 Java 中的 synchronized 关键字是无法满足需求的,下面从 synchronized 的作用原理、在分布式场景下的局限性以及替代方案等方面详细分析。 一、synchronized 的作用原理 在 Java 中,synchron…...
DeepSeek从入门到精通:提示词设计的系统化指南
目录 引言:AIGC时代的核心竞争力 第一部分 基础篇:提示词的本质与核心结构 1.1 什么是提示词? 1.2 提示词的黄金三角结构 第二部分 类型篇:提示词的六大范式 2.1 提示语的本质特征 2.2 提示语的类型 2.2.1 指令型提示词 …...
C# 运算符
总目录 前言 在C#中,运算符是用于执行特定操作的符号。它们可以用于处理变量、常量或其他表达式。C# 提供了丰富的运算符集合,用于执行各种操作,如算术运算、逻辑判断、位操作等。了解这些运算符及其使用方式对于编写高效且功能强大的C#程序…...
duckdb导出Excel和导出CSV速度测试
运行duckdb数据库 D:>duckdb v1.2.0 5f5512b827 Enter “.help” for usage hints. Connected to a transient in-memory database. Use “.open FILENAME” to reopen on a persistent database. 生成模拟数据,10个列,100万行数据; --…...
pt->onnx->rknn(量化) step by step FAQ
文档修订中... 1.pt->onnx 这个转换是在yolov11的docker环境做的转换。非常简单。 #!/usr/bin/env python3 # -*- coding: utf-8 -*- # 获取当前脚本文件所在目录的父目录,并构建相对路径 import os import sys current_dir os.path.dirname(os.path.abspath…...
Apollo 9.0 速度动态规划决策算法 – path time heuristic optimizer
文章目录 1. 动态规划2. 采样3. 代价函数3.1 障碍物代价3.2 距离终点代价3.3 速度代价3.4 加速度代价3.5 jerk代价 4. 回溯 这一章将来讲解速度决策算法,也就是SPEED_HEURISTIC_OPTIMIZER task里面的内容。Apollo 9.0使用动态规划算法进行速度决策,从类名…...
利用AI智能体创建云端文档知识库并集成第三方数据源(上)
许多开发者在管理和集成多种云端的数据源时经常面对各种各样的困难,所以希望能够构建一个聊天机器人来协调这些数据源,针对业务问题并提供全面的答案。本文介绍了一种解决方案,帮助大家开发一个能够从文档和数据库中回答查询的聊天机器人&…...
Cursor AI开发微信小程序教程
1. 准备工作 在开始开发之前,需要完成以下准备工作: 1.1 安装微信开发者工具 前往微信开发者工具官网下载并安装适合操作系统的开发者工具。注册微信小程序账号,登录微信公众平台(https://mp.weixin.qq.com)&#…...
2025常用的SEO工具有哪些?
在互联网时代,如何让自己的网站或内容脱颖而出,成为许多企业和个人站长们最关注的问题。而在这个过程中,SEO(搜索引擎优化)作为一种有效的提升网站曝光度和吸引流量的手段,已经成为了网站运营的核心之一。对…...
支持直接升级到21c的 Oracle 数据库版本
一、支持直接升级的版本 可以从以下版本直接升级到新版本: • 19c (所有版本) • 18c (所有版本) • 12c Release 2 (12.2) 升级到最新Oracle数据库版本必须采用的路径取决于当前数据库的版本号。 如果当前的Oracle数据库版本早于12.2 版,则无法直接将…...
线程池-抢票系统性能优化
文章目录 引言-购票系统线程池购票系统-线程池优化 池化 vs 未池化 引言-购票系统 public class App implements Runnable {private static int tickets 100;private static int users 10000;private final ReentrantLock lock new ReentrantLock(true);public void run() …...
回顾Golang的Channel与Select第一篇
深入解析Golang Channel与Select:并发编程的艺术与哲学 一、通信顺序进程(CSP)的Go实现 Go语言创始人Rob Pike将CSP理论具象化为channel原语,实现了"不要通过共享内存来通信,而要通过通信来共享内存"的哲学…...
乐理笔记(持续更新)
单音与音程 单音:由一个音组成。 音程:由两个音组成,表示两个音之间的音高距离。 如何数音程: 单音程:9 - X,性质相反。例如,9度音程减去某个数,性质会相反。 复音程:…...
FastExcel + Java:打造高效灵活的Excel数据导入导出解决方案
作者:后端小肥肠 🍇 我写过的文章中的相关代码放到了gitee,地址:xfc-fdw-cloud: 公共解决方案 🍊 有疑问可私信或评论区联系我。 🥑 创作不易未经允许严禁转载。 姊妹篇: 基于AOP的数据字典实现…...
【数据结构入门】一、数组
一、数组的概念 数组:一种由相同类型的数据元素组成的基本数据类型,为引用类型 二、数据的顺序 这里很奇怪,讲了一个寻址函数,就是怎样用坐标求该元素的内存地址。说实话我不知道求这个能干什么,但是感觉还挺好玩的…...
编码格式大全解释以及相关编码特性
目录 说明: 1. Base64 Base64编码的字符集通常包括: Base64的工作原理: Base64编码在安全渗透中的应用场景 常见的Base64编码绕过场景 如何防范Base64绕过攻击 2. URL编码(Percent Encoding) URL编码与安全渗透的关系 示…...
正则表达式(Regular expresssion)
正则表达式 匹配单次 . :匹配任意一个字符 [ ] :匹配[ ]里举例的任意一个字符 /d :匹配数字0-9 /D :匹配非数字 /s :匹配空白或tab建 /S :匹配非空白 /w :…...
JavaScript 发起网络请求 axios、fetch、async / await
目录 fetch 发送 GET 请求(fetch) 发送 POST 请求(fetch) 处理后台异常响应 async / await async await 发送 GET 请求(async / await fetch) 发送 POST 请求(async / await fetch&…...
安装OpenJDK21(linux、macos)
文章目录 安装OpenJDK21java21linux下安装配置mac下安装 安装OpenJDK21 java21 封神!Java 21正式发布了,迎来了史诗级新特性,堪称版本最强!!! 视频链接:https://www.bilibili.com/video/BV1E8…...
Java面试宝典:说下Spring Bean的生命周期?
Java面试宝典专栏范围:JAVA基础,面向对象编程(OOP),异常处理,集合框架,Java I/O,多线程编程,设计模式,网络编程,框架和工具等全方位面试题详解 每…...
k8s向容器内传文件与下载文件
1、下载: kubectl cp <namespace>/<pod-name>:<container-path> <local-path>示例: kubectl cp mynamespace/mypod:/tmp/testfile.txt ./testfile.txt如果 Pod 中有多个容器,可以通过 -c 标志指定容器: kubectl c…...
A4988一款带转换器和过流保护的 DMOS 微步驱动器的使用方式
A4988是一款带转换器和过流保护的 DMOS 微步驱动器,用于驱动双极步进电动机。它支持全、半、1/4、1/8 及 1/16 步进模式,输出驱动性能可达 35 V 及 2 A。其特点包括简单的步进和方向控制接口、可调电位器调节最大电流输出、自动电流衰减模式检测/选择以及…...
Elasticsearch+Logstash+Kibana可视化集群部署
文章目录 1.组件介绍简述2.集群规划3.Es组件部署4.Logstash组件部署5.Kibana组件部署6.Kibana的基础使用 1.组件介绍简述 Elasticsearch:开源实时分布式搜索和分析引擎,支持大规模数据存储和高吞吐量,提供丰富的搜索功能和可扩展性。 Logsta…...
数据结构之二叉树
数据结构之二叉树 数据结构之二叉树1. 什么是二叉树?2. 基本概念3. 二叉树的基本形态4. 二叉树的性质5. 特殊二叉树6. 二叉树的存储7. 二叉树的遍历7.1 前序遍历7.2 中序遍历7.3 后序遍历7.4 层次遍历 8. 应用场景9. 实例代码9.1 示例树结构9.2 输出结果 数据结构之…...
华为云+硅基流动使用Chatbox接入DeepSeek-R1满血版671B
华为云硅基流动使用Chatbox接入DeepSeek-R1满血版671B 硅基流动 1.1 注册登录 1.2 实名认证 1.3 创建API密钥 1.4 客户端工具 OllamaChatboxCherry StudioAnythingLLM 资源包下载: AI聊天本地客户端 接入Chatbox客户端 点击设置 选择SiliconFloW API 粘贴1.3创…...
《图解设计模式》笔记(十)用类来表现
二十二、Command模式:命令也是类 一个类调用某方法,虽然调用结果会反映在对象的状态中,但不会留下工作的历史记录。 若有一个类表示“请进行这项工作”的“命令”,每一项想做的工作就不再是“方法的调用”这种动态处理了,而是一个表示命令的类的实例,即可以用“物”来表…...
Scrapy:任务队列底层设计详解
Scrapy 中队列设计详解 1. 概述 Scrapy 的队列系统是其调度器(Scheduler)的核心组件之一,负责存储和管理待抓取的请求。Scrapy 实现了两种类型的队列: 内存队列:请求存储在内存中,重启后数据丢失磁盘队列…...
zola + github page,用 workflows 部署
之前的Zola都是本地build之后,再push到github上,这种方式很明显的弊端就是只能在本地编辑,而不能通过github编辑,再pull到本地,缺乏了灵活性。因此将zola用workflows来部署。 repo地址:https://github.com/…...
pytest测试专题 - 1.2 如何获得美观的测试报告
<< 返回目录 1 pytest测试专题 - 1.2 如何获得美观的测试报告 1.1 背景 虽然pytest命令的报文很详细,用例在执行调试时还算比较方便阅读和提取失败信息, 但对于大量测试用例运行时,可能会存在以下不足 报文被冲掉测试日志没法归档 …...
关闭浏览器安全dns解决访问速度慢的问题
谷歌浏览器加载速度突然变慢了?检查安全DNS功能(DoH)是否被默认开启。 谷歌浏览器在去年已经推出安全DNS功能(即DoH) , 启用此功能后可以通过加密的DNS增强网络连接安全性。例如查询请求被加密后网络运营商将无法嗅探用户访问的地址,因此对于增强用户的…...
今日AI和商界事件(2025-02-14)
今日AI大事件主要包括以下几个方面: 一、苹果新品预告 事件概述:苹果CEO蒂姆库克在社交媒体发布7秒视频,配文“准备好迎接家庭的新成员”,并宣布2月19日将有新品发布。知名科技记者马克古尔曼称,新款低端iPhone SE将…...
【黑马点评优化】1-使用JWT登录认证+redis实现自动续期
1-使用JWT登录认证redis实现自动续期 0 前言1 原先的redis实现登录鉴权2 JWT登录认证Redis自动续期2.1 认证(identification)授权 (authorization)和鉴权(Authorization)2.1.1 认证(identificat…...
一个让Stable Diffusion更稳定、更易用的Github开源项目
2023除了ChatGPT大火,Stable Diffusion同样也是非常火热,Stable Diffusion是一个Github开源项目,很多爱好者都会本地安装,但面对一些初学者来说,在安装、配置和使用过程中还是会经常出现很多问题,特别不了解…...
Mac之JDK安装
Mac之JDK安装 一.安装 jdk 打开终端输入命令:java -version 查看是否已安装 JDK Oracle 官方下载地址 根据自己Mac 系统安装 查看 Mac 系统,打开中断命令,输入: uname -a Compressed Archive 是压缩文档,下载的是一个 .tar.gz 压缩包 D…...
深入Flask:如何优雅地处理HTTP请求与响应
哈喽,大家好,我是木头左! 本文将带你深入了解如何在Flask中优雅地处理HTTP请求和响应,让你的应用更加高效、安全和用户友好。 创建一个简单的Flask应用 让从创建一个最简单的Flask应用开始: from flask import Flaskapp = Flask(__name__)@app.route(/) def...
kron积计算mask类别矩阵
文章目录 1. 生成类别矩阵如下2. pytorch 代码3. 循环移动矩阵 1. 生成类别矩阵如下 2. pytorch 代码 import torch import torch.nn as nn import torch.nn.functional as Ftorch.set_printoptions(precision3, sci_modeFalse)if __name__ "__main__":run_code 0…...
Redis实现消息队列
什么是消息列队。 消息队列是一种应用间的异步协作机制,同时消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削峰等问题。实现高性能,高可用,可伸缩和最终一致性架构。市面上的 M…...
vue+springboot+webtrc+websocket实现双人音视频通话会议
前言 最近一些时间我有研究,如何实现一个视频会议功能,但是找了好多资料都不太理想,最终参考了一个文章 WebRTC实现双端音视频聊天(Vue3 SpringBoot) 只不过,它的实现效果里面只会播放本地的mp4视频文件&…...
【免费送书活动】《MySQL 9从入门到性能优化(视频教学版)》
本博主免费赠送读者3本书,书名为《MySQL 9从入门到性能优化(视频教学版)》。 《MySQL 9从入门到性能优化(视频教学版)(数据库技术丛书)》(王英英)【摘要 书评 试读】- 京东图书 这本书已经公开…...
【设计模式】【行为型模式】命令模式(Command)
👋hi,我不是一名外包公司的员工,也不会偷吃茶水间的零食,我的梦想是能写高端CRUD 🔥 2025本人正在沉淀中… 博客更新速度 👍 欢迎点赞、收藏、关注,跟上我的更新节奏 🎵 当你的天空突…...
1.14学习总结
日常刷题单 刷了题目后,对于排序方法更加熟练,手搓代码的速度也得到了提高。 感觉字符串还不熟练,高精度更是云里雾里,上升空间极大。 同时看见今晚有个入门难度的测试,去练了练手,想看看自己是什么成分&…...
QxOrm生成json
下载Qxorm-1.5版本 使用vs打开项目,直接生成即可: lib目录中会生成dll和lib文件 新建Qt项目使用Qxorm: 将QxOrm中上面三个目录拷贝到新建的Qt项目中 pro文件添加使用QxOrm第三方库 INCLUDEPATH $$PWD/include/ LIBS -L"$$PWD/lib" LIBS…...
伯克利 CS61A 课堂笔记 09 —— Data Abstraction
本系列为加州伯克利大学著名 Python 基础课程 CS61A 的课堂笔记整理,全英文内容,文末附词汇解释。 目录 01 Data Abstraction 数据抽象 Ⅰ Rational Numbers Ⅱ Rational Number Arithmetic 02 Pairs 对 Ⅰ Representing Pairs Using Lists Ⅱ Re…...
高频 SQL 50 题(基础版)
高频 SQL 50 题(基础版) 查询连接聚合函数排序和分组高级查询和连接子查询高级字符串函数 / 正则表达式 / 子句 查询 链接: link 链接: link 链接: link 链接: link 链接: link 连接 链接: 高频 SQL 50 题基础版_1378. 使用唯一标识码替换员工ID 链接…...
HtmlRAG:RAG系统中,HTML比纯文本效果更好
HtmlRAG 方法通过使用 HTML 而不是纯文本来增强 RAG 系统中的知识表示能力。通过 HTML 清洗和两步块树修剪方法,在保持关键信息的同时缩短了 HTML 文档的长度。这种方法优于现有基于纯文本的RAG的性能。 方法 其实主要看下围绕html提纯思路,将提纯后的…...
python学opencv|读取图像(六十二)使用cv2.morphologyEx()形态学函数实现图像梯度处理
【1】引言 前序已经学习了腐蚀和膨胀的单独作用函数,还研究了按照不同顺序调用腐蚀和膨胀函数调整图像效果,相关文章包括且不限于: python学opencv|读取图像(六十一)先后使用cv2.dilate()函数和cv2.erode()函数实现图…...
10G EPON光模块
一、10G EPON对称光模块 工作模式:上行突发接收、下行连续发射。 工作原理:当需要发送信号时,系统信号通过光模块的电接口把信号传送到驱动芯片,芯片处理后,驱动激光器发出调制光信号,经光纤发到远端&…...
RocketMQ与kafka如何解决消息丢失问题?
0 前言 消息丢失基本是分布式MQ中需要解决问题,消息丢失时保证数据可靠性的范畴。如何保证消息不丢失程序员面试中几乎不可避免的问题。本文主要说明RocketMQ和Kafka在解决消息丢失问题时,在生产者、Broker和消费者之间如何解决消息丢失问题。 1.Rocket…...