暑期项目开发实训 Day2

        实训第二天,第一个Demo已经完成了。进展速度还是蛮快的。

        简单描述一下第一个Demo的功能吧:

        This is the awesome game of Bull's Eye where you can win points and earn fame by dragging a slider.

        Your goal is to place the slider as close as possible to the target value. The closer you are, the more points you score.

        Enjoy!

        简言之,就是一个回合制得分游戏:

        首先程序给出一个目标值,这个目标值是1-100间的随机数。

        然后玩家通过拖动滑条,来逼近这个目标值。拖动滑条得到的值为当前值。

        玩家通过点击【Hit Me!】按钮,判断当前值与目标值的偏差,从而决定相应的完成档次与得分:

        由于CSDN不能贴Swift代码,下面的代码全部用OC格式贴出:

        可以看到,得分 = 100-绝对偏差。

        如果是“完美的”Hit,分数会追加100分。如果是“近乎完美的”,分数会追加50分。

     let difference = abs(currentValue - targetValue)
        var points = 100 - difference
        
        
        let title: String
        if difference == 0 {
            title = "Perfect!"
            points += 100
        } else if difference < 5 {
            title = "You almost had it!"
            points += 50
        } else if difference < 10 {
            title = "Pretty good!"
        } else {
            title = "Not even close..."
        }
        
        score += points //sum the score


        按压【Hit Me】会触发函数  @IBAction func showAlert()

        为了修正alert的异步性,也就是当Alert动作完成时才进入新回合、更改Label的值,我做了如下改动:

        let action = UIAlertAction(title:"OK",
                                   style:.default,
                                   handler:{ action in
                                             self.startNewRound()
                                             self.updateLables()
                                            })
        alert.addAction(action)
        
        // make the alert visible
        present(alert,animated: true,completion: nil)

        下面贴出新回合、新游戏、更新标签的代码:

    func startNewRound() {
        round += 1
        targetValue = 1 + Int(arc4random_uniform(100))
        currentValue = 50
        slider.value = Float(currentValue)
    }
    
    func startNewGame() {
        score = 0
        round = 0
        startNewRound()   //NewRound will set round ++
    }
    
    func updateLables() {
        targetLabel.text = String(targetValue)
        scoreLabel.text = String(score)
        roundLabel.text = String(round)
        
//        targetLabel.text = "\(targetValue)" // the same
    }

        以上是今天上午的工作。

        今天下午时,我创建了新的视图控制器,用来管理一个说明性的AboutView。

        主控制器和说明控制器之间采用了飞入的切换动画。下面贴出Storyboard Segue的属性:



        额外做了一些工作,是将About View中的Text View替换成了Web View,植入了写好的HTML代码。

 if let url = Bundle.main.url(forResource: "BullsEye",
                                                  withExtension:"html") {
            if let htmlData = try? Data(contentsOf: url) {
                let baseURL = URL(fileURLWithPath: Bundle.main.bundlePath)
                webView.load(htmlData, mimeType: "text/html",
                             textEncodingName: "UTF-8", baseURL:baseURL )
            }
        }

         最后就是移植性的问题了。要让SE界面的视图在4s\6\6s\7\7Plus等等都适应。

         8.3.2的Xcode在Align面板有点小问题,可以添加约束,但是不能update frame,这点让我有些疑惑。

         不过还是成功地解决了移植性的问题。

         然后给这款App添加了图标并命名。

         最后的最后,要commit到分支。


         梳理一下 git的基本步骤:

        1. cd到项目文件夹内

        2. git init   (初始化)

        2. git remote add origin https://xxxxxxxxxxxx(仓库地址)

        3. git remote -v (非必要步骤)

        4. git checkout -b your_branchname (创建你的分支)

        5. git add .

        6. git status (非必要步骤)

        7. git commit -m "proj_name"    (提交)

        8. git status (非必要步骤)

        9. git push -u origin your_branchname (push)

        10. 输入密码 (第二次可能就不用输入了)

        11. 回车后开始提交。。。最后显示: Branch your_branchname set up to track remote branch your_branchname from origin

        以上就是今天完成的工作。


                
        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

国产酱香科技

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值