void w_snatch_weapon(csoldier *p, csoldier *q) { //bool flag = true; int t = 0, s = 0; while (q->weapon[t] == 0)++t; if (10 - p->weapen_amount <= q->weapon[t]) { p->weapon[t] += 10 - p->weapen_amount; s += 10 - p->weapen_amount; p->weapen_amount = 10; q->weapen_amount -= s; q->weapon[t] -= s; return; } else { p->weapon[t] += q->weapon[t]; s += q->weapon[t]; p->weapen_amount += q->weapon[t]; q->weapon[t] -= s; q->weapen_amount -= s; if (t == 2 && q->weapon[3] > 0) { t = 3; if (10 - p->weapen_amount <= q->weapon[t]) { p->weapon[t] += 10 - p->weapen_amount; s += 10 - p->weapen_amount; p->weapon[t] -= 10 - p->weapen_amount; p->weapen_amount -= 10 - p->weapen_amount; p->weapen_amount = 10; } else { p->weapon[t] += q->weapon[t]; s += q->weapon[t]; q->weapen_amount -= q->weapon[t]; p->weapen_amount += q->weapon[t]; q->weapon[t] = 0; } } cout << s << ' '; out_weapen(t); return; } }

时间: 2023-06-15 13:08:18 浏览: 46
这段代码实现了一个抢夺武器的函数,函数名为 w_snatch_weapon,参数是两个指向 csoldier 类型对象的指针 p 和 q。 函数中的主要逻辑是这样的:首先找到 q 手中第一个有武器的位置,然后判断 p 手中是否还有可用的武器位置。如果没有,直接返回。如果有,就把 q 手中的武器抢过来,分两种情况: 1.抢过来的武器数量等于 p 剩余可用武器数量。这种情况下,把 q 手中的对应武器数量减去抢过来的数量,并将所有抢过来的武器放到 p 手中。 2.抢过来的武器数量小于 p 剩余可用武器数量。这种情况下,把 q 手中的对应武器全部抢过来,并将 p 剩余的可用武器数量增加相应的数量。如果抢过来的武器是第三个位置上的武器,并且 q 手中还有第四个位置上的武器,则抢夺第四个位置上的武器,直到 p 手中没有可用武器位置或者 q 手中没有武器为止。 函数中的 out_weapen 函数不在这个代码块中,我无法确定它的实现。
相关问题

写一个抢红包程序

以下是一个简单的抢红包程序,使用 Python 语言编写: ```python import random def snatch_red_packet(total_amount, total_num): # 参数:总金额、总人数 result = [] rest_amount = total_amount rest_num = total_num for i in range(total_num): if rest_num == 1: # 最后一个红包,全部领取 result.append(rest_amount) else: # 按照随机比例分配红包金额 amount = random.randint(1, int(rest_amount / rest_num * 2)) result.append(amount) rest_amount -= amount rest_num -= 1 return result # 测试程序 print(snatch_red_packet(100, 5)) ``` 程序中的 `snatch_red_packet` 函数接受两个参数:总金额和总人数。它会返回一个列表,列表中的每个元素表示每个人领取到的红包金额。程序使用随机数生成一个比例来分配红包金额,保证每个人领取到的金额是随机的。

在某举重比赛中,每个选手的成绩包括抓举成绩和挺举成绩,最后相加得到总成绩。现在有一个文本文件score1.data记录了该比赛中多位选手的分项成绩,该文件内容如下: 姓名:张三,抓举成绩106kg,挺举189kg. 姓名:李四,抓举成绩108kg,挺举186kg. 姓名:王五,抓举成绩112kg,挺举190kg. 现在需要对该成绩进行处理,计算出选手的总成绩后拼接到字符串之后成为新的字符串,格式为: 姓名:张三,抓举成绩106kg,挺举189kg. 总成绩: 295kg 然后将所有信息并写入到目标文件result.data中。 请使用java编码实现该成绩统计系统。 第一步,使用给定的文件名常量创建BufferedReader对象,通过reader对象调用方法readLine读取每一行的内容,并存储到List集合中; 第二步,处理数据; 第三步,使用给定的目标文件名常量创建BufferedWriter对象,并将参数给定的List集合中的字符串依次写入到目标文件中。

以下是Java编码实现该成绩统计系统的代码: ```java import java.io.*; import java.util.*; public class ScoreStatistics { private static final String SOURCE_FILE = "score1.data"; // 原始文件名常量 private static final String TARGET_FILE = "result.data"; // 目标文件名常量 public static void main(String[] args) throws IOException { List<String> scores = readScoresFromFile(); // 读取所有选手成绩信息到List集合中 List<String> result = processScores(scores); // 处理所有选手成绩信息,添加总成绩信息,存储到List集合中 writeResultToFile(result); // 将处理后的所有选手成绩信息写入目标文件中 } // 读取所有选手成绩信息到List集合中 private static List<String> readScoresFromFile() throws IOException { List<String> scores = new ArrayList<>(); BufferedReader reader = new BufferedReader(new FileReader(SOURCE_FILE)); String line; while ((line = reader.readLine()) != null) { scores.add(line); } reader.close(); return scores; } // 处理所有选手成绩信息,添加总成绩信息,存储到List集合中 private static List<String> processScores(List<String> scores) { List<String> result = new ArrayList<>(); for (String score : scores) { String[] fields = score.split(","); String name = fields[0].substring(3); int snatch = Integer.parseInt(fields[1].substring(5, fields[1].length() - 2)); int cleanJerk = Integer.parseInt(fields[2].substring(5, fields[2].length() - 3)); int total = snatch + cleanJerk; String scoreWithTotal = String.format("%s. 总成绩: %dkg", score, total); result.add(scoreWithTotal); } return result; } // 将处理后的所有选手成绩信息写入目标文件中 private static void writeResultToFile(List<String> result) throws IOException { BufferedWriter writer = new BufferedWriter(new FileWriter(TARGET_FILE)); for (String score : result) { writer.write(score); writer.newLine(); } writer.close(); } } ``` 注意事项: 1. 该实现假设源文件中每行记录的顺序都是姓名、抓举成绩、挺举成绩,且格式都是固定的。 2. 该实现假设源文件中每行记录都是合法的,即没有缺少字段、字段格式错误等问题。 3. 该实现假设目标文件的文件名常量和源文件的文件名常量不会发生变化。如果需要允许用户在运行时指定文件名,则需要修改代码,添加相应的命令行参数解析逻辑。

相关推荐

最新推荐

recommend-type

WX小程序源码小游戏类

WX小程序源码小游戏类提取方式是百度网盘分享地址
recommend-type

grpcio-1.47.2-cp310-cp310-musllinux_1_1_x86_64.whl

Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
recommend-type

cryptography-42.0.3-cp37-abi3-musllinux_1_1_x86_64.whl

Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
recommend-type

2021131528+谢镕汕.zip

2021131528+谢镕汕.zip
recommend-type

sja1301.i386.tar.gz

SQLyong 各个版本,免费下载 SQLyog是业界著名的Webyog公司出品的一款简洁高效、功能强大的图形化MySQL数据库管理工具。使用SQLyog可以快速直观地让您从世界的任何角落通过网络来维护远端的MySQL数据库。
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB柱状图在信号处理中的应用:可视化信号特征和频谱分析

![matlab画柱状图](https://img-blog.csdnimg.cn/3f32348f1c9c4481a6f5931993732f97.png) # 1. MATLAB柱状图概述** MATLAB柱状图是一种图形化工具,用于可视化数据中不同类别或组的分布情况。它通过绘制垂直条形来表示每个类别或组中的数据值。柱状图在信号处理中广泛用于可视化信号特征和进行频谱分析。 柱状图的优点在于其简单易懂,能够直观地展示数据分布。在信号处理中,柱状图可以帮助工程师识别信号中的模式、趋势和异常情况,从而为信号分析和处理提供有价值的见解。 # 2. 柱状图在信号处理中的应用 柱状图在信号处理
recommend-type

用Spring boot和vue写一个登录注册界面

好的,这是一个比较常见的技术问题,我可以为您提供一些参考资料和思路。首先,您可以使用Spring Boot作为后端框架来处理用户认证和注册的逻辑,比如使用Spring Security实现用户登录认证。同时,您还需要设计相应的数据模型和数据库表结构来存储用户信息。在前端方面,您可以使用Vue.js作为框架来构建登录注册页面,使用Axios来发起API请求并和后端进行交互。当然,在实现过程中,还需要考虑一些具体细节,比如数据校验、安全性和用户体验等方面。希望这些信息能够帮助到您。
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。