最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

iOS開發(fā)數(shù)獨(dú)小游戲?qū)嵗?/h1>
 更新時(shí)間:2021年11月03日 11:15:38   作者:易水卷長空  
這篇文章主要為大家詳細(xì)介紹了iOS開發(fā)數(shù)獨(dú)小游戲?qū)嵗闹惺纠a介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了iOS實(shí)現(xiàn)數(shù)獨(dú)小游戲的具體代碼,供大家參考,具體內(nèi)容如下

一、界面設(shè)計(jì)

如下圖。圖1是用戶打開程序后的主頁面,點(diǎn)擊“開始游戲”后進(jìn)入游戲頁面(圖2,圖3)。游戲界面上方是顯示條,顯示玩家當(dāng)前選中的按鈕。當(dāng)玩家想要在九宮格中填入數(shù)字時(shí),只需點(diǎn)擊下方1-9的數(shù)字控件,顯示條上會(huì)自動(dòng)顯示玩家當(dāng)前選中的數(shù)字編號,再點(diǎn)擊玩家想要填入的位置,就可以填入控件了。

最下方三個(gè)按鈕分別是“提交”“橡皮擦”“標(biāo)記”控件。當(dāng)玩家點(diǎn)擊“提交”按鈕,系統(tǒng)會(huì)自動(dòng)為玩家結(jié)算游戲分?jǐn)?shù);當(dāng)玩家點(diǎn)擊“橡皮擦”時(shí),可以擦除九宮格上指定位置的數(shù)字;當(dāng)玩家點(diǎn)擊“標(biāo)記”時(shí),可以為九宮格上的格子添加一個(gè)小紅旗作為標(biāo)記。游戲界面上方有一個(gè)導(dǎo)航條,點(diǎn)擊house圖標(biāo)會(huì)回到主頁面。

 二、實(shí)現(xiàn)

1. 先搭入口界面,包括一個(gè)image view和button,添加一個(gè)ViewController作為游戲界面,在入口界面和游戲界面之間添加segue,當(dāng)點(diǎn)擊“開始游戲”時(shí)跳轉(zhuǎn)到游戲界面。

2.為游戲界面添加必要的控件,用9x9個(gè)button實(shí)現(xiàn)九宮格,添加9個(gè)數(shù)字按鈕和3個(gè)功能控件,為了便于用戶使用,需要添加一個(gè)顯示條。通過用戶按下button得知玩家想要在九宮上填入數(shù)字的位置坐標(biāo),button通過Tag識(shí)別。

3.關(guān)聯(lián)代碼。將九宮格,9個(gè)數(shù)字按鈕,以及3個(gè)功能控件與代碼關(guān)聯(lián),同時(shí)新建一個(gè)Board類,Board類包含九宮格游戲進(jìn)度和答案計(jì)算等。

//
//  ViewController.swift
//
import UIKit
 
class ViewController: UIViewController {
 
    var inputNumber: String = " "
    var board = Board()
    var oldx: Int = 0
    var oldy: Int = 0
    var oldValue: Int = 0
    @IBOutlet weak var display: UILabel!
    
    @IBAction func inNumber(_ sender: UIButton) {
        if let  num = sender.currentTitle{
            switch num {
            case "" :inputNumber = "" ;display.text = ""
            case "1" :inputNumber = "1" ;display.text = "1"
            case "2" :inputNumber = "2" ;display.text = "2"
            case "3" :inputNumber = "3" ;display.text = "3"
            case "4" :inputNumber = "4" ;display.text = "4"
            case "5" :inputNumber = "5" ;display.text = "5"
            case "6" :inputNumber = "6" ;display.text = "6"
            case "7" :inputNumber = "7" ;display.text = "7"
            case "8" :inputNumber = "8" ;display.text = "8"
            case "9" :inputNumber = "9" ;display.text = "9"
            default:
                break
            }
        }
    }
 
    @IBAction func setNumber(_ sender: UIButton) {
        let pushTag: Int = sender.tag
        let hightTag: Int = pushTag / 10
        let lowTag: Int = pushTag % 10
        if board.question[hightTag - 1][lowTag - 1] == 0 {
            sender.setTitle(inputNumber, for: UIControl.State.normal)
            board.change(x: hightTag - 1, y: lowTag - 1, value: Int(inputNumber) ?? 0)
            oldx = hightTag - 1
            oldy = lowTag - 1
            oldValue = Int(inputNumber) ?? 0
        }
    }
    
    @IBAction func eraser(_ sender: UIButton) {
        inputNumber = " "
        display.text = "橡皮擦"
    }
 
    @IBAction func finish(_ sender: UIButton) {
        if board.check() {
            display.text = "You Win!"
        } else {
            display.text = "Score: \(board.score)"
        }
    }
    
    @IBAction func backHome(_ sender: UIBarButtonItem) {
        dismiss(animated: true, completion: nil)
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        display.text = "begin"
    }
}
//
//  Board.swift
//
import UIKit
class Board{
    var score: Int = 0
    var question: [[Int]] = [[0,0,0,1,8,0,9,3,0],
                             [1,8,6,0,0,0,0,0,7],
                             [0,5,0,7,4,0,0,0,0],
                             [5,0,4,0,0,0,3,0,6],
                             [0,0,0,3,9,4,0,0,2],
                             [2,3,0,0,0,0,0,1,0],
                             [0,0,9,0,0,3,0,0,8],
                             [0,0,2,9,0,5,7,0,0],
                             [0,7,0,0,0,8,0,9,0],]
    var nowBoard: [[Int]] = [[0,0,0,1,8,0,9,3,0],
                             [1,8,6,0,0,0,0,0,7],
                             [0,5,0,7,4,0,0,0,0],
                             [5,0,4,0,0,0,3,0,6],
                             [0,0,0,3,9,4,0,0,2],
                             [2,3,0,0,0,0,0,1,0],
                             [0,0,9,0,0,3,0,0,8],
                             [0,0,2,9,0,5,7,0,0],
                             [0,7,0,0,0,8,0,9,0],]
    var answer: [[Int]] = [[4,2,7,1,8,6,9,3,5],
                           [1,8,6,5,3,9,2,4,7],
                           [9,5,3,7,4,2,6,8,1],
                           [5,9,4,8,2,1,3,7,6],
                           [7,6,1,3,9,4,8,5,2],
                           [2,3,8,6,5,7,4,1,9],
                           [6,1,9,4,7,3,5,2,8],
                           [8,4,2,9,1,5,7,6,3],
                           [3,7,5,2,6,8,1,9,4],]
    func getNum(x: Int, y: Int) -> Int {
        return nowBoard[x][y]
    }
    func change(x: Int, y: Int, value: Int) {
        nowBoard[x][y] = value
    }
    func check() -> Bool {
        var countCorrect: Float = 0
        var countEmpty: Float = 0
        for i in 0...8{
            for j in 0...8 {
                if nowBoard[i][j] == answer[i][j] {
                    countCorrect += 1
                }
                if question[i][j] == 0 {
                    countEmpty += 1
                }
            }
        }
        //score = Int(((countQues -  countCorrect) / countQues) * 100)
        score = Int( ((countCorrect +  countEmpty - 81) / countEmpty) * 100 )
        if nowBoard == answer {
            score = 100
            return true
        } else {
            return false
        }
    }
}

三、試運(yùn)行(附GIF)

四、評價(jià)

優(yōu)點(diǎn):程序簡單,代碼量小,無復(fù)雜算法。

缺點(diǎn):游戲盤面相對固定,未實(shí)現(xiàn)數(shù)獨(dú)盤面的隨機(jī)生成、自動(dòng)生成數(shù)獨(dú)的解、以及不同難度生成。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • IOS入門筆記之地理位置定位系統(tǒng)

    IOS入門筆記之地理位置定位系統(tǒng)

    關(guān)于地理位置及定位系統(tǒng),在iOS開發(fā)中也比較常見,接下來通過本文給大家介紹IOS入門筆記之地理位置定位系統(tǒng),對ios地理位置定位系統(tǒng)感興趣的朋友一起學(xué)習(xí)吧
    2016-01-01
  • iOS實(shí)現(xiàn)微信分享多張圖片功能

    iOS實(shí)現(xiàn)微信分享多張圖片功能

    這篇文章主要為大家詳細(xì)介紹了iOS實(shí)現(xiàn)微信分享多張圖片功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • 詳解iOS-按鈕單選與多選邏輯處理

    詳解iOS-按鈕單選與多選邏輯處理

    本篇文章主要介紹了詳解iOS-按鈕單選與多選邏輯處理,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-03-03
  • OC runtime學(xué)習(xí)筆記之關(guān)聯(lián)對象

    OC runtime學(xué)習(xí)筆記之關(guān)聯(lián)對象

    這篇文章主要介紹了OC runtime學(xué)習(xí)筆記之關(guān)聯(lián)對象的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • iOS開發(fā)傻瓜式微信支付的方法教程

    iOS開發(fā)傻瓜式微信支付的方法教程

    最近因?yàn)楣ぷ鞯男枰?,要開發(fā)微信支付,發(fā)現(xiàn)網(wǎng)上的很多教程過于復(fù)雜,索性自己寫一篇,所以下面這篇文章主要跟大家分享了關(guān)于iOS開發(fā)傻瓜式微信支付的方法教程,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面來一起看看吧。
    2017-07-07
  • iOS 隱私權(quán)限和通過openURL實(shí)現(xiàn)跳轉(zhuǎn)實(shí)例

    iOS 隱私權(quán)限和通過openURL實(shí)現(xiàn)跳轉(zhuǎn)實(shí)例

    這篇文章主要介紹了iOS 隱私權(quán)限和通過openURL實(shí)現(xiàn)跳轉(zhuǎn)實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • iOS制作帶彈跳動(dòng)畫發(fā)布界面

    iOS制作帶彈跳動(dòng)畫發(fā)布界面

    這篇文章主要為大家詳細(xì)介紹了iOS制作帶彈跳動(dòng)畫發(fā)布界面,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • iOS實(shí)現(xiàn)點(diǎn)擊狀態(tài)欄自動(dòng)回到頂部效果詳解

    iOS實(shí)現(xiàn)點(diǎn)擊狀態(tài)欄自動(dòng)回到頂部效果詳解

    在IOS開發(fā)過程中,經(jīng)常會(huì)有這種需求,需要通過點(diǎn)擊狀態(tài)欄返回到頂部,給用戶更好的體驗(yàn)效果,下面這篇文章給大家詳細(xì)介紹了實(shí)現(xiàn)過程,有需要的可以參考借鑒。
    2016-09-09
  • iOS實(shí)現(xiàn)PDF文件瀏覽功能

    iOS實(shí)現(xiàn)PDF文件瀏覽功能

    這篇文章主要為大家詳細(xì)介紹了iOS實(shí)現(xiàn)PDF文件瀏覽功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • iOS使用UICollectionView實(shí)現(xiàn)列表頭部拉伸效果

    iOS使用UICollectionView實(shí)現(xiàn)列表頭部拉伸效果

    這篇文章主要介紹了iOS使用UICollectionView實(shí)現(xiàn)列表頭部拉伸效果,OC和Swift兩個(gè)版本,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05

最新評論

睢宁县| 彭阳县| 上蔡县| 姚安县| 湘乡市| 陇西县| 乐安县| 阿拉善盟| 林西县| 郸城县| 思南县| 松溪县| 和硕县| 台南县| 池州市| 山东省| 霍州市| 河东区| 湖州市| 蕲春县| 菏泽市| 即墨市| 临朐县| 凤冈县| 陇南市| 若羌县| 化隆| 青田县| 阜新市| 武川县| 丰原市| 武冈市| 肥东县| 新平| 察雅县| 酉阳| 峨边| 韶山市| 吉水县| 金溪县| 临潭县|