Commit ee4e08b8 by Julio Hermosa

Se agrega al proyecto, la versión 3 del poker, se utilizó un nuevo…

Se agrega al proyecto, la versión 3 del poker, se utilizó un nuevo viewcontroller (Poker3ViewController), cuya implementación se encuentra en la clase con el mismo nombre

Obs: falta mejorar el algoritmo para desempatar en caso de que hayan manos iguales cuando hay más de 2 jugadores
parent 88f1ccf7
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
BBE636F7244519F8000E01F0 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = BBE636F6244519F8000E01F0 /* Assets.xcassets */; }; BBE636F7244519F8000E01F0 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = BBE636F6244519F8000E01F0 /* Assets.xcassets */; };
BBE636FA244519F8000E01F0 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = BBE636F8244519F8000E01F0 /* LaunchScreen.storyboard */; }; BBE636FA244519F8000E01F0 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = BBE636F8244519F8000E01F0 /* LaunchScreen.storyboard */; };
BBE6370224451A41000E01F0 /* Carta.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBE6370124451A41000E01F0 /* Carta.swift */; }; BBE6370224451A41000E01F0 /* Carta.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBE6370124451A41000E01F0 /* Carta.swift */; };
BBE63706244FDE1B000E01F0 /* Poker3ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBE63705244FDE1B000E01F0 /* Poker3ViewController.swift */; };
/* End PBXBuildFile section */ /* End PBXBuildFile section */
/* Begin PBXFileReference section */ /* Begin PBXFileReference section */
...@@ -26,6 +27,7 @@ ...@@ -26,6 +27,7 @@
BBE636F9244519F8000E01F0 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; }; BBE636F9244519F8000E01F0 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
BBE636FB244519F8000E01F0 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; BBE636FB244519F8000E01F0 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
BBE6370124451A41000E01F0 /* Carta.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Carta.swift; sourceTree = "<group>"; }; BBE6370124451A41000E01F0 /* Carta.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Carta.swift; sourceTree = "<group>"; };
BBE63705244FDE1B000E01F0 /* Poker3ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Poker3ViewController.swift; sourceTree = "<group>"; };
/* End PBXFileReference section */ /* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */ /* Begin PBXFrameworksBuildPhase section */
...@@ -66,6 +68,7 @@ ...@@ -66,6 +68,7 @@
BBE636F8244519F8000E01F0 /* LaunchScreen.storyboard */, BBE636F8244519F8000E01F0 /* LaunchScreen.storyboard */,
BBE636FB244519F8000E01F0 /* Info.plist */, BBE636FB244519F8000E01F0 /* Info.plist */,
BBE6370124451A41000E01F0 /* Carta.swift */, BBE6370124451A41000E01F0 /* Carta.swift */,
BBE63705244FDE1B000E01F0 /* Poker3ViewController.swift */,
); );
path = poker; path = poker;
sourceTree = "<group>"; sourceTree = "<group>";
...@@ -143,6 +146,7 @@ ...@@ -143,6 +146,7 @@
files = ( files = (
BBE636F2244519F2000E01F0 /* ViewController.swift in Sources */, BBE636F2244519F2000E01F0 /* ViewController.swift in Sources */,
BBE6370224451A41000E01F0 /* Carta.swift in Sources */, BBE6370224451A41000E01F0 /* Carta.swift in Sources */,
BBE63706244FDE1B000E01F0 /* Poker3ViewController.swift in Sources */,
BBE636EE244519F2000E01F0 /* AppDelegate.swift in Sources */, BBE636EE244519F2000E01F0 /* AppDelegate.swift in Sources */,
BBE636F0244519F2000E01F0 /* SceneDelegate.swift in Sources */, BBE636F0244519F2000E01F0 /* SceneDelegate.swift in Sources */,
); );
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="15400" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="BYZ-38-t0r"> <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="15400" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="WA2-NF-gB5">
<device id="retina4_0" orientation="portrait" appearance="light"/> <device id="retina4_0" orientation="portrait" appearance="light"/>
<dependencies> <dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15404"/> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15404"/>
...@@ -7,7 +7,41 @@ ...@@ -7,7 +7,41 @@
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies> </dependencies>
<scenes> <scenes>
<!--View Controller--> <!--Elegir Modo-->
<scene sceneID="r9r-na-MOP">
<objects>
<viewController id="jSC-1w-Vgq" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="u05-k0-YFR">
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="5sd-S5-2Cw">
<rect key="frame" x="105" y="208" width="110" height="30"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<state key="normal" title="Draw Poker (v2)"/>
<connections>
<segue destination="BYZ-38-t0r" kind="show" id="HZD-Oo-VX8"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="kzq-uF-pfn">
<rect key="frame" x="90" y="317" width="140" height="30"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<state key="normal" title="Poker Texas Holdem"/>
<connections>
<segue destination="PFg-aw-Fg1" kind="show" id="XJ9-fo-cdy"/>
</connections>
</button>
</subviews>
<color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
<viewLayoutGuide key="safeArea" id="2Hh-1p-biA"/>
</view>
<navigationItem key="navigationItem" title="Elegir Modo" id="gfb-dv-NvV"/>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="yc5-ic-gtI" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="609" y="-1271"/>
</scene>
<!--Draw Poker-->
<scene sceneID="tne-QT-ifu"> <scene sceneID="tne-QT-ifu">
<objects> <objects>
<viewController id="BYZ-38-t0r" customClass="ViewController" customModule="poker" customModuleProvider="target" sceneMemberID="viewController"> <viewController id="BYZ-38-t0r" customClass="ViewController" customModule="poker" customModuleProvider="target" sceneMemberID="viewController">
...@@ -15,14 +49,8 @@ ...@@ -15,14 +49,8 @@
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/> <rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Póker" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7qK-tZ-pZY">
<rect key="frame" x="112" y="15" width="96.5" height="48"/>
<fontDescription key="fontDescription" type="system" pointSize="40"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Jugador1" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="yDe-2w-b0i"> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Jugador1" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="yDe-2w-b0i">
<rect key="frame" x="10" y="73" width="300" height="20"/> <rect key="frame" x="10" y="64" width="300" height="20"/>
<constraints> <constraints>
<constraint firstAttribute="height" constant="20" id="SMB-7u-Hkb"/> <constraint firstAttribute="height" constant="20" id="SMB-7u-Hkb"/>
</constraints> </constraints>
...@@ -31,7 +59,7 @@ ...@@ -31,7 +59,7 @@
<nil key="highlightedColor"/> <nil key="highlightedColor"/>
</label> </label>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="IRK-zS-xeX"> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="IRK-zS-xeX">
<rect key="frame" x="135" y="512" width="50" height="36"/> <rect key="frame" x="135" y="503" width="50" height="36"/>
<fontDescription key="fontDescription" type="system" pointSize="20"/> <fontDescription key="fontDescription" type="system" pointSize="20"/>
<state key="normal" title="Jugar"/> <state key="normal" title="Jugar"/>
<connections> <connections>
...@@ -39,7 +67,7 @@ ...@@ -39,7 +67,7 @@
</connections> </connections>
</button> </button>
<stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" spacing="49" translatesAutoresizingMaskIntoConstraints="NO" id="Ou2-8o-ek7"> <stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" spacing="49" translatesAutoresizingMaskIntoConstraints="NO" id="Ou2-8o-ek7">
<rect key="frame" x="22.5" y="103" width="275" height="80"/> <rect key="frame" x="22.5" y="94" width="275" height="80"/>
<subviews> <subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Vkv-vk-1hC"> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Vkv-vk-1hC">
<rect key="frame" x="0.0" y="0.0" width="59" height="80"/> <rect key="frame" x="0.0" y="0.0" width="59" height="80"/>
...@@ -138,7 +166,7 @@ ...@@ -138,7 +166,7 @@
</constraints> </constraints>
</stackView> </stackView>
<stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" spacing="49" translatesAutoresizingMaskIntoConstraints="NO" id="PeU-dx-cSX"> <stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" spacing="49" translatesAutoresizingMaskIntoConstraints="NO" id="PeU-dx-cSX">
<rect key="frame" x="76.5" y="193" width="167" height="80"/> <rect key="frame" x="76.5" y="184" width="167" height="80"/>
<subviews> <subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="nSa-K5-FZr"> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="nSa-K5-FZr">
<rect key="frame" x="0.0" y="0.0" width="59" height="80"/> <rect key="frame" x="0.0" y="0.0" width="59" height="80"/>
...@@ -207,7 +235,7 @@ ...@@ -207,7 +235,7 @@
</constraints> </constraints>
</stackView> </stackView>
<stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" spacing="49" translatesAutoresizingMaskIntoConstraints="NO" id="2jU-Q7-DQV"> <stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" spacing="49" translatesAutoresizingMaskIntoConstraints="NO" id="2jU-Q7-DQV">
<rect key="frame" x="22.5" y="308" width="275" height="80"/> <rect key="frame" x="22.5" y="299" width="275" height="80"/>
<subviews> <subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="hWA-wr-RVd"> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="hWA-wr-RVd">
<rect key="frame" x="0.0" y="0.0" width="59" height="80"/> <rect key="frame" x="0.0" y="0.0" width="59" height="80"/>
...@@ -306,7 +334,7 @@ ...@@ -306,7 +334,7 @@
</constraints> </constraints>
</stackView> </stackView>
<stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" spacing="49" translatesAutoresizingMaskIntoConstraints="NO" id="adp-bO-yd2"> <stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" spacing="49" translatesAutoresizingMaskIntoConstraints="NO" id="adp-bO-yd2">
<rect key="frame" x="76.5" y="398" width="167" height="80"/> <rect key="frame" x="76.5" y="389" width="167" height="80"/>
<subviews> <subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="iqk-xW-mRy"> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="iqk-xW-mRy">
<rect key="frame" x="0.0" y="0.0" width="59" height="80"/> <rect key="frame" x="0.0" y="0.0" width="59" height="80"/>
...@@ -375,7 +403,7 @@ ...@@ -375,7 +403,7 @@
</constraints> </constraints>
</stackView> </stackView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Jugador2" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="kLZ-vz-YQG"> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Jugador2" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="kLZ-vz-YQG">
<rect key="frame" x="10" y="281" width="69.5" height="20"/> <rect key="frame" x="10" y="272" width="69.5" height="20"/>
<constraints> <constraints>
<constraint firstAttribute="height" constant="20" id="c5j-JK-kgc"/> <constraint firstAttribute="height" constant="20" id="c5j-JK-kgc"/>
</constraints> </constraints>
...@@ -388,8 +416,6 @@ ...@@ -388,8 +416,6 @@
<constraints> <constraints>
<constraint firstItem="kLZ-vz-YQG" firstAttribute="top" secondItem="PeU-dx-cSX" secondAttribute="bottom" constant="8" id="1BB-Q7-vVf"/> <constraint firstItem="kLZ-vz-YQG" firstAttribute="top" secondItem="PeU-dx-cSX" secondAttribute="bottom" constant="8" id="1BB-Q7-vVf"/>
<constraint firstItem="PeU-dx-cSX" firstAttribute="height" secondItem="Ou2-8o-ek7" secondAttribute="height" id="1bh-Cb-fxu"/> <constraint firstItem="PeU-dx-cSX" firstAttribute="height" secondItem="Ou2-8o-ek7" secondAttribute="height" id="1bh-Cb-fxu"/>
<constraint firstItem="yDe-2w-b0i" firstAttribute="top" secondItem="7qK-tZ-pZY" secondAttribute="bottom" constant="10" id="2Ve-gJ-Zdf"/>
<constraint firstItem="7qK-tZ-pZY" firstAttribute="top" secondItem="6Tk-OE-BBY" secondAttribute="top" constant="15" id="3G6-IF-sqT"/>
<constraint firstItem="6Tk-OE-BBY" firstAttribute="trailing" secondItem="yDe-2w-b0i" secondAttribute="trailing" constant="10" id="9jO-44-FVE"/> <constraint firstItem="6Tk-OE-BBY" firstAttribute="trailing" secondItem="yDe-2w-b0i" secondAttribute="trailing" constant="10" id="9jO-44-FVE"/>
<constraint firstItem="IRK-zS-xeX" firstAttribute="top" secondItem="adp-bO-yd2" secondAttribute="bottom" constant="34" id="AwW-oL-den"/> <constraint firstItem="IRK-zS-xeX" firstAttribute="top" secondItem="adp-bO-yd2" secondAttribute="bottom" constant="34" id="AwW-oL-den"/>
<constraint firstItem="2jU-Q7-DQV" firstAttribute="centerX" secondItem="6Tk-OE-BBY" secondAttribute="centerX" id="BI8-5m-x9h"/> <constraint firstItem="2jU-Q7-DQV" firstAttribute="centerX" secondItem="6Tk-OE-BBY" secondAttribute="centerX" id="BI8-5m-x9h"/>
...@@ -397,11 +423,11 @@ ...@@ -397,11 +423,11 @@
<constraint firstItem="adp-bO-yd2" firstAttribute="height" secondItem="2jU-Q7-DQV" secondAttribute="height" id="Cjm-Xu-Xly"/> <constraint firstItem="adp-bO-yd2" firstAttribute="height" secondItem="2jU-Q7-DQV" secondAttribute="height" id="Cjm-Xu-Xly"/>
<constraint firstItem="PeU-dx-cSX" firstAttribute="centerX" secondItem="8bC-Xf-vdC" secondAttribute="centerX" id="N1k-Qw-I4H"/> <constraint firstItem="PeU-dx-cSX" firstAttribute="centerX" secondItem="8bC-Xf-vdC" secondAttribute="centerX" id="N1k-Qw-I4H"/>
<constraint firstItem="kLZ-vz-YQG" firstAttribute="leading" secondItem="6Tk-OE-BBY" secondAttribute="leading" constant="10" id="PIA-vo-qvs"/> <constraint firstItem="kLZ-vz-YQG" firstAttribute="leading" secondItem="6Tk-OE-BBY" secondAttribute="leading" constant="10" id="PIA-vo-qvs"/>
<constraint firstItem="yDe-2w-b0i" firstAttribute="top" secondItem="6Tk-OE-BBY" secondAttribute="top" constant="20" id="RVo-wl-N6d"/>
<constraint firstItem="PeU-dx-cSX" firstAttribute="top" secondItem="Ou2-8o-ek7" secondAttribute="bottom" constant="10" id="dyZ-7b-HYP"/> <constraint firstItem="PeU-dx-cSX" firstAttribute="top" secondItem="Ou2-8o-ek7" secondAttribute="bottom" constant="10" id="dyZ-7b-HYP"/>
<constraint firstItem="6Tk-OE-BBY" firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="kLZ-vz-YQG" secondAttribute="trailing" symbolic="YES" id="gIO-IL-irB"/> <constraint firstItem="6Tk-OE-BBY" firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="kLZ-vz-YQG" secondAttribute="trailing" symbolic="YES" id="gIO-IL-irB"/>
<constraint firstItem="Ou2-8o-ek7" firstAttribute="top" secondItem="yDe-2w-b0i" secondAttribute="bottom" constant="10" id="hxs-tN-4VS"/> <constraint firstItem="Ou2-8o-ek7" firstAttribute="top" secondItem="yDe-2w-b0i" secondAttribute="bottom" constant="10" id="hxs-tN-4VS"/>
<constraint firstItem="IRK-zS-xeX" firstAttribute="centerX" secondItem="6Tk-OE-BBY" secondAttribute="centerX" id="iVj-y0-HEC"/> <constraint firstItem="IRK-zS-xeX" firstAttribute="centerX" secondItem="6Tk-OE-BBY" secondAttribute="centerX" id="iVj-y0-HEC"/>
<constraint firstItem="7qK-tZ-pZY" firstAttribute="centerX" secondItem="6Tk-OE-BBY" secondAttribute="centerX" id="kGX-cd-HyQ"/>
<constraint firstItem="yDe-2w-b0i" firstAttribute="centerX" secondItem="8bC-Xf-vdC" secondAttribute="centerX" id="khX-9w-MHA"/> <constraint firstItem="yDe-2w-b0i" firstAttribute="centerX" secondItem="8bC-Xf-vdC" secondAttribute="centerX" id="khX-9w-MHA"/>
<constraint firstItem="adp-bO-yd2" firstAttribute="top" secondItem="2jU-Q7-DQV" secondAttribute="bottom" constant="10" id="vnZ-E3-Jai"/> <constraint firstItem="adp-bO-yd2" firstAttribute="top" secondItem="2jU-Q7-DQV" secondAttribute="bottom" constant="10" id="vnZ-E3-Jai"/>
<constraint firstItem="2jU-Q7-DQV" firstAttribute="top" secondItem="kLZ-vz-YQG" secondAttribute="bottom" constant="7" id="vvp-48-Tia"/> <constraint firstItem="2jU-Q7-DQV" firstAttribute="top" secondItem="kLZ-vz-YQG" secondAttribute="bottom" constant="7" id="vvp-48-Tia"/>
...@@ -410,6 +436,7 @@ ...@@ -410,6 +436,7 @@
</constraints> </constraints>
<viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/> <viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
</view> </view>
<navigationItem key="navigationItem" title="Draw Poker" id="dFq-Pi-rht"/>
<connections> <connections>
<outlet property="imagenCarta1" destination="6Zc-Lc-MZl" id="fc8-GN-wOW"/> <outlet property="imagenCarta1" destination="6Zc-Lc-MZl" id="fc8-GN-wOW"/>
<outlet property="imagenCarta10" destination="BTH-nV-LEb" id="V54-J9-B9h"/> <outlet property="imagenCarta10" destination="BTH-nV-LEb" id="V54-J9-B9h"/>
...@@ -438,7 +465,62 @@ ...@@ -438,7 +465,62 @@
</viewController> </viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
</objects> </objects>
<point key="canvasLocation" x="-41.25" y="-571.47887323943667"/> <point key="canvasLocation" x="-41" y="-571"/>
</scene>
<!--Poker Texas Holdem-->
<scene sceneID="atF-f0-609">
<objects>
<viewController storyboardIdentifier="poker3VC" id="PFg-aw-Fg1" customClass="Poker3ViewController" customModule="poker" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="HUL-ur-OSY">
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Ver detalles en consola" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="GQI-0i-sCC">
<rect key="frame" x="71.5" y="59" width="177" height="21"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="8nD-CY-2Tt">
<rect key="frame" x="107.5" y="118" width="105" height="30"/>
<state key="normal" title="Repartir Cartas"/>
<connections>
<action selector="repartirBtn:" destination="PFg-aw-Fg1" eventType="touchUpInside" id="HNq-dN-uih"/>
</connections>
</button>
</subviews>
<color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
<constraints>
<constraint firstItem="GQI-0i-sCC" firstAttribute="centerX" secondItem="cQf-Wz-MZ4" secondAttribute="centerX" id="2wc-tH-bmj"/>
<constraint firstItem="GQI-0i-sCC" firstAttribute="top" secondItem="cQf-Wz-MZ4" secondAttribute="top" constant="15" id="HW7-kM-ZMj"/>
<constraint firstItem="8nD-CY-2Tt" firstAttribute="centerX" secondItem="cQf-Wz-MZ4" secondAttribute="centerX" id="VZG-Ce-oPc"/>
<constraint firstItem="8nD-CY-2Tt" firstAttribute="top" secondItem="GQI-0i-sCC" secondAttribute="bottom" constant="38" id="sHs-92-2za"/>
</constraints>
<viewLayoutGuide key="safeArea" id="cQf-Wz-MZ4"/>
</view>
<navigationItem key="navigationItem" title="Poker Texas Holdem" id="g2f-X8-9B2"/>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="9gD-hx-gdQ" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="611" y="-571"/>
</scene>
<!--Navigation Controller-->
<scene sceneID="xW1-nB-dRW">
<objects>
<navigationController automaticallyAdjustsScrollViewInsets="NO" id="WA2-NF-gB5" sceneMemberID="viewController">
<toolbarItems/>
<navigationBar key="navigationBar" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" id="o0P-6z-V62">
<rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
<autoresizingMask key="autoresizingMask"/>
</navigationBar>
<nil name="viewControllers"/>
<connections>
<segue destination="jSC-1w-Vgq" kind="relationship" relationship="rootViewController" id="whp-RV-5AO"/>
</connections>
</navigationController>
<placeholder placeholderIdentifier="IBFirstResponder" id="bO7-ZK-1Br" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-41" y="-1270"/>
</scene> </scene>
</scenes> </scenes>
</document> </document>
...@@ -44,26 +44,55 @@ class Baraja{ ...@@ -44,26 +44,55 @@ class Baraja{
//se simula que se extraen 5 cartas de una baraja para cada jugador //se simula que se extraen 5 cartas de una baraja para cada jugador
class Manos{ class Manos{
var cartasEnMano: [(Int, String)] = [] var cartasEnMano: [(Int, String)] = []
var cartasEnMesa: [(Int, String)] = []
var baraja: Baraja = Baraja() var baraja: Baraja = Baraja()
var valoresOrdenados = [Int]() var valoresOrdenados = [Int]()
var palo = [String]() var palo = [String]()
var nombreCarta = [String]() var nombreCarta = [String]()
var nombreJugada:Jugada = Jugada(rawValue: 1)! var nombreJugada:Jugada = Jugada(rawValue: 1)!
private let escaleraAlAs: [Int] = [1, 10, 11, 12, 13]
private let escaleraReal: [Int] = [1, 10, 11, 12, 13] //función para extraer 2 cartas y guardar la información en arrays con los valores, el palo y el nombre de la carta en caso de ser A, J, Q y K
//la función recibe como parámetro las cartas que aun no se extrajeron para que no se repitan
func extraerCartasTexasHoldem(cartasDisponibles: Baraja)->[(Int, String)]{
baraja = cartasDisponibles
var randomNumber = Int.random(in: 0..<baraja.cartas!.count)
cartasEnMano.append((baraja.cartas?[randomNumber])!)
baraja.cartas?.remove(at: randomNumber)
randomNumber = Int.random(in: 0..<baraja.cartas!.count)
cartasEnMano.append((baraja.cartas?[randomNumber])!)
baraja.cartas?.remove(at: randomNumber)
nombrarCartas(cantidadCartas: 2)
return cartasEnMano
}
func enMesa(cartasDisponibles: Baraja)->[(Int, String)]{
baraja = cartasDisponibles
for _ in 0...4 {
let randomNumber = Int.random(in: 0..<baraja.cartas!.count)
cartasEnMesa.append((baraja.cartas?[randomNumber])!)
baraja.cartas?.remove(at: randomNumber)
}
return cartasEnMesa
}
//función para extraer 5 cartas y guardar la información en arrays con los valores, el palo y el nombre de la carta en caso de ser A, J, Q y K //función para extraer 5 cartas y guardar la información en arrays con los valores, el palo y el nombre de la carta en caso de ser A, J, Q y K
//la función recibe como parámetro las cartas que aun no se extrajeron para que no se repitan //la función recibe como parámetro las cartas que aun no se extrajeron para que no se repitan
func extraerCartas(cartasDisponibles: Baraja){ func extraerCartas(cartasDisponibles: Baraja){
baraja = cartasDisponibles baraja = cartasDisponibles
//cargamos las cartas a las manos y borramos de la baraja para que no se vuelvan a sacar //cargamos las cartas a las manos y borramos de la baraja para que no se vuelvan a sacar
for _ in 0...4 { let cantCartas = 5
for _ in 0..<cantCartas{
let randomNumber = Int.random(in: 0..<baraja.cartas!.count) let randomNumber = Int.random(in: 0..<baraja.cartas!.count)
cartasEnMano.append((baraja.cartas?[randomNumber])!) cartasEnMano.append((baraja.cartas?[randomNumber])!)
baraja.cartas?.remove(at: randomNumber) baraja.cartas?.remove(at: randomNumber)
} }
nombrarCartas(cantidadCartas: cantCartas)
}
private func nombrarCartas(cantidadCartas: Int){
for index in 0...4{ for index in 0..<cantidadCartas{
//se carga en el array el nombre de la carta, 1: A, 11:J, 12:Q y 13:K //se carga en el array el nombre de la carta, 1: A, 11:J, 12:Q y 13:K
switch cartasEnMano[index].0 { switch cartasEnMano[index].0 {
case 1: case 1:
...@@ -83,10 +112,14 @@ class Manos{ ...@@ -83,10 +112,14 @@ class Manos{
} }
//ordenamos los valores, para determinar posteriormente si hay alguna combinación //ordenamos los valores, para determinar posteriormente si hay alguna combinación
valoresOrdenados.sort() valoresOrdenados.sort()
return
} }
//devuelve el nombre de la jugada segun la combinación de cartas, el array con los valores ordenados y el mayor en caso de haber una combinación //devuelve el nombre de la jugada segun la combinación de cartas, el array con los valores ordenados y el mayor en caso de haber una combinación
func jugadas()->(Jugada, [Int], Int){ func jugadas(valoresEnMesa: [Int], palosEnMesa: [String])->(Jugada, [Int], Int){
valoresOrdenados += valoresEnMesa
palo += palosEnMesa
valoresOrdenados.sort()
var cartasOrdenadas = valoresOrdenados // copiamos su contenido para cambiar el orden en caso de tener ases, ya que los mismos tambien pueden valer 14 (se evalúa para cada caso) var cartasOrdenadas = valoresOrdenados // copiamos su contenido para cambiar el orden en caso de tener ases, ya que los mismos tambien pueden valer 14 (se evalúa para cada caso)
var mayorCombinacion = 0 //se utiliza en caso de necesitar desempate entre pares, doblepares, tríos, full y poker var mayorCombinacion = 0 //se utiliza en caso de necesitar desempate entre pares, doblepares, tríos, full y poker
var contSecuencia = 1 //Para determinar si hay una escalera var contSecuencia = 1 //Para determinar si hay una escalera
...@@ -121,7 +154,7 @@ class Manos{ ...@@ -121,7 +154,7 @@ class Manos{
if contSecuencia == 5{ if contSecuencia == 5{
nombreJugada = .Escalera nombreJugada = .Escalera
} }
if valoresOrdenados == escaleraReal{ if valoresOrdenados == escaleraAlAs{
nombreJugada = .Escalera nombreJugada = .Escalera
if valoresOrdenados.contains(1){ if valoresOrdenados.contains(1){
cartasOrdenadas = cartasOrdenadas.filter { $0 > 1} cartasOrdenadas = cartasOrdenadas.filter { $0 > 1}
...@@ -131,7 +164,7 @@ class Manos{ ...@@ -131,7 +164,7 @@ class Manos{
if nombreJugada == .Escalera && contPalosIguales == 5 { if nombreJugada == .Escalera && contPalosIguales == 5 {
nombreJugada = .EscaleraColor nombreJugada = .EscaleraColor
} }
if valoresOrdenados == escaleraReal && contPalosIguales == 5 { if valoresOrdenados == escaleraAlAs && contPalosIguales == 5 {
nombreJugada = .EscaleraReal nombreJugada = .EscaleraReal
if valoresOrdenados.contains(1){ if valoresOrdenados.contains(1){
cartasOrdenadas = cartasOrdenadas.filter { $0 > 1} cartasOrdenadas = cartasOrdenadas.filter { $0 > 1}
......
//
// Poker3ViewController.swift
// poker
//
// Created by Julio Hermosa on 4/21/20.
// Copyright © 2020 Mobile Roshka. All rights reserved.
//
import UIKit
class Poker3ViewController: UIViewController {
var baraja:Baraja = Baraja()
var cantidadJugadores = 3
var manos = [Manos]()
var mesa = Manos()
var enMesa: [(Int, String)] = []
var valoresEnMesa = [Int]()
var palosEnMesa = [String]()
var jugadas: [(Jugada, [Int], Int)] = []
var ganador = Int()
@IBAction func repartirBtn(_ sender: Any) {
repartir()
obtenerJugadas()
elegirGanador()
}
func repartir(){
baraja.crearBaraja()
for index in 0..<cantidadJugadores{
manos.append(Manos())
print( manos[index].extraerCartasTexasHoldem(cartasDisponibles: baraja))
}
enMesa = mesa.enMesa(cartasDisponibles: baraja)
valoresEnMesa = enMesa.map {$0.0}
palosEnMesa = enMesa.map{$0.1}
print (enMesa)
}
func obtenerJugadas(){
for index in 0..<cantidadJugadores{
jugadas.append((manos[index].jugadas(valoresEnMesa: valoresEnMesa, palosEnMesa: palosEnMesa)))
}
}
func elegirGanador(){
var valores = jugadas.map {$0.1}
var valoresCombinaciones = jugadas.map {$0.2}
var nombresJugadas = jugadas.map {$0.0}
ganador = 0
print (nombresJugadas)
for index in 1..<cantidadJugadores{
if nombresJugadas[index].rawValue > nombresJugadas[ganador].rawValue{
ganador = index
} else
if nombresJugadas[index].rawValue == nombresJugadas[ganador].rawValue {
if nombresJugadas[index] == .CartaAlta || nombresJugadas[index] == .Escalera || nombresJugadas[index] == .EscaleraColor || nombresJugadas[index] == .EscaleraReal ||
nombresJugadas[index] == .Color {
while valores[index].last! == valores[ganador].last!{
valores[index].removeLast()
valores[ganador].removeLast()
}
if valores[index].count > 0{
if valores[index].last! > valores[ganador].last!{
ganador = index
}
else{
ganador = -1
}
}
}
if nombresJugadas[index] == .Par || nombresJugadas[index] == .ParDoble || nombresJugadas[index] == .Trio || nombresJugadas[index] == .Full || nombresJugadas[index] == .Poker{
if valoresCombinaciones[index] > valoresCombinaciones[ganador]{
ganador = index
}
if valoresCombinaciones[index] == valoresCombinaciones[ganador]{
while valores[index].last! == valores[ganador].last!{
valores[index].removeLast()
valores[ganador].removeLast()
}
if valores[index].count > 0{
if valores[index].last! > valores[ganador].last!{
ganador = index
}
else{
ganador = -1
}
}
}
}
}
}
//se muestra en una alerta quien ganó o si es empate
if ganador == -1 {
mostrarGanador(mensaje: "Empate")
print("Empate")
}else{
mostrarGanador(mensaje: "El ganador es el jugador: \(ganador+1)")
print ("Ganó el jugador \(ganador+1)")
}
mesa.barajarCartas()
enMesa.removeAll()
manos.removeAll()
jugadas.removeAll()
ganador = 0
valores.removeAll()
valoresCombinaciones.removeAll()
nombresJugadas.removeAll()
}
private func mostrarGanador(mensaje: String){
let alerta = UIAlertController(title: "Resultado Final", message:mensaje, preferredStyle: .alert)
alerta.addAction(UIAlertAction(title: "Aceptar", style: .default, handler: nil))
present(alerta, animated:true, completion:nil)
}
override func viewDidLoad() {
super.viewDidLoad()
}
}
...@@ -58,13 +58,14 @@ class ViewController: UIViewController { ...@@ -58,13 +58,14 @@ class ViewController: UIViewController {
//se envia el array con las cartas aún disponibles //se envia el array con las cartas aún disponibles
mano2.extraerCartas(cartasDisponibles: baraja) mano2.extraerCartas(cartasDisponibles: baraja)
resultado1 = mano1.jugadas()
resultado1 = mano1.jugadas(valoresEnMesa: [Int](), palosEnMesa: [String]())
//se guardan los resultados obtenidos en variables resultadoN //se guardan los resultados obtenidos en variables resultadoN
resultado2 = mano2.jugadas() resultado2 = mano2.jugadas(valoresEnMesa: [Int](), palosEnMesa: [String]())
resultadoObtenido1.text = "\(mano1.jugadas().0)" resultadoObtenido1.text = "\(resultado1!.0)"
//se imprime en los labels el nombre de las jugadas para cada jugador //se imprime en los labels el nombre de las jugadas para cada jugador
resultadoObtenido2.text = "\(mano2.jugadas().0)" resultadoObtenido2.text = "\(resultado2!.0)"
//cargamos los valores del array en los labels de las cartas //cargamos los valores del array en los labels de las cartas
......
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