欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

一、界面設(shè)計

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

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

 二、實現(xiàn)

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

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

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

//
//  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)點:程序簡單,代碼量小,無復(fù)雜算法。

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

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

相關(guān)文章

最新評論