使用Swift创建篮球模拟应用程序:第1部分

让我们自己做一场篮球比赛

我玩很多电子游戏。 截至2019年,我的大部分上班时间主要围绕NBA 2K19和Fortnite:Battle Royale。 后者为在线好友提供了无尽的欢乐时光,而打NBA 2K则代表了终身的篮球激情。 我特别喜欢特许经营模式,在这种模式下,您可以接管30支NBA球队之一,并尝试建立总冠军榜。 尽管我对球员的发展和交易逻辑有很多抱怨,但这种模式仍然使我内心的篮球总经理得以蓬勃发展。 这就是为什么RPG(角色扮演游戏)是我最喜欢的游戏。 大多数情况下,一个共同的主题是花时间养育和发展角色,并为之后的产品感到自豪。

那么,为什么不尝试自己建一个呢? 我最近对制作篮球游戏应用感兴趣,Swift是一种有趣的语言。 Swift是Apple开发的一种编译语言,用于为iPhone创建应用程序。 尽管没有像Java或Python这样广泛使用的语言,但语法应该足够简单。 我也制作了其他应用!

对于第一部分,我们需要构建篮球比赛的基本逻辑。 我们拥有具备进攻和防守技巧的球员。 玩家一起组成一个团队。 团队在比赛中彼此对战,他们要么赢要么输。 很简单,对不对? 现在,我们只需要在代码中充实这些概念。

首先,我们将在Xcode(Apple提供的Mac IDE)中创建一个新项目。 打开Xcode-> New-> Project-> Single View App。 您应该看到以下屏幕:

为您的项目命名,选择您的项目文件夹位置,然后开始吧!

创建一个篮球运动员

篮球运动的核心是球员。 因此,我们从这里开始很合适。 让我们在我们的项目中创建一个名为PlayerFunctions.swift的新文件。 当我处理潜在的大型项目时,将不同的区域划分为各自的文件时,可以更直观地看到事物。 Swift的一大优点是,一次声明的类和函数在整个应用程序中全局可用。 如果要使用Javascript或Python,请确保导入/导出文件。

我们想要创建一个篮球运动员的模型,并且我们还想存储有关我们球员的某些信息。 我们可以为此创建一个Player类。 可能的数据示例包括球员属性,例如三分评级,扣篮能力或罚球技能。 这些绝对是篮球的重要属性,但现在让我们不要陷入所有这些细节中。 取而代之的是,我们将为球员分配进攻得分和防守得分,以涵盖所有要素。 它看起来应该像这样:

在Swift类中,使用init方法创建实例。 因此,我们将为每个玩家创建一个初始攻防等级。 这堂课现在看起来不错,让我们再回顾一下。

建立篮球队

现在,我们需要为我们的团队创建一个模型。 既然我们知道一个篮球队是由球员组成的,那么看起来很简单就可以将我们的球队代表为一系列球员。 但是,这可能不会长期有效。 我们可能希望存储有关每个团队的更多信息,或者希望团队可以执行的特定方法。 创建一个名为TeamFunctions.swift的新文件。

对于我们的新Team类,我们绝对希望有一个变量将所有球员存储在名册上。 我们还可以在进攻和防守两方面保持球队的得分,以代表球队在球两边的整体技能。 我这样设计:

如何运行游戏

现在我们已经对球员和球队进行了建模,我们将如何实际编码篮球比赛? 我敢肯定,有多种合法的方法可以进行游戏模拟。 大多数将涉及创建Game类。 让我们在名为GameFunctions.swift的新文件中进行此操作 。 如果要创建游戏的实例,我们希望由两个团队来创建。 没有两个对立的球队就没有篮球比赛。 另外,让我们跟踪每个团队的得分,这样我们就能知道最终谁赢谁输:

篮球财产

分数将从零开始,但是我们将使用一些类函数更新这些变量。 游戏可以分为每支球队一系列进攻和防守资产。 根据各种因素,球队可能不会在每个控球上得分。 因此,我们的第一个函数playPossession将执行一些逻辑,以确定一个团队是否会在每个控球中得分:

让我们分解一下。 teamOffense和teamDefense是我们用来计算每个篮球比赛结果的东西。 如果第1队的进攻得分高于第2队的防守得分,则该功能应返回得分,在这种情况下为2。 如果防守得分更高,该功能将返回0。现在,在现实生活中的篮球中,球队可以得分3分或1分,但现在让我们保持简单。 另外,Int.random返回您提供的范围内的数字。 我们希望随机化每个团队和每个拥有物的值,以便我们没有一个团队在每个拥有物上得分。 除非您是勇士,否则这不是很现实。

现在,我们可以创建一个函数来运行我们的游戏! 适当命名为runGame ,该函数将使用新创建的playPossession函数:

平均而言,NBA球队在进攻和防守上各拥有约100个控球权。 因此,我们将运行一个循环,该循环将为每个团队执行控球,并在得分出现时增加得分变量。 然后,我们将打印出最终结果。 我们几乎准备好对此进行测试! 我们只需要首先创建一些球员和团队。

使我们的球员和团队

让我们回到PlayerFunctions.swift文件。 我们将在需要时创建一个新函数来创建随机Player对象:

我们将随机分配他们的进攻和防守值,但我们希望使每个生成的球员在技术上有所平衡。 因此,他们的进攻和防守得分总和为100。

现在我们应该回到TeamFunctions.swift 。 对于每个团队来说,最简单的部分是将球员添加到名册中。 我们可以将五个生成的Player追加到Team的名册数组中。 接下来将确定总体进攻和防守团队的等级。 为此,我只列出名单上所有球员的平均得分。 最终功能将如下所示:

现在,让我们看看它是什么样子。

进行篮球比赛

要运行此命令,让我们回到ViewController.swift文件。 该文件中的代码在运行应用程序时执行,尤其是viewDidLoad方法中的代码。 在该方法中,我们将使用刚刚编写的代码运行五种不同的游戏:

在每个游戏中,我们将有不同的玩家和不同的团队。 通过单击顶部附近的“播放”图标来运行该应用程序。 这是Xcode控制台中的结果:

成功! 我们已经获得了五项伪管制篮球比赛的结果,而且看起来还不错。 我们确实对某些游戏的总积分有很大的波动,但是至少在大多数情况下,这些游戏似乎竞争激烈。

结论

我为这部分编写了很多乐趣,并且很高兴我决定为此撰写一个博客文章。 自大学二年级以来,阅读技术博客一直是我的爱好。 当您搜索的随机主题已经有详细的写作时,这很有趣。 我不确定该应用程序的下一阶段将要做什么,但是我将尽力使其变得有趣。

编辑:第2部分现在可用。 如果您不是Medium的成员,但真的想查看它,请随时在Twitter(@ TobiTheGreat3)上与我联系,我们非常乐意向您发送朋友链接以查看发布。