CSP 201609-3 炉石传说

本文介绍了一款模拟游戏对战的编程策略,通过定义结构体存储角色属性,利用循环模拟玩家操作,包括召唤英雄、攻击对手及回合结束。文章详细解析了代码实现过程,展示了如何处理游戏中的各种事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目

题目传送门

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
样例输入8

summon 1 3 6
summon 2 4 2	
end	
summon 1 4 5	
summon 1 2 1	
attack 1 2	
end	
attack 1 1

样例输出

0
30
1 2
30
1 2

在这里插入图片描述

题目思路

一道相对正常的模拟题,定义一个结构体node(攻击值+生命值),首先初始化两个角色,生命力为30,0表示先手玩家,1表示后手玩家。利用while循环模拟两个玩家的轮次,判断当前的操作是 召唤英雄、攻击对方、还是结束回合。
1、召唤英雄,根据题目初始化英雄位置,将要放英雄的地方的右边的其他英雄向右挪一个位置;
2、攻击对方,根据自己的攻击值进行更新生命值,判断若生命值小于0,则死亡
3、结束回合,到对方回合

代码实现

#include<bits/stdc++.h>
using namespace std;
int n,s,b,d,cnt;
char c[20];
struct node{
  int t,l;
} a[2][8];
int main()
{
	 a[0][0].l=30;a[1][0].l=30;
	 scanf("%d",&n);
	 node tmp;
	 int who=0;
	 while(n--)
	 {
		 scanf("%s",c);
		 if(strcmp(c,"summon")==0)//召唤随从 
		 {
			   scanf("%d %d %d",&s,&b,&d);
			   for(int i=6;i>=s;i--) 
			    	a[who%2][i+1]=a[who%2][i];//右移 
			   a[who%2][s].t=b;
			   a[who%2][s].l=d;
		 }
		  if(strcmp(c,"attack")==0)//发起攻击 
		  {
			   scanf("%d %d",&s,&b);
			   node attacker=a[who%2][s];
			   node defender=a[(who+1)%2][b];
			   a[who%2][s].l-=defender.t;
			   if(a[who%2][s].l<=0)//被攻击方英雄死亡 
			   {
			   	 for(int i=s;i<=6;i++) 
			     		a[who%2][i]=a[who%2][i+1];
			   }
			   a[(who+1)%2][b].l-=attacker.t;
			   if(a[(who+1)%2][b].l<=0&&b!=0)//攻击方英雄死亡 
			   {
				    for(int i=b;i<=6;i++) 
				    	a[(who+1)%2][i]=a[(who+1)%2][i+1];
			   } 
		  }
		 if(strcmp(c,"end")==0) who++;//结束回合 
	}
	cnt=0;
	if(a[0][0].l<=0) printf("-1\n");
	else if(a[1][0].l<=0) printf("1\n");
	else printf("0\n"); printf("%d\n",a[0][0].l);
	for(int i=1;i<=7;i++)
	{
	 	 if(a[0][i].l>0)  cnt++;
	}
	printf("%d ",cnt);
	for(int i=1;i<=cnt;i++)  printf("%d ",a[0][i].l);
	printf("\n");
	cnt=0;
	printf("%d\n",a[1][0].l);	
	for(int i=1;i<=7;i++)
		if(a[1][i].l>0) cnt++;
	printf("%d ",cnt);
	for(int i=1;i<=cnt;i++) printf("%d ",a[1][i].l);
	return 0; 
}
	
	```
	
	
	
		
		
		
		
		
	
	
	
	
	
	
	
	
	
	
	
	
	
	
### 关于CCF CSP认证中的“炉火传说” #### 背景介绍 中国计算机学会(CCF)主办的CSP(Certified Software Professional)认证是一项针对软件开发人员能力评估的专业测试。其中,“炉石传说”作为一道经典的算法题目,在历年的CSP认证考试中被广泛讨论[^1]。 #### “炉火传说”的定义与背景 “炉火传说”并非官方术语,而是考生对某类特定题目的戏称。这类题目通常涉及模拟游戏场景或规则的应用,例如卡牌游戏中资源分配、回合制操作等逻辑处理。虽然题目本身并不复杂,但由于细节繁多,稍有疏忽便可能导致错误频发。因此,良好的编程习惯和清晰的思路成为解决此类问题的关键。 #### 成就解锁条件分析 在CSP认证体系下,并不存在名为“炉火传说”的具体成就项。然而,如果将此视为一种比喻,则可以将其理解为通过某些高难度试题所获得的能力认可。以下是可能的相关条件: 1. **分数达标** 参加CSP认证考试并取得一定分数线以上的成绩被认为是基础门槛。不同级别(如入门级L2、专业级L3及以上),对应不同的技术深度要求。 2. **专项技能掌握** 针对类似于“炉石传说”这样的题目类型,需具备扎实的数据结构基础知识以及熟练运用控制流语句完成任务的能力。例如: - 使用数组存储状态信息; - 借助循环遍历数据集合; - 应用分支判断实现业务逻辑分流等功能模块设计。 3. **代码质量优化** 提交高质量源码也是评判标准之一。这不仅限于功能正确性方面考量还包括但不限于以下几个维度: - 结构化布局便于阅读维护; - 注释充分解释核心算法原理; - 符号命名遵循行业惯例易于理解沟通交流等方面表现优异者更易脱颖而出赢得更高评价等级认定资格。 ```c // 示例:简单的C语言实现片段展示如何初始化玩家生命值变量 #include <stdio.h> int main() { int player_health = 30; // 初始化玩家初始血量 printf("Player starts with %d health.\n", player_health); return 0; } ``` 上述代码展示了基本的游戏设定部分——即每位选手起始拥有固定数值的生命条目配置情况说明文档编写过程中也应注意保持一致性以便后续扩展修改更加方便快捷高效执行效率提升显著减少潜在风险隐患发生概率从而进一步提高整体解决方案稳定性可靠性水平达到预期目标效果最佳实践指南推荐采用这种方式来进行实际项目开发工作流程管理当中去落实执行下去不断积累经验教训总结规律特点形成自己独特风格特色最终成长为一名真正意义上的优秀程序员人才! --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值