Objective-C下的简单版三国杀


任务

  • 安装配置Mac OS和Xcode

  • 熟悉Mac OS按键操作

  • 熟悉Xcode项目结构,编译运行第一个Xcode项目,项目创建流程详见tutorial

  • 选取并设计N(N>10)个三国英雄

实现场景输出(log形式即可):随机选择两名英雄,挑战M(M<=10)个回合,其中每个回合各英雄可发动不同技能,从而导致不同的结果发生(英雄各属性变化及每个回合的输赢)。

要求:

  • 输出随机选择的英雄及其关键属性,输出单挑中每回合的过程、结果,以及最终胜负结果
  • 需要用到多态
  • 输出程序设计和运行过程中,相关设计体现的oo特性(数据隐秘性、封装性、继承、多态)

验收要点:

    • 输出随机选择的英雄及其关键属性,输出单挑中每回合的过程、结果,以及最终胜负结果
    • 类的设计与封装
    • 类与类之间的继承关系与多态的体现

***********************  代码简析  *************************

代码详情请参考我的gitee:

https://gitee.com/woodx9/ios-programming/tree/master/Objective-C%E4%B8%8B%E7%AE%80%E5%8D%95%E4%B8%89%E5%9B%BD%E6%9D%80%E7%BC%96%E7%A8%8B

 

Person:定义了人物的基本属性,以及一些英雄之间通用的方法,例如普通攻击,展示状态等等

 

模版

Hero:每个英雄都必须实现技能1、大招以及使用这些技能减去相应的能量的方法

 

英雄类

以张飞为模版,每个英雄都有不同的技能以及机制

定义

 

 实现细节 

 

main函数,定义

 

 ChooseHero选择出战的两方英雄,使用了随机数arc4random

 

HeroFighting 英雄所有回合的战斗,最多进行十个回合(由于属性的约束,一般不会超过五个回合)

 

OneRound 单次的战斗,如果有一方血量降为0以下,则结束战斗!回合结束完毕,加上能量后则展示双方状态

 

一方英雄攻击一方,按概率使用普通攻击、技能1或者大招(如果能量够,则使用,不然重新选择招数直至伤害不为-1)。然后展示伤害。

 

某次运行结果

2020-10-03 23:29:38.582665+0800 First-HomeWork[13494:1572354] 孙权 VS 刘备

2020-10-03 23:29:38.582862+0800 First-HomeWork[13494:1572354] 回合1

2020-10-03 23:29:38.582897+0800 First-HomeWork[13494:1572354] 技能1:年少有为,孙权速度和攻击力都提升一

2020-10-03 23:29:38.582918+0800 First-HomeWork[13494:1572354] 刘备受到0.0滴伤害

2020-10-03 23:29:38.582931+0800 First-HomeWork[13494:1572354] 技能1:刘备使用仁德,自身血量得到加强三滴、但是速度减慢二

2020-10-03 23:29:38.582944+0800 First-HomeWork[13494:1572354] 孙权受到0.0滴伤害

2020-10-03 23:29:38.582959+0800 First-HomeWork[13494:1572354] 孙权:血量20.0滴,速度13,攻击力3.7 能量9

2020-10-03 23:29:38.582971+0800 First-HomeWork[13494:1572354] 刘备:血量21.0滴,速度2,攻击力2.2 能量9

2020-10-03 23:29:38.582984+0800 First-HomeWork[13494:1572354] 回合2

2020-10-03 23:29:38.582995+0800 First-HomeWork[13494:1572354] 孙权使出了普通攻击

2020-10-03 23:29:38.583006+0800 First-HomeWork[13494:1572354] 刘备受到3.7滴伤害

2020-10-03 23:29:38.583016+0800 First-HomeWork[13494:1572354] 技能1:刘备使用仁德,自身血量得到加强三滴、但是速度减慢二

2020-10-03 23:29:38.583122+0800 First-HomeWork[13494:1572354] 孙权受到0.0滴伤害

2020-10-03 23:29:38.583160+0800 First-HomeWork[13494:1572354] 孙权:血量20.0滴,速度13,攻击力3.7 能量10

2020-10-03 23:29:38.583174+0800 First-HomeWork[13494:1572354] 刘备:血量20.3滴,速度2,攻击力2.2 能量8

2020-10-03 23:29:38.583185+0800 First-HomeWork[13494:1572354] 回合3

2020-10-03 23:29:38.583196+0800 First-HomeWork[13494:1572354] 技能1:年少有为,孙权速度和攻击力都提升一

2020-10-03 23:29:38.583208+0800 First-HomeWork[13494:1572354] 刘备受到0.0滴伤害

2020-10-03 23:29:38.583218+0800 First-HomeWork[13494:1572354] 刘备使出了普通攻击

2020-10-03 23:29:38.583229+0800 First-HomeWork[13494:1572354] 孙权受到2.2滴伤害

2020-10-03 23:29:38.583240+0800 First-HomeWork[13494:1572354] 孙权:血量17.8滴,速度14,攻击力4.7 能量9

2020-10-03 23:29:38.583254+0800 First-HomeWork[13494:1572354] 刘备:血量20.3滴,速度2,攻击力2.2 能量9

2020-10-03 23:29:38.583723+0800 First-HomeWork[13494:1572354] 回合4

2020-10-03 23:29:38.583739+0800 First-HomeWork[13494:1572354] 技能1:年少有为,孙权速度和攻击力都提升一

2020-10-03 23:29:38.583755+0800 First-HomeWork[13494:1572354] 刘备受到0.0滴伤害

2020-10-03 23:29:38.583769+0800 First-HomeWork[13494:1572354] 终极技能:刘备三顾茅庐,瞬时将自身血量的三分之一变成一击

2020-10-03 23:29:38.583781+0800 First-HomeWork[13494:1572354] 孙权受到6.8滴伤害

2020-10-03 23:29:38.583795+0800 First-HomeWork[13494:1572354] 孙权:血量11.0滴,速度15,攻击力5.7 能量8

2020-10-03 23:29:38.583807+0800 First-HomeWork[13494:1572354] 刘备:血量20.3滴,速度2,攻击力2.2 能量6

2020-10-03 23:29:38.583818+0800 First-HomeWork[13494:1572354] 回合5

2020-10-03 23:29:38.583830+0800 First-HomeWork[13494:1572354] 终极技能:制衡术,孙权将血量的1/4、速度的1/4、攻击力之和转为一击

2020-10-03 23:29:38.583958+0800 First-HomeWork[13494:1572354] 刘备受到23.5滴伤害

2020-10-03 23:29:38.583971+0800 First-HomeWork[13494:1572354] 孙权战胜了刘备

2020-10-03 23:29:38.583984+0800 First-HomeWork[13494:1572354] 孙权:血量11.0滴,速度15,攻击力5.7 能量4

2020-10-03 23:29:38.583996+0800 First-HomeWork[13494:1572354] 刘备:血量0.0滴,速度2,攻击力2.2 能量6

Program ended with exit code: 0

 

感想:

本次作业的目的主要是熟悉Objective C的语法,但是思考技能也用了一点时间。主要是英雄太多了。不过写完耗费时间也不多,颇有所获!

posted @   woodx  阅读(290)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示