篮球圈Amino 事后看来,我知道很多人不会看到这一点。 但是,我这里提出了一个有趣的主张。 Hoops Amino是一个以篮球为中心的篮球社区。 我今天来到你们这里的原因是因为我给了许多人没有得到的机会。 在Hoops上,您可以创建自己的名字,写出色的文章,与篮球迷聊天,并发表自己的看法。 总的来说,我认为它比中型更具互动性。 老实说,我喜欢这个地方。 总体而言,这是一个大家庭,谁知道,也许有一天您会加入我们的行列! 应用链接 纳尔维公司的篮球圈Aminos https://itunes.apple.com/us/app/hoops-amino-for-basketball/id1089553984?mt=8
我们回来了另一篇文章! 我们仍在打造令人惊叹的篮球比赛的道路上。 如果您已经阅读了我以前的文章,欢迎您回来,如果您是第一次阅读,也谢谢您。 1月中旬,我撰写了第一篇有关创建篮球模拟iOS应用程序的文章,从而踏上了这一旅程。 如果您想了解更多有关该项目的动机和开始设计的信息,请查看! 对于本篇文章,我想重新了解我们的篮球运动员的初始模板,并看看我们是否可以建立一个更加充实的表示形式。 当前的球员阶级,以及为什么我们应该提高它 这是我们当前播放器类的第一个版本。 我们只有两个不同的变量来总结玩家的全部技能。 我确定您会想到此实现可能存在的问题。 我在下面概述了一些我想到的优点和缺点: 优点 易于跟踪玩家的技能,并在计算中使用 对于其他开发人员来说很容易理解,特别是如果他们不熟悉篮球的话 没有歧义或主观解释的余地 缺点 不太详细或有趣 玩家不是那么独特。 除名字外,与众不同或脱颖而出的有限方法 同样,这是BORING 现在,考虑到这些事实,很明显,我们需要改进此设计。 试想一下:是什么使篮球运动员如此特别? 有些人真的是伟大的三分射手,例如史蒂芬·库里,还有一些是伟大的传球手,例如克里斯·保罗。 像鲁迪·戈伯特(Rudy Gobert)这样的人确实很擅长防守底线。 在我们当前的Player类中,这些技能都没有唯一体现,并且如果没有像上面这样的专门技能,任何体面的篮球模拟都将变得乏味。 新篮球运动员班 这是一个新类,其中包含更多的变量列表。 如前几篇文章所述,我已经为该应用程序创建了一个Xcode项目,并创建了一个PlayerFunctions.swift来保存我的Player类。 与以前的版本没有太大不同。 我们只是将进攻扩展为给定球员的防守,以扩大防守范围。 此外,如果您曾经打过NBA 2K或其他流行的篮球比赛,我们还会提供一些您可能熟悉的统计数据。 使用播放器类型初始化播放器 接下来,我们需要编写init函数来创建Player的实例。 为此,我们需要将所有评级变量都设置为默认值。 我们可以将其留给函数的调用者来设置所有这些值。 或者,我们可以有不同的玩家原型! 这意味着我们可以根据特定的预设类型设置所有球员技能: 在这里,我们有三种不同类型的玩家:神枪手,大幅削减得分手和后卫。 神枪手的三分球和罚球命中率很高,但在其他类别中却遭受损失。 出色的得分手拥有出色的内线得分能力,但很难与其他位置投篮。 防守者没有良好的进攻技巧,但在球的另一侧占优势。 现在,我们可以创建一个具有以下功能的播放器,该函数从我们的一种类型中随机选择以初始化播放器: 这样,我们的球员就会更加专业。 尽管我们仍然可以添加功能以允许自定义每个分级,但是我们可以暂时简化它,并在需要时进行扩展。 但是,我们在玩家中还有另一个重要的概念要表达:玩家倾向。 什么是玩家倾向? 不同的玩家不仅拥有不同的技能,而且在不同的时间做不同的事情。 让我们以NBA为例。 看看金州勇士队的史蒂芬·库里和克莱·汤普森。 尽管他们都是出色的三分射手,但是库里作为控球后卫意味着他更有可能更多地传球。 同时,当汤普森从外部成为如此出色的射手时,他不太可能在内部射门。 玩家的倾向是他们在特定时间可能执行的动作的列表,按执行每个动作的机会来组织。 现在,我不知道像NBA […]
让我们继续建设篮球。 欢迎回到篮球应用项目。 您可以在这里继续学习第1部分。 如果您还记得我们上次离开的地方,我们已经成功创建了用于模拟篮球比赛的Player,Team和Game类。 比赛由两支球队共同进行,他们都有机会得分。 我们可以进行一些比赛,并获得最终的比分: 但是,仍有许多工作要做。 以下是我想到的一些问题: 我们可以用名字来个性化我们的团队吗? 我们也可以命名玩家吗? 我们可以建立一个盒子得分,看看谁在得分,每个球员得分多少? 从接下来的两个功能开始,我们还需要建立什么样的联赛呢? 我们可以跟踪每个游戏的结果,并在“赛季”结束时提供统计信息吗? 这些是本部分要完成的主要目标。 在我们深入探讨之前,我将提出一个非常酷的建议,即有人提出来支持模拟财产中的三分球目标。 此代码块由Aaron A提供: 我很喜欢这个主意。 但是,对于软件开发过程来说,我决定完全重新考虑playPossession 功能并重构代码。 您会稍等一下。 但是首先,我们需要一些非通用名称! 从上次打开我们的Swift项目开始,让我们开始吧。 为我们的篮球队和球员取名 我们需要一些随机的球员和球队名称。 我们可以将这些名称列表作为数组包含在Player类和Team类中,但是可能会出现问题。 我们可能需要特殊功能来生成普通数组无法处理的名称。 同样,通常,我们应该尝试从类中抽象出尽可能多的与玩家或团队的行为没有直接关系的功能。 让我们创建一个名为NameGenerator.swift的新文件。 我已经填写了一些: 好的,希望其中大部分是简单的。 我们在此列出了球员和球队的可能名字。 现在,让我们具体看一下这一行: Swift中的单例 这条线表示的是单例模式,这是一种常见的软件设计模式。 简而言之(也是因为我对此经验不足),它仅允许在应用程序的整个生命周期中创建和使用一个类的实例。 现在,这种模式将如何帮助我们? 当我们将名称分配给新创建的玩家时,我们不希望两个玩家使用相同的名称。 我们也不想让尼克斯与尼克斯对抗。 因此,我们将能够在单个NameGenerator类中跟踪未选择的名称。 现在,我们将添加功能来完全做到这一点: 基本上在这里,我们将从名称列表中获取,并将其从列表中删除,这样就无法再次选择它。 看起来很棒! 现在,我们将Player类和Team类的初始化更新为一个名称: 我们的第一个目标几乎完成。 最后,我们必须先初始化NameGenerator单例类,然后再开始仿真。 让我们在ViewController.swift文件的顶部进行操作: 现在我们可以在任何地方使用它了:)。 继续执行步骤2。 进行盒子评分 篮球比赛中的得分是两队比赛结果的摘要。 大多数禁区得分都包含诸如得分,篮板和助攻之类的信息,但我们暂时将其保持在得分上。 如果这样做的话,想想一个数据结构来表示我们的盒子分数很简单。 我们有球员,每个人都会得分。 因此,让我们将盒子得分存储为字典,其中玩家将是关键,而他们的得分将是值。 […]