Commit 8b22f48d by Mobile Roshka

commit terminado

parents
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:juego.xcodeproj">
</FileRef>
</Workspace>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>
<?xml version="1.0" encoding="UTF-8"?>
<Bucket
uuid = "EB0D7AB6-6F33-4EDA-B8F6-0628BDA69387"
type = "1"
version = "2.0">
</Bucket>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>SchemeUserState</key>
<dict>
<key>juego.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>0</integer>
</dict>
</dict>
</dict>
</plist>
//
// advancedMode.swift
// juego
//
// Created by Mobile Roshka on 3/4/20.
// Copyright © 2020 Mobile Roshka. All rights reserved.
//
import UIKit
class AdvancedModeViewController: UIViewController {
/*Se inicializan los valores a ser utilizados, puntaje, si el juego esta en curso, si el tiempo esta en curso, temporizador, contador de intentos y posicion del boton
*/
var points = 0
var initGame = false
var initTimer = false
var timer = Timer()
var timeRest = 0
var countGames = 0
let screenSize :CGRect = UIScreen.main.bounds
let screenWidth = UIScreen.main.bounds.width
let screenHeight = UIScreen.main.bounds.height
var x = 0
var y = 0
var buttonWidth = 86
var buttonHeight = 86
//el puntaje actual del jugador
@IBOutlet weak var pointsLblAM: UILabel!
//el tiempo restante
@IBOutlet weak var timeRestAMLbl: UILabel!
//texto y propiedades del boton jugar (se opaca cuando inicia el juego)
@IBOutlet weak var playGameAMOutlet: UIButton!
@IBOutlet weak var viewOutlet: UIView!
@IBAction func instructions(_ sender: Any) {
showAlertIntructions(message: "Presiona el boton azul la mayor cantidad de veces posibles antes de que se acabe el tiempo ")
}
@IBAction func bestPlayerBtn(_ sender: Any) {
showAlertBestPoint(message: "Mejor puntaje: \nObtenido por")
}
@IBOutlet weak var touchBtnOutlet: UIButton!
//eventos relacionados al inicio del juego
@IBAction func playGameAM(_ sender: Any) {
/*Inicia el juego cuendo se presiona el boton, */
points = 0
initGame = true
initTimer = true
timeRest = 30
timeRestAMLbl.text = "\(timeRest)"
playGameAMOutlet.alpha = 0.5
if initTimer{
points = 0
timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(timeRestMethod), userInfo :nil, repeats: true)
}
}
//Método para ir decrementando el tiempo y eventos correspondientes
@objc func timeRestMethod()
{
timeRest -= 1
timeRestAMLbl.text = "\(timeRest)"
//condicion de parada del temporizador y enventos al terminar el juego
if timeRest == 0 {
timer.invalidate()
initGame = false
countGames += 1
showAlertGameOver(message: "Intento \(countGames) \nHas logrado \(points) puntos")
playGameAMOutlet.alpha = 1
pointsLblAM.text = "0"
resetButton()
}
}
//contador de puntos segun cantidad de clicks
@IBAction func touchPlayBtnAM(_ sender: Any) {
if buttonHeight < 30 {
timer.invalidate()
showAlertGameOver(message: "Intento \(countGames) \nHas ganado en \(30 - timeRest) segundos")
playGameAMOutlet.alpha = 1
resetButton()
}
if initGame{
x = Int.random(in: 53..<(Int(screenWidth)-53)
)
y = Int.random(in: 100..<(Int(screenHeight)/2))
touchBtnOutlet.center.x = CGFloat(x)
touchBtnOutlet.center.y = CGFloat(y)
buttonWidth -= 6
buttonHeight -= 6
touchBtnOutlet.frame.size = CGSize(width: CGFloat(buttonWidth), height: CGFloat(buttonHeight))
points += 1
pointsLblAM.text = "\(points)"
}
}
//alerta cuando termina el juego, aparece el numero actual de intentos y el puntaje obtenido
private func showAlertGameOver(message: String){
let alertGameOver = UIAlertController(title: "Juego Terminado", message:message, preferredStyle: .alert)
alertGameOver.addAction(UIAlertAction(title: "Aceptar", style: .default, handler: nil))
present(alertGameOver, animated:true, completion:nil)
}
private func showAlertIntructions(message: String){
let alert = UIAlertController(title: "Instrucciones", message:message, preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "Aceptar", style: .default, handler: nil))
present(alert, animated:true, completion:nil)
}
private func showAlertBestPoint(message: String){
let alert = UIAlertController(title: "Mejor Puntaje", message:message, preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "Aceptar", style: .default, handler: nil))
present(alert, animated:true, completion:nil)
}
private func resetButton(){
touchBtnOutlet.center.x = screenWidth/2
touchBtnOutlet.center.y = screenHeight/2
buttonWidth = 86
buttonHeight = 86
touchBtnOutlet.frame.size = CGSize(width: CGFloat(buttonWidth), height: CGFloat(buttonHeight))
}
override func viewDidLoad() {
super.viewDidLoad()
resetButton()
}
}
//
// AppDelegate.swift
// juego
//
// Created by Mobile Roshka on 3/4/20.
// Copyright © 2020 Mobile Roshka. All rights reserved.
//
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
return true
}
// MARK: UISceneSession Lifecycle
func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
// Called when a new scene session is being created.
// Use this method to select a configuration to create the new scene with.
return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
}
func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {
// Called when the user discards a scene session.
// If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.
// Use this method to release any resources that were specific to the discarded scenes, as they will not return.
}
}
{
"images" : [
{
"idiom" : "iphone",
"size" : "20x20",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "20x20",
"scale" : "3x"
},
{
"idiom" : "iphone",
"size" : "29x29",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "29x29",
"scale" : "3x"
},
{
"idiom" : "iphone",
"size" : "40x40",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "40x40",
"scale" : "3x"
},
{
"idiom" : "iphone",
"size" : "60x60",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "60x60",
"scale" : "3x"
},
{
"idiom" : "ipad",
"size" : "20x20",
"scale" : "1x"
},
{
"idiom" : "ipad",
"size" : "20x20",
"scale" : "2x"
},
{
"idiom" : "ipad",
"size" : "29x29",
"scale" : "1x"
},
{
"idiom" : "ipad",
"size" : "29x29",
"scale" : "2x"
},
{
"idiom" : "ipad",
"size" : "40x40",
"scale" : "1x"
},
{
"idiom" : "ipad",
"size" : "40x40",
"scale" : "2x"
},
{
"idiom" : "ipad",
"size" : "76x76",
"scale" : "1x"
},
{
"idiom" : "ipad",
"size" : "76x76",
"scale" : "2x"
},
{
"idiom" : "ipad",
"size" : "83.5x83.5",
"scale" : "2x"
},
{
"idiom" : "ios-marketing",
"size" : "1024x1024",
"scale" : "1x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
\ No newline at end of file
{
"info" : {
"version" : 1,
"author" : "xcode"
}
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13122.16" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13104.12"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--View Controller-->
<scene sceneID="EHf-IW-A2E">
<objects>
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" xcode11CocoaTouchSystemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
<viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="53" y="375"/>
</scene>
</scenes>
</document>
//
// expertMode.swift
// juego
//
// Created by Mobile Roshka on 3/4/20.
// Copyright © 2020 Mobile Roshka. All rights reserved.
//
import UIKit
class ExpertModeViewController: UIViewController {
/*Se inicializan los valores a ser utilizados, puntaje, si el juego esta en curso, si el tiempo esta en curso, temporizador, contador de intentos y posicion del boton
*/
var touchs = 0
var initGame = false
var initTimer = false
var timer = Timer()
var timeRest = 0
var countGames = 0
/*se obtiene el largo y ancho de pantalla*/
let screenSize :CGRect = UIScreen.main.bounds
let screenWidth = UIScreen.main.bounds.width
let screenHeight = UIScreen.main.bounds.height
/*se inicializa las variables de posicion para el boton*/
var x = 0
var y = 0
/*Largo y ancho del boton*/
var buttonWidth = 86
var buttonHeight = 86
//toques restantes para ganar
@IBOutlet weak var touchsLblEM: UILabel!
//el tiempo restante
@IBOutlet weak var timeRestEMLbl: UILabel!
//texto y propiedades del boton jugar (se opaca cuando inicia el juego)
@IBOutlet weak var playGameEMOutlet: UIButton!
@IBAction func instructionsEM(_ sender: Any) {
showAlertIntructions(message: "Reduce el tamaño del boton al mínimo posible antes de que se acabe el tiempo ")
}
@IBAction func bestPlayerBtnEM(_ sender: Any) { showAlertBestPoint(message: "Mejor puntaje: \nObtenido por")
}
@IBOutlet weak var touchBtnOutlet: UIButton!
//eventos relacionados al inicio del juego
@IBAction func playGameEM(_ sender: Any) { /*Inicia el juego cuendo se presiona el boton, */
initGame = true
initTimer = true
timeRest = 30
timeRestEMLbl.text = "\(timeRest)"
playGameEMOutlet.alpha = 0.5
if initTimer{
touchs = 10
timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(timeRestMethod), userInfo :nil, repeats: true)
}
}
//Método para ir decrementando el tiempo y eventos correspondientes
@objc func timeRestMethod()
{
timeRest -= 1
timeRestEMLbl.text = "\(timeRest)"
//condicion de parada del temporizador y enventos al terminar el juego
if timeRest == 0 {
timer.invalidate()
initGame = false
countGames += 1
showAlertGameOver(message: "Intento \(countGames) \nPerdiste \n te faltaron \(touchs) toques")
resetGame()
}
}
//eventos relacionados a cuando se presiona el botón
@IBAction func touchPlayBtnAM(_ sender: Any) {
if touchs == 1 {
timer.invalidate()
showAlertGameOver(message: "Intento \(countGames) \nHas ganado en \(30 - timeRest) segundos")
playGameEMOutlet.alpha = 1
resetGame()
}
if initGame{
x = Int.random(in: 103..<(Int(screenWidth)-53)
)
y = Int.random(in: 100..<(Int(screenHeight)/2))
touchBtnOutlet.center.x = CGFloat(x)
touchBtnOutlet.center.y = CGFloat(y)
buttonWidth -= 6
buttonHeight -= 6
touchBtnOutlet.frame.size = CGSize(width: CGFloat(buttonWidth), height: CGFloat(buttonHeight))
touchs -= 1
touchsLblEM.text = "\(touchs)"
}
}
//alerta cuando termina el juego, aparece el numero actual de intentos y el puntaje obtenido
private func showAlertGameOver(message: String){
let alertGameOver = UIAlertController(title: "Juego Terminado", message:message, preferredStyle: .alert)
alertGameOver.addAction(UIAlertAction(title: "Aceptar", style: .default, handler: nil))
present(alertGameOver, animated:true, completion:nil)
}
private func showAlertIntructions(message: String){
let alert = UIAlertController(title: "Instrucciones", message:message, preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "Aceptar", style: .default, handler: nil))
present(alert, animated:true, completion:nil)
}
private func showAlertBestPoint(message: String){
let alert = UIAlertController(title: "Mejor Puntaje", message:message, preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "Aceptar", style: .default, handler: nil))
present(alert, animated:true, completion:nil)
}
private func resetGame(){
touchBtnOutlet.center.x = screenWidth/2
touchBtnOutlet.center.y = screenHeight/2
touchs = 0
buttonWidth = 86
buttonHeight = 86
touchBtnOutlet.frame.size = CGSize(width: CGFloat(buttonWidth), height: CGFloat(buttonHeight))
playGameEMOutlet.alpha = 1
touchsLblEM.text = "0"
}
override func viewDidLoad() {
super.viewDidLoad()
resetGame()
}
}
//
// firstView.swift
// juego
//
// Created by Mobile Roshka on 3/5/20.
// Copyright © 2020 Mobile Roshka. All rights reserved.
//
import Foundation
import UIKit
class FirstViewController: UIViewController {
var playerName = ""
@IBAction func nameTextField(_ sender: Any) {
}
@IBOutlet weak var nameTextFieldInput: UITextField!
@IBAction func saveBtn(_ sender: Any) {
if let pName = nameTextFieldInput.text{
playerName = pName
showAlert(message: "\(playerName) registrado correctamente")
}
else {
showAlert(message: "No se ha registrado ningun jugador")
}
}
private func showAlert(message: String){
let alert = UIAlertController(title: "Registrar Jugador", message:message, preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "Aceptar", style: .default, handler: nil))
present(alert, animated:true, completion:nil)
}
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func enterBtn(_ sender: Any) {
let hVC = self.storyboard?.instantiateViewController(withIdentifier: "homeVC") as! HomeViewControler
hVC.name = playerName
}
}
//
// home.swift
// juego
//
// Created by Mobile Roshka on 3/4/20.
// Copyright © 2020 Mobile Roshka. All rights reserved.
//
import UIKit
class HomeViewControler: UIViewController {
var name: String?
@IBOutlet weak var playerNameLbl: UILabel!
//botones de ingreso a los juegos
@IBOutlet weak var singleModeBtn: UIButton!
@IBOutlet weak var advancedModeBtn: UIButton!
@IBOutlet weak var expertModeBtn: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
if let pName = name {
playerNameLbl.text = "Bienvenido, \(pName)"
}
else {
playerNameLbl.text = "Bienvenido, Invitado"
}
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UIApplicationSceneManifest</key>
<dict>
<key>UIApplicationSupportsMultipleScenes</key>
<false/>
<key>UISceneConfigurations</key>
<dict>
<key>UIWindowSceneSessionRoleApplication</key>
<array>
<dict>
<key>UISceneConfigurationName</key>
<string>Default Configuration</string>
<key>UISceneDelegateClassName</key>
<string>$(PRODUCT_MODULE_NAME).SceneDelegate</string>
<key>UISceneStoryboardFile</key>
<string>Main</string>
</dict>
</array>
</dict>
</dict>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
</dict>
</plist>
//
// SceneDelegate.swift
// juego
//
// Created by Mobile Roshka on 3/4/20.
// Copyright © 2020 Mobile Roshka. All rights reserved.
//
import UIKit
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
// Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
// If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
// This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
guard let _ = (scene as? UIWindowScene) else { return }
}
func sceneDidDisconnect(_ scene: UIScene) {
// Called as the scene is being released by the system.
// This occurs shortly after the scene enters the background, or when its session is discarded.
// Release any resources associated with this scene that can be re-created the next time the scene connects.
// The scene may re-connect later, as its session was not neccessarily discarded (see `application:didDiscardSceneSessions` instead).
}
func sceneDidBecomeActive(_ scene: UIScene) {
// Called when the scene has moved from an inactive state to an active state.
// Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive.
}
func sceneWillResignActive(_ scene: UIScene) {
// Called when the scene will move from an active state to an inactive state.
// This may occur due to temporary interruptions (ex. an incoming phone call).
}
func sceneWillEnterForeground(_ scene: UIScene) {
// Called as the scene transitions from the background to the foreground.
// Use this method to undo the changes made on entering the background.
}
func sceneDidEnterBackground(_ scene: UIScene) {
// Called as the scene transitions from the foreground to the background.
// Use this method to save data, release shared resources, and store enough scene-specific state information
// to restore the scene back to its current state.
}
}
//
// singleMode.swift
// juego
//
// Created by Mobile Roshka on 3/4/20.
// Copyright © 2020 Mobile Roshka. All rights reserved.
//
import UIKit
class SingleModeViewController: UIViewController {
var points = 0
var initGame = false
var initTimer = false
var timer = Timer()
var timeRest = 10
@IBOutlet weak var pointsLbl: UILabel!
@IBOutlet weak var timeRestLbl: UILabel!
@IBAction func playGame(_ sender: Any) {
initGame = true
initTimer = true
timeRest = 10
timeRestLbl.text = "\(timeRest)"
if initTimer{
timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(timeRestMethod), userInfo :nil, repeats: true)
}
}
@objc func timeRestMethod()
{
timeRest -= 1
timeRestLbl.text = "\(timeRest)"
if timeRest == 0 {
timer.invalidate()
initGame = false
}
}
@IBAction func touchBtn(_ sender: Any) {
if initGame{
points += 1
pointsLbl.text = "\(points)"
}
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
</dict>
</plist>
//
// juegoTests.swift
// juegoTests
//
// Created by Mobile Roshka on 3/4/20.
// Copyright © 2020 Mobile Roshka. All rights reserved.
//
import XCTest
@testable import juego
class juegoTests: XCTestCase {
override func setUp() {
// Put setup code here. This method is called before the invocation of each test method in the class.
}
override func tearDown() {
// Put teardown code here. This method is called after the invocation of each test method in the class.
}
func testExample() {
// This is an example of a functional test case.
// Use XCTAssert and related functions to verify your tests produce the correct results.
}
func testPerformanceExample() {
// This is an example of a performance test case.
self.measure {
// Put the code you want to measure the time of here.
}
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
</dict>
</plist>
//
// juegoUITests.swift
// juegoUITests
//
// Created by Mobile Roshka on 3/4/20.
// Copyright © 2020 Mobile Roshka. All rights reserved.
//
import XCTest
class juegoUITests: XCTestCase {
override func setUp() {
// Put setup code here. This method is called before the invocation of each test method in the class.
// In UI tests it is usually best to stop immediately when a failure occurs.
continueAfterFailure = false
// In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this.
}
override func tearDown() {
// Put teardown code here. This method is called after the invocation of each test method in the class.
}
func testExample() {
// UI tests must launch the application that they test.
let app = XCUIApplication()
app.launch()
// Use recording to get started writing UI tests.
// Use XCTAssert and related functions to verify your tests produce the correct results.
}
func testLaunchPerformance() {
if #available(macOS 10.15, iOS 13.0, tvOS 13.0, *) {
// This measures how long it takes to launch your application.
measure(metrics: [XCTOSSignpostMetric.applicationLaunch]) {
XCUIApplication().launch()
}
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment