首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以编程方式绘制游戏板

以编程方式绘制游戏板
EN

Stack Overflow用户
提问于 2018-03-17 00:45:59
回答 1查看 53关注 0票数 0

尝试在iPad上绘制一个简单的15x15游戏板。

目前我的代码只在左上角打印了一张图片,这似乎是添加到imgViewArray中的最终图片,但不是100%确定。

代码语言:javascript
复制
func createImgBoard() {
    let cellWidth = 57
    let cellHeight = 57
    let squares = 225

    var k = 0
    var row = 0; var col = 0

    let topY = 500-4*cellHeight
    let leftX = 384-4*cellWidth

    var image: UIImage

    for i in 0...14 {
        for j in 0...14 {
            if board[i][j].symbol == "*" {
                image = UIImage(named: "grass57x57px")!
                imgViewArray[k].image = image
            }
            else {
                image = UIImage(named: "notgrass57x57px")!
                imgViewArray[k].image = image
            }
            k+=1
            print("Added img to imgViewArray " + String(k) + " as " + String(describing: image))
        }
    }

    for i in 0...squares-1 {

        imgViewArray[i].frame = CGRect.init(x: leftX+cellWidth*col, y: topY+cellHeight*row, width: cellWidth, height: cellHeight)

        self.view.addSubview(imgViewArray[i])

        col+=1
        if col > 14 {
            row+=1
            col=0
        }

    } 
}

编辑:由于某种原因,现在它甚至不能显示单个图像,即使代码根本没有改变...

EN

回答 1

Stack Overflow用户

发布于 2018-03-17 01:15:27

为什么还要使用两个独立的循环呢?你可以在第一个(嵌套的)循环中做任何你需要的事情。

代码语言:javascript
复制
class MyViewController: UIViewController {

    let board: [[String]] = []
    let cellImageView: [[UIImageView]] = []

    func createBoardImageViews() {
        let cellWidth = 57
        let cellHeight = 57
        let boardWidth = 15
        let boardHeight = 15

        let x0 = 384 - 4 * cellWidth
        let y0 = 500 - 4 * cellHeight

        let imageForCellMarker: [String: UIImage] = [
            "*": UIImage(named: "grass")!,
            // etc., assuming you have other cell marker types
        ]
        let defaultCellImage = UIImage(named: "notgrass")!

        for y in 0 ..< boardHeight {
            cellImageView.append([])
            for x in 0 ..< boardWidth {
                let image = imageForCellMarker[board[y][x]] ?? defaultCellImage
                let frame = CGRect(x: x0 + x * cellWidth, y: y0 + y * cellHeight, width: cellWidth, height: cellHeight)
                let imageView = UIImageView(frame: frame)
                imageView.image = image
                cellImageView[y].append(imageView)
                view.addSubview(imageView)
            }
        }
    }

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49325781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档