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

iOS開發(fā)數(shù)獨小游戲實例

 更新時間:2021年11月03日 11:15:38   作者:易水卷長空  
這篇文章主要為大家詳細介紹了iOS開發(fā)數(shù)獨小游戲實例,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

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

一、界面設計

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

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

 二、實現(xiàn)

1. 先搭入口界面,包括一個image view和button,添加一個ViewController作為游戲界面,在入口界面和游戲界面之間添加segue,當點擊“開始游戲”時跳轉到游戲界面。

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

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

//
//  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
        }
    }
}

三、試運行(附GIF)

四、評價

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

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

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

相關文章

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

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

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

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

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

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

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

    OC runtime學習筆記之關聯(lián)對象

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

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

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

    iOS 隱私權限和通過openURL實現(xiàn)跳轉實例

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

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

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

    iOS實現(xiàn)點擊狀態(tài)欄自動回到頂部效果詳解

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

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

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

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

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

最新評論

浮山县| 木里| 藁城市| 阿拉善左旗| 弥勒县| 镇巴县| 广饶县| 仪征市| 星子县| 嘉禾县| 河池市| 福贡县| 平度市| 武陟县| 京山县| 济源市| 湘潭市| 台前县| 重庆市| 贡嘎县| 剑川县| 淳安县| 五台县| 门头沟区| 崇左市| 商都县| 韩城市| 遂昌县| 武功县| 穆棱市| 科技| 延长县| 北宁市| 景德镇市| 隆德县| 丹寨县| 惠安县| 手机| 吉林市| 鄱阳县| 宁河县|