亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

iOS開發(fā)數(shù)獨(dú)小游戲?qū)嵗?/h1>
 更新時(shí)間:2021年11月03日 11:15:38   作者:易水卷長(zhǎng)空  
這篇文章主要為大家詳細(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ù)字編號(hào),再點(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)

四、評(píng)價(jià)

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

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

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

相關(guān)文章

最新評(píng)論