【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.rhkb.cn/news/17945.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构——红黑树的实现

目录 1 红黑树的概念 1.1 红黑树的规则 1.2 红黑树是如何确保最长路径不超过最短路径的2倍的&#xff1f; 1.3 红黑树的效率 2 红黑树的实现 2.1 红黑树的结构 2.2 红黑树的插入 2.2.1 红黑树插入节点的大概过程 2.2.2 情况1&#xff1a;只变色&#xff0c;不旋转 2.2.3 情况…

Spring Boot中使用Flyway进行数据库迁移

文章目录 概要Spring Boot 集成 FlywayFlyway 其他用法bug错误Flyway版本不兼容数据库存在表了Flyway 的校验和&#xff08;Checksum&#xff09;不匹配 概要 在 Spring Boot 项目开发中&#xff0c;数据库的变更不可避免。手动执行 SQL 脚本不仅容易出错&#xff0c;也难以维…

多态、虚函数、动态绑定、虚指针加虚表是同一件事情。

编译会自动加红色代码 左边拥有右边。由内而外构造、由外到内进行析构。 虚指针跟虚表。当一个类有虚函数的时候&#xff0c;对象里面就会多一个指针。从内存角度思考继承。 静态绑定。现在如果通过指针去调用虚函数&#xff0c;编译器就不会进行静态绑定&#xff0c;而做动态绑…

深入了解Text2SQL开源项目(Chat2DB、SQL Chat 、Wren AI 、Vanna)

深入了解Text2SQL开源项目&#xff08;Chat2DB、SQL Chat 、Wren AI 、Vanna&#xff09; 前言1.Chat2DB2.SQL Chat3.Wren AI4.Vanna 前言 在数据驱动决策的时代&#xff0c;将自然语言查询转化为结构化查询语言&#xff08;SQL&#xff09;的能力变得日益重要。无论是小型创业…

Qwen2-VL 的重大省级,Qwen 发布新旗舰视觉语言模型 Qwen2.5-VL

Qwen2.5-VL 是 Qwen 的新旗舰视觉语言模型&#xff0c;也是上一代 Qwen2-VL 的重大飞跃。 Qwen2.5-VL主要特点 视觉理解事物&#xff1a;Qwen2.5-VL不仅能够熟练识别花、鸟、鱼、昆虫等常见物体&#xff0c;而且还能够分析图像中的文本、图表、图标、图形和布局。 代理性&…

2. grafana插件安装并接入zabbix

一、在线安装 如果不指定安装位置&#xff0c;则默认安装位置为/var/lib/grafana/plugins 插件安装完成之后需要重启grafana 命令在上一篇讲到过 //查看相关帮助 [rootlocalhost ~]# grafana-cli plugins --help //从列举中的插件过滤zabbix插件 [rootlocalhost ~]# grafana…

【Linux】Ubuntu Linux 系统——Node.js 开发环境

ℹ️大家好&#xff0c;我是练小杰&#xff0c;今天星期五了&#xff0c;同时也是2025年的情人节&#xff0c;今晚又是一个人的举个爪子&#xff01;&#xff01; &#x1f642; 本文是有关Linux 操作系统中 Node.js 开发环境基础知识&#xff0c;后续我将添加更多相关知识噢&a…

DeepSeek全方位解读:模型介绍,优势及应用场景

DeepSeek全方位解读&#xff1a;领先科技背后的革新力量 前言1.DeepSeek整体介绍2.DeepSeek-R13.DeepSeek-V34.DeepSeek系列模型之间的关系5.Deepseek优势及应用场景6.模型参数与量化精度的关系7.行业部署Deepseek及应用情况 前言 在当今快速发展的科技世界里&#xff0c;人工…

电脑端调用摄像头拍照:从基础到实现

文章目录 1. 了解navigator.mediaDevices.getUserMedia API2. 创建 HTML 结构3. 编写 JavaScript 代码3.1 打开摄像头3.2 拍照 4. 完整代码5. 测试6. 注意事项及部署 在现代 Web 开发中&#xff0c;调用摄像头进行拍照是一个常见的功能&#xff0c;尤其是在需要用户上传头像、进…

windows平台上 oracle简单操作手册

一 环境描述 Oracle 11g单机环境 二 基本操作 2.1 数据库的启动与停止 启动: C:\Users\Administrator>sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on 星期五 7月 31 12:19:51 2020 Copyright (c) 1982, 2013, Oracle. All rights reserved. 连接到:…

Java面试——Tomcat

优质博文&#xff1a;IT_BLOG_CN 一、Tomcat 顶层架构 Tomcat中最顶层的容器是Server&#xff0c;代表着整个服务器&#xff0c;从上图中可以看出&#xff0c;一个Server可以包含至少一个Service&#xff0c;用于具体提供服务。Service主要包含两个部分&#xff1a;Connector和…

3. 导入官方dashboard

官方dashboard&#xff1a;https://grafana.com/grafana/dashboards 1. 点击仪表板 - 新建 - 导入 注&#xff1a;有网络的情况想可以使用ID&#xff0c;无网络情况下使用仪表板josn文件 2. 在官方dashboard网页上选择符合你现在数据源的dashboard - 点击进入 3. 下拉网页选…

你如何利用SIMD(如SSE/AVX)优化图像处理的性能?

SIMD优化问题 1. SIMD 在图像处理中的优化方式2. 典型应用场景3. SIMD 的常见优化技巧4. 总结 利用 SIMD&#xff08;Single Instruction, Multiple Data&#xff09; 指令集&#xff08;如 SSE/AVX/AVX2/AVX-512&#xff09;优化图像处理的性能&#xff0c;可以极大地提升计算…

高并发场景下,如何用无锁实现高性能LRU缓存?

《百万人高并发场景下&#xff0c;我如何用无锁实现高性能LRU缓存&#xff1f;》 LRU算法核心原理 LRU&#xff08;Least Recently Used&#xff09;算法是缓存系统的核心淘汰策略&#xff0c;其核心逻辑可以用一张流程图描述&#xff1a; &#xff08;图&#xff1a;访问数…

HAL库框架学习总结

概述&#xff1a;HAL库为各种外设基本都配了三套 API&#xff0c;查询&#xff0c;中断和 DMA。 一、HAL库为外设初始化提供了一套框架&#xff0c;这里以串口为例进行说明&#xff0c;调用函数 HAL_UART_Init初始化串口&#xff0c;此函数就会调用 HAL_UART_MspInit&#xff0…

LAWS是典型的人机环境系统

致命性自主武器系统&#xff08;Lethal Autonomous Weapons Systems&#xff0c;LAWS&#xff09;是一种典型的人机环境系统&#xff0c;它通过高度集成的传感器、算法和武器平台&#xff0c;在复杂的战场环境中自主执行任务。LAWS能够自主感知环境、识别目标、做出决策并实施攻…

【16届蓝桥杯寒假刷题营】第1期DAY4

4.可达岛屿的个数 - 蓝桥云课 题目背景 在一个神奇的魔法世界中&#xff0c;有一座古老的迷幻之城。迷幻之城被分成 n 个鸟屿&#xff0c;编号从 1 到 n&#xff0c;共有 m 座桥。迷幻之城的居民们希望能够建立起紧密的联系&#xff0c;每个岛屿上的居民都想知道自己最多能到…

【物联网】电子电路基础知识

文章目录 一、基本元器件1. 电阻2. 电容3. 电感4. 二极管(1)符号(2)特性(3)实例分析5. 三极管(1)符号(2)开关特性(3)实例6. MOS管(产效应管)(1)符号(2)MOS管极性判定(3)MOS管作为开关(4)MOS管vs三极管7. 门电路(1)与门(2)或门(3)非门二、常用元器件…

数据结构 04

4. 栈 4.2. 链式栈 4.2.1. 特性 逻辑结构&#xff1a;线性结构 存储结构&#xff1a;链式存储结构 操作&#xff1a;创建&#xff0c;入栈&#xff0c;出栈&#xff0c;清空&#xff0c;获取 4.2.2. 代码实现 头文件 LinkStack.h #ifndef __LINKSTACK_H__ #define __LINKST…

【云安全】云原生-K8S(四)安全问题分析

Kubernetes&#xff08;K8S&#xff09;因其强大的容器编排能力成为了云计算和微服务架构的首选&#xff0c;但同时也带来了复杂的安全挑战。本文将概述K8S的主要安全问题&#xff0c;帮助安全工程师理解潜在威胁&#xff0c;并采取相应的防护措施。 K8S 攻击面概览 下面两张…