日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS swift 2048小游戏开发教程(一)

發布時間:2023/12/10 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS swift 2048小游戏开发教程(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

swift?實戰項目之 2048游戲

之前看過網上很多寫小項目的文章,但大多是舊版或者不全的,這里推出swift5 ?項目之2048給大家分享

?

【2020年更新,建議直接看源碼:源碼地址】

?

本文將要使用的思路和上面2020更新的源碼思路不一樣,本文的思路清晰但是代碼復雜。

1.首先新建一個項目,自動生成我們的viewController,添加如下代碼,構造最簡單的起始頁面:

class ViewController:UIViewController {

?

? ? override func viewDidLoad() {

? ? ? ? super.viewDidLoad()

?

? ? ? ?view.backgroundColor = UIColor.black

? ? ? ? let?wid =view.bounds.width

? ? ? ? let?hei =view.bounds.height

?

// 想點button跳轉入游戲界面,因此??

? ? ? ? let?startButton1 =UIButton(frame:CGRect(x:0, y:hei/3, width: wid, height:20))

? ? ? ? startButton1.setTitleColor(UIColor.red, for: .normal)

? ? ? ? startButton1.setTitle("2048",for: .normal)

//文字居中

? ? ? ?startButton1.contentHorizontalAlignment = .center

?

? ? ? ? startButton1.addTarget(self,action:#selector(start1),for: .touchUpInside)

? ?

? ? ? ? view.addSubview(startButton1)?

? ? }

// 點擊事件:需要新建一個swift文件:GamePanel.swift ,繼承UIViewController。點擊按鈕后就進這個ViewController界面。

??func?start1(){

? ? ? ??self.present(?GamePanel(), ?animated:?false, completion:?nil)

? ? }

?

?

GamePanel.swift:??

import Foundation

import UIKit

?

class GamePanel:UIViewController{

?

? ? let?dimension:Int =4 ? //?四行四列,等項目做完,試試自定義行列數。

? ? let?boardwidth:CGFloat! ? ?// ?游戲區域寬度

? ? let scorewidth:CGFloat=50 ? ?//?記分板垂直方向的寬度

? ? let thinPadding:CGFloat=5 ??// 最小滑塊的間距

? ? var unit:CGFloat! ? // ?最小滑塊的邊長

? ? var x:CGFloat! ? ?// ?包容小方塊的大正方形的位置 x,y,也就是游戲區域

? ? var y:CGFloat!

?

說到這,我們有大正方形,有最小滑塊,有記分板,那就得先新建三個類:

?

1、新建: GameView.swift,是大正方形,里面包著16個小正方形?

然后:?

? ? var game:GameView!

2、新建: ScoreView.swift,是記分板,顯示分數?

然后:

? ? var scoreBoard:ScoreView!

?3、一會再說,大正方形還沒寫呢,何談小塊?

?

構造方法

?

?init(?) {

? ? ???boardwidth?= 400 // 設成多寬隨意

? ? ???super.init(nibName:?nil, bundle:?nil? ?// 這句沒意思 可照抄

? ? }

?

? ? override func?viewDidLoad() {

? ? ?? super.viewDidLoad()

準備好游戲區域大正方形的位置 x,y,為了居中,下面是簡單的計算

? ? ?? x = (view.bounds.width-boardwidth)/2

?? ? ? y = (view.bounds.height-boardwidth+scorewidth)/2

? ? ?? self.view.backgroundColor =UIColor(red:0.95, green:0.83, blue:1, alpha:1)

? ??

? ? 展示大正方形和積分板的倆方法:? ?? ?

?? ? ? showGridView()

?? ? ? showScoreBoard()

?

? ? }

??

? ? requiredinit?(coderaDecoder:NSCoder) {

?? ? ? fatalError("init(coder:) has not beenimplemented")

? ? }

?

GamePanel是負責控制游戲的(Controller),其他view要單設類重寫

?

這兩個方法可以在寫完那兩個類的構造方法再來寫,現在先寫個方法頭扔這就行

1 展示大正方形:

?

? ? func showGridView(){? ?

?

??? ? unit = (boardwidth-thinPadding*CGFloat(dimension+1))/CGFloat(dimension)

?

???game =GameView(unit:unit,dime:dimension,x:x,y:y,thin:thinPadding) ?//一會寫

?

? ? ?view.addSubview(game)

? ? }

?

2 展示記分板,

?

? ? func showScoreBoard(){

?

? ? ?? scoreBoard =ScoreView(unit:unit,y:y,screenX:view.bounds.width) //一會寫

?? ? ? scoreBoard.score =0

?

? ? ?? view.addSubview(scoreBoard)

? ? }

}

?

大方塊GameView.swift:

?

import Foundation

import UIKit

class GameView:UIView {

?

? ? var dimension:Int!

? ? var unitwidth:CGFloat!

? ? var thinPadding:CGFloat!

?

? ? var x:CGFloat!

? ? var y:CGFloat! ? ?// 這幾個屬性看之前注釋 一樣的意思

?

構造方法?

?

? ? init(unit:CGFloat,dime:Int,x:CGFloat,y:CGFloat,thin:CGFloat){

? ? ?? self.x= x

? ? ?? self.y= y

? ? ?? self.thinPadding= thin

? ? ?? self.dimension= dime

? ? ?? self.unitwidth= unit

?

? ? ? ?let wid = thinPadding!*CGFloat(dime+1)+unit*CGFloat(dime)

?

? ? 確定frame位置: ? ?

???? super.init(frame:CGRect(x:x, y: y, width: wid, height: wid))

?

? ? 調用下面的方法初始化小單元方格 : ? ? ?

???? setGrid()

?

?}

?

? ? required init?(coderaDecoder: NSCoder) {

?? ? ? fatalError("init(coder:) has not beenimplemented")

?}

?

?? //初始化空的小單元們 ?PS。這只是初始化單元的位置,不是最小塊。

? ? func setGrid(){

?

?? ? ? layer.cornerRadius =10

? ?clipsToBounds?=?true

? ? ?? backgroundColor =UIColor(red:?0.73, green:?1, blue:?0.85, alpha:?1)

?

? ? ??

兩個for循環初始化位置:

?

? ?var?tempy:CGFloat=?0

?

? ? ?? for _?in??0..<dimension{

?

? ? ?? ? ? var tempx:CGFloat =0

?

? ? ?? ? ? for?_?in?0..<dimension{

?

? ? ?? ? ? ? ? let viewUnit=UIView(frame:CGRect(x:thinPadding+tempx, y:thinPadding+tempy, width:unitwidth,height: unitwidth))

?

? ? ?? ? ? ? ? viewUnit.layer.cornerRadius =8

?

? ? ? ?viewUnit.clipsToBounds =true

? ? ?? ? ? ? ? viewUnit.backgroundColor=UIColor(red:?0.9, green:?1, blue:?0.97, alpha:?1)

?

? ? ?? ? ? ? ? addSubview(viewUnit)

?

? ? ?? ? ? ? ? tempx += unitwidth+thinPadding

?

? ? ?? ? ? }

?

? ? ?? ? ? tempy += unitwidth+thinPadding

?

? ? ?? }

? ? }

?

下面是記分板類ScoreView.swift ?繼承 UILabel 。你也可以繼承UIView。我為了省事就這樣了。。

import Foundation

import UIKit

class ScoreView:UILabel{

?

屬性觀察者 傳score值

? ? var score:Int =0{

? ? ?? didSet{

? ? ?? ? ? text ="SCORE:\(score)"

? ? ?? }

? ? }

?

初始化

? ? init(unit:CGFloat,y:CGFloat,screenX:CGFloat){

?

? ? ?? let height:CGFloat=68 ? //?隨便

? ? ?? let width =2.5*unit ? ?// 自己定

?

根據屏幕和游戲區位置確定記分板位置:

? ? ?? let localX = (screenX-width)/2

? ? ?? let localY = (y-height)/2

?

? ? ?? super.init(frame:CGRect(x: localX, y: localY, width: width,height: height))

? ? ???

? ? ? ?backgroundColor =UIColor(red:?0.47, green: 0.84, blue:?0.97, alpha:?1)

?? ? ? textColor = UIColor.red

?? ? ? textAlignment = .center ? ?

? ? }

? ? required init?(coderaDecoder: NSCoder) {

?? ? ? fatalError("init(coder:) has not beenimplemented")

? ? }??

}

?

寫完排排錯 運行看看什么樣子

?

總結

以上是生活随笔為你收集整理的iOS swift 2048小游戏开发教程(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产激情久久久久久熟女老人av | 日韩欧美在线一区二区 | 一区二区网| 精品无码一级毛片免费 | 尤物精品在线观看 | 成人欧美精品一区二区 | 成人国产在线观看 | 国产日韩视频在线 | 三级三级久久三级久久18 | 片黄在线观看 | 亚洲在线视频观看 | 波多野结衣一区在线 | 精品国产三级a∨在线 | 风流老熟女一区二区三区 | 日本免费一二区 | 午夜视频欧美 | 国产一二| www中文字幕在线观看 | 国产青青草 | 国产黄色录相 | www.色哟哟 | 国产九色av | 亚洲不卡中文字幕 | 一级黄色短片 | 久久国产香蕉 | 亚洲综合精品国产一区二区三区 | 中文写幕一区二区三区免费观成熟 | 素人一区 | 亚洲 欧美 激情 小说 另类 | 日韩成人高清在线 | 欧美一级视频免费 | 奇米第四色777 | 麻豆蜜臀 | 成人国产精品免费观看动漫 | 青草视频网 | 欧美三级免费 | 精品国产乱码久久久久久108 | 青草视频在线播放 | 国产亚洲欧美在线视频 | 亚洲一区二区中文字幕 | 狠狠干成人 | 涩涩涩在线观看 | 久久网中文字幕 | 国产精品无码成人片 | 69国产精品视频 | 国产成人三级在线观看视频 | 打屁屁日本xxxxx变态 | 亚洲综合图色40p | 欧美成人一区二区在线 | 乌克兰极品av女神 | 美女露隐私网站 | 国产一极毛片 | 乱子伦一区二区三区 | 久久福利电影 | 91这里只有精品 | 国产视频在线观看网站 | 漂亮少妇高潮午夜精品 | 激情欧美一区二区 | 人体裸体bbbbb欣赏 | 小早川怜子一区二区三区 | 亚洲图片中文字幕 | 成人精品一区二区三区电影 | 亚洲精品h | 亚洲第八页 | 精品麻豆一区二区 | 日韩黄色高清视频 | 欧美一性一交 | 亚洲中文字幕久久无码 | 美女黄色免费网站 | 麻豆国产一区二区三区 | 99精品人妻无码专区在线视频区 | 91亚瑟| 国产三级精品三级在线观看 | 大黄一级片 | 午夜久久视频 | av色吧| 亚洲高清免费 | 一级片在线免费 | 国产日日夜夜 | 久久伊人影视 | 日韩欧美国产亚洲 | 老司机黄色影院 | 日韩 欧美 精品 | 亚洲第一综合色 | 露出调教羞耻91九色 | 丁香花免费高清完整在线播放 | 91免费视频播放 | a级片在线免费观看 | 少妇被黑人到高潮喷出白浆 | 韩国伦理片在线看 | 香蕉久久久久 | 日本三级韩国三级三级a级按摩 | 女人av| 精品日韩制服无码久久久久久 | 欧美片17c07.com | 疯狂做爰的爽文多肉小说王爷 | 久久久久亚洲视频 | 成人av在线播放网站 | 国产精品视频a |