func displayArrayGraph() {
let myview1 = self.view.viewWithTag (2001) as. UIImageView
let myView2 = self.view. viewWithTag (2002) as! UIImageView
myView1.backgroundColor = .darkGray
myView2.backgroundColor = .darkGray
let h = myView1.frame. size.height
Let w = myViewl.frame. size.width
let padding: CGFloat = 5
let margin : CGFloat = 10
let grid_w = (w - margin * 2 - padding * CGFloat (cols-1)) / CGPloat (cols)
let grid_h = (h - margin * 2 - padding * CGrloat (rows-1)) / CGFloat (rows)
for i in 0..<rows{
for J in 0..<cols{
let × = margin + CGFloat (j) * (grid_w + padding)
let y = margin + CGFloat (i) * (grid_h + padding)
Let rect = CGRect (x:x, y:y, width: grid_w, height:grid_h)
let fileNamel = iv1 [i*cols+j].
let img1 = UIImage (named: fileName1)
Let imgView1 = UIImageView (frame: rect)
imgView1.image = img1
imgView1.backgroundColor = .yelLow
myView1.addSubview(imgViewl)
Let fileName2 = iv2 [i*coIs+j]
let img2 = UIImage (named: fileName2)
let imgView2 = UIImageView (frame: rect)
imgView2.image = img2
imgView2.backgroundColor = .yellow
myView2.addSubview (imgView2)
}
}
}
func displavArrayGraphButton () {
let myView1 = self.view.viewWithTag (2001) as! UIImageView
let myView2 = self.view.viewWithTag (2002) as! UIImageView
myView1.backgroundColor = .darkGray
myView2.backgroundcolor = .darkGray
myViewl.isuserInteractionEnabled = true
myView2.isuserInteractionEnabled = true
let h = myViewl.frame.size.height
let w = myView1.frame.size.width
let padding : CGFloat =5
let margin : CGFloat =10
let grid_w = (w - margin * 2 - padding * CGFloat (cols-1)) / CGFloat (cols)
let grid_h = (h - margin * 2 - padding * CGFloat (rows-1)) / CGFloat (rows)
for i in 0..<rows{
for j in 0..<cols {
let x = margin + CGFloat (j) * (grid w + padding)
let y = margin + CGFloat (i)* (grid h + padding)
Iet rect = CGRect (x: x, y:y , wiath: grid_w, height: grid_h)
let fileNamel = iv1 [i*cols+j]
let img1 = UIImage (named: fileName1)
let btn1 = UIButton (frame: rect)
btn1.setImage (img1, for: .normal)
btnl.backgroundcolor = .ye11ow
btnl.tag =i*cols+i+4000
btn1.addlarget (self, action: #selector (buttonCheck (_:)), for: .touchUpInside)
myView1.addSubview (btnl)
let fileName2 = iv2 [i*cols+j]
Let img2 = UIImage (named : fileName2)
let btn2 = UIButton (frame: rect)
btn2.setImage (img2, for: .normal)
btn2.backgroundcolor = .yellow
btnz.tag = i*cols+j + 5000
btn2.addTarget (self, action: #selector (buttoncheck _: )) ,for: .touchUpInside
myView2.addSubview (btn2)
}
}
}
@obic func buttoncheck (_ sender : UIButton) {
let tipsLabel = self.view .viewwithTag (1001) as! UILabel
let tag = sender.tag
if tag >= 5000 {
let row = Int ((tag = 5000) / co1s)
1et co1 = tag - 5000- cols * row
print ("Bottom (\ (row), \ (col)) ")
tipsLabel.text = "Bottom (\ (row), \ (col)) "
}
else if tag >= 4000{
let row = Int((tag - 4000)/ co1s)
let col = tag - 4000 - co1s * row
print ("Top (\ (row), \ (col)) ")
tipsLabel.text = "Top (\ (row) , \ (col) ) "
}
else {
print ("Button.tag=\ (sender.tag) ")
tipsLabel.text = "Button.tag=\ (sender. tag)"
}
}
func distractorCreate (mount: Int) {
for _ in 0..<mount {
let col = Int (arc4random () ) % cols
let row = Int (arc4random () ) % rows
cords .append ( (row, col))
let index = Int (arc4random () ) % images.count
ivl [cols*row + col] = images [index]
iv2 [cols*row + col] = images [index]
}
}
let rows = 8
let co1s = 8
var ivl : Array<string> = []
var iv2 : Array<string> = []
var cords : Array< (Int, Int)> = []
let images : Array<string> = ["bird", "bee", "flower", "mogu"]
func differencecreate (mount: Int) {
for _ in 0..<mountt {
let col = Int (arcarandom ()) % COls
let row = Int (arcArandom ()) & rows
errorcoras.append ( (row, col))
let index = Int (arc-random ( )) % images.count
let which = Int (arc4random ( )) % 2
if which == 0 {
iv1 [cols*row + col] = images [index]
}
else{
iv2 [cols*row + col] = images [index]
}
}
}
@objc func buttonCheckMusic (_ sender : UIButton) {
let tipsLabel = self.view.viewnithTag (1001) as! UILabel
var tag = sender.tag
if tag >= 5000 1
tag -= 5000
}
else if tag >= 4000 {
tag -= 4000
}
let row = Int (tag / cols)
let col = tag - cols * row
let result = errorCords. filter {
$0 == (row, col)
}
if result.count >= 1 {
let path = Bundle. main.path (forResource: "birdsound", ofType:"m4a" )
let url = URL (fileURLWithPath: path!)
soundPlayer=try? AVAudioPlayer (contentsOf: url)
soundPlayer.play ( )
tipsLabel.text="不同找到:(1(row),1(co1))"
}
else {
let path = Bundle. main.path (forResource: "error", ofType:"m4a")
let url = URL (fileURLWithPath: path!)
soundPlayer=try? AVAudioPlayer (contentsOf: url)
soundPlayer.play()
tipsIabel.text = "找错啦:(\(row) , \(co1))"
}
}
func getCurrentTimestamp () -> Int {
let now = Date ()
let timeInterval: TimeInterval = now.timelntervalSincel970
return Int (timeInterval)
}
func timeELapse() {
Timer .scheauledlimer(withrimeInterva_: 0.5, repeats : true) { (timer) in
let timestamp = self.getCurrentlimestamp ()
let pasteriod = timestamp - self.beginlimestamp
let countDown = self.GamePeriod - pastPeriod
self.TimeCost = pastPeriod
if countdown <= O || sell.GameOver{
self.GameOver = true
let tipsLabel = self.view.viewWithTag (1001) as! UILabel
tzpSLabeL.text = "游戏结束,共消耗时间\ (self.Timecost)秒"
timer.invalidate ()
}
let tipsLabel = self.view.viewwithTag (1002) as! UILabel
DispatchQueue .main.async{
tipsLabel.text="您消耗\(pastPeriod)秒,倒计时\(countDown)秒"
}
}
}
@objc func buttoncheckMusicTimer (_ sender : UIButton) {
if GameOver {return}
let tipsLabel = self.view.viewWithTag (1001) as! UILabel
var tag = sender.tag
if tag >= 5000 {
tag -= 5000
}
else if tag >= 4000 {
tag -= 4000
}
let row = Int (tag / cols)
let col = tag - cols * row
let result = errorCords.filter {
$0 == (row, col)
}
let reserved = errorCords. filter {
$0 != (row, col)
}
errorCords = reserved
if result.count >= 1 {
sender.backgroundColor = .red
let path = Bundle. main.path (forResource: "birdsound", ofType: "m4a")
let url = URL(fileURLWithPath: path!)
soundPlayer=try? AVAudioPlayer (contentsOf: url)
soundPlayer.play ()
tipsIabei.text= "不同找到:(\(IOW),\(COL)),还剩\(errOrCords.count)个"
if errorcords.count <= 0 {
GameOver = true
tipsLabel.text = "任务完成,共花费时间 \(self. Timecost)秒"
}
}
else {
sender.backgroundColor = .brown
let path = Bundle.main.path (forResource: "error", ofType:"m4a")
let url = URL (fileURLWithPath: path!)
soundPlayer=try? AVAudioPlayer (contentsOf: url)
soundPlayer.play ()
tipstabel.text = ⋯ "找错啦:(\(row),\(co1))"
}
}
func dispLayArrayGraphButtonlips() {
Let myViewl = self.view .viewWithTag (2001) as! UIImageView
Let myView2 = self.view.viewWithTag (2002) as! UlImageView
myViewl.backgroundColor = .darkGray
myView2.backgroundColor = .darkGray
myView1.isUserInteractionEnabled = true
myview2.isUserInteractionEnabled = true
let h = myView1.frame.size.height
let w = myView1.frame.size.width
let padding: CGFloat = 5
let margin: CGFloat = 10
let gria_w = (w - margin * 2 - padding * CGFloat(cols-1)) / CGFloat (cols)
let grid h = (h - margin * 2 - padding * COPloat (rows-1)) / COFIas (rows)
for i in 0..<rows {
for j in 0..<cols {
let x a margin + cGEloat (j)* (grid_ w + paddino)
let y = margin + cGFloat (i)* (grid_h + padding)
let reot = ceRect (x: x, y:y , wiath: gria w, height: grid b)
let fileNamel = iv1 [i*colst+j]
let tag1 = i*cols+j + 5000
addButton (view: myViewl, rect: rect, fileName: fileNamel,tag: tag1)
let fileName2 = iv2ri*cols+i1
let tag2 = i*cols+j + 4000
addButton (view: myView2,rect: rect, fileName : fileName2,tag: tag2)
}
}
}
func addButton (view:UIView, rect:cGRect, fileName : String, tag :Int) {
let img = UIImage (named: fileName)
let btn = UIButton (frame: rect)
btn.setImage (img, for: .normal)
var mytag = tag
if mytag >= 5000 {
mytag -= 5000
}
else if mytag >= 4000 {
mytag -= 4000
}
let row = Int (mytag / cols)
let col = mytag - cols * row
let result = errorCords.filter{
$0 == (row, col)
}
if result.count >= 1 && TipsFlag {0
btn.backgroundColor = .blue
}
else {
btn.backgroundColor = .yellow
}
btn.tag = tag
btn.addTarget (self, action: #selector (buttonCheckMusicTimer (_:)),for:.touchUpInside)
view.addSubview (btn)
}
@IBAction func onTips( sender : UIButton) {
TipsFlag = !TipsFlag
displayArrayGraphButtonTips ()
}
@IBAction func onBegin ( sender : UIButton) {
GameOver = false
beginTimestamp = getCurrentTimeStamp ()
timeElapse ()
initGame ()
distractorcreate (mount : 5)
differencecreate (mount: 3)
displayArrayGraphButtonTips ()
}
func addButton (view: UIView, rect:CGRect, tileName : String, tag:Int) {
let img = UIImage (named : fileName)
let btn = UIButton (frame: rect)
btn.setImage (img, for: .normal)
var mytag = tag
if mytag >= 5000 {
mytag -= 5000
}
else if mytag >= 4000{
mytag -= 4000
}
let row = Int (mytag / cols)
let col = mytag - cols * row
let result = errorCords.filter {
$0 == (row, col)
}
if result.count >= 1 && TipsFlag{
btn.backgroundColor = .blue
btn.tag = tag
btn.addTarget (self, action: #selector (buttonCheckMusicTimer (_:)),for: .touchUpInside)
view.addSubview (btn)
}
let resulti = cords.filter {
$0 == (row, col)
}
if resulti.count >= 1 {
btn.tag = tag
btn.addTarget (self, action: #selector (buttonCheckMusicTimer (_:)),for: touchUpInside)
view.addSubview (btn)
}
}
func removeAllSubViews (view:UIView) {
if view.subviews.count>0 {
view.subviews.forEach ( {$0. removeFromSuperview () })
}
}
@IBAction func onTips ( sender : UIButton) {
TipsFlag = !TipsFlag
displayArrayGraphButtonTips ()
}
@IBAction func onBegin ( sender : UIButton) {
GameOver = false
beginTimestamp = getcurrentTimestamp ()
timeElapse ()
initGame ()
distractorcreate (mount: 10)
differenceCreate (mount: 8)
displayArrayGraphButtonTips ()
}
@IBAction func onNext ( sender: UIButton) {
GameOver = true
TipsFlag = false
let mviewl = self. view. viewWithTag (2001) as! UIImageview
let mwView2 = self. view.viewwithTag (2002) as! UlImageView
CurrentBackground += 1
if CurrentBackground > 4 {
CurrentBackground = 1
}
let image = UIImage (named: "back0\(CurrentBackground)") !
myView1.image = image
myView2.image = image
removeAllSubViews(views: myiew1)
removeAllSubViews(view: myView2)
}
import SwiftUI
struct ContentView : View {
@State var userName : String = ""
@State var passWord : String = ""
var body: some View {
vstack {
Text ("欢迎使用找不同" )
.font (.title)
.padding()
Divider()
.background (Color (.brown))
Image (systemName:"person")
.resizable()
.Erame (width: 150, height: 150)
.cornerRadius (50)
VStack {
TextField("请输入用户名",text : $userName)
.padding ()
.padding (.leading, 10)
.background(Color(.lightGrav))
.cornerRadius (15)
TextField("请输入密码",text: $password)
.padding ()
.padding (.leading,10)
.background (Color (.lightGray))
.cornerRadius (15)
}
.padding()
.Button (action:{
print("被点击了。..")
},label: tText {("登录")})
.padding ()
Spacer ()
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
import SwiftUI
let lightGrayColor = Color (red: 239.0/255.0, green: 243.0/255.0, blue:244.0/255.0, opacity: 1.0)
struct ContentView:View {
@State var userName : String = ""
@State var passWord : String = ""
@State private var alertFlag : Bool = false
@State private var alertMsg : String = ""
var body: some View {
VStack {
Text("欢迎使用找不同")
.font(-tit1e)
.padding ()
Divider ()
.background (Color (.brown))
Image ("back02")
.resizable()
.frame (width:150, height:150)
.cornerRadius (150)
VStack {
Textpiela("请输入用户名",text:suserName)
.padding (
.padding (.leading, 10)
.background (lightGravcolor)
.cornerRadius (15)
Taxtpield ("请输入密码",text:$passnord)
.padding ()
.padding (.leading, 10)
.background (1ightGrayColor)
.cornerRadius (15)
}
padding ()
Button (action: {
if self.userName=="Zfchen" && self.password== "123" {
self.alertFlag = true
self.alertMsg= "登录成功"
}
else {
self.alertFlag = true
self.alertMsg ="登录失败"
}
},label: {
Text(" 登录")
.font (.headline)
.foregroundColor (.white)
.frame (width: 220, height: 60)
.background (Color.green)
.cornerRadius (15.0)
})
.padding ()
Spacer ()
}
.alert(ispreseented: $alertFlag) { () -> Alert in
Alert(title: Text("登陆提示"), message: Text(self.alertMsg),dismissButton: .default(Test("确定")))
}
}
}
struct Contentview_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}