Also ported TennisGame3. Furthermore pushed instance vars down to better match spirit of Java implementation

This commit is contained in:
Stefan van den Oord 2013-05-31 19:41:01 +02:00
parent ea3e95e55f
commit 99a5861125
7 changed files with 128 additions and 67 deletions

View File

@ -2,7 +2,12 @@
<project version="4">
<component name="ChangeListManager">
<list default="true" id="3432493f-5b19-44ab-868c-f539ff9f9548" name="Default" comment="">
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/Tennis/TennisGame.h" afterPath="$PROJECT_DIR$/Tennis/TennisGame.h" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/Tennis/TennisGame.m" afterPath="$PROJECT_DIR$/Tennis/TennisGame.m" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/Tennis/TennisGame1.h" afterPath="$PROJECT_DIR$/Tennis/TennisGame1.h" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/Tennis/TennisGame1.m" afterPath="$PROJECT_DIR$/Tennis/TennisGame1.m" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/Tennis/TennisGame2.m" afterPath="$PROJECT_DIR$/Tennis/TennisGame2.m" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/Tennis/TennisGame3.m" afterPath="$PROJECT_DIR$/Tennis/TennisGame3.m" />
</list>
<ignored path="Tennis.iws" />
<ignored path=".idea/workspace.xml" />
@ -14,11 +19,11 @@
<file path="/TennisGame3.h" changelist="3432493f-5b19-44ab-868c-f539ff9f9548" time="1370013520283" ignored="false" />
<file path="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/usr/include/string.h" changelist="3432493f-5b19-44ab-868c-f539ff9f9548" time="1370014093686" ignored="false" />
<file path="/Dummy.txt" changelist="3432493f-5b19-44ab-868c-f539ff9f9548" time="1370018279112" ignored="false" />
<file path="/TennisGame3.m" changelist="3432493f-5b19-44ab-868c-f539ff9f9548" time="1370018390956" ignored="false" />
<file path="/TennisGame.m" changelist="3432493f-5b19-44ab-868c-f539ff9f9548" time="1370020624289" ignored="false" />
<file path="/TennisGame3.m" changelist="3432493f-5b19-44ab-868c-f539ff9f9548" time="1370021989037" ignored="false" />
<file path="/TennisGame.m" changelist="3432493f-5b19-44ab-868c-f539ff9f9548" time="1370021495666" ignored="false" />
<file path="/TennisGame1.m" changelist="3432493f-5b19-44ab-868c-f539ff9f9548" time="1370020207784" ignored="false" />
<file path="/TennisGame.h" changelist="3432493f-5b19-44ab-868c-f539ff9f9548" time="1370019947680" ignored="false" />
<file path="/TennisGame2.m" changelist="3432493f-5b19-44ab-868c-f539ff9f9548" time="1370021340497" ignored="false" />
<file path="/TennisGame2.m" changelist="3432493f-5b19-44ab-868c-f539ff9f9548" time="1370021568226" ignored="false" />
<option name="TRACKING_ENABLED" value="true" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
@ -38,10 +43,10 @@
</component>
<component name="FileEditorManager">
<leaf>
<file leaf-file-name="TennisGame3.m" pinned="false" current="false" current-in-tab="false">
<file leaf-file-name="TennisGame3.m" pinned="false" current="true" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/Tennis/TennisGame3.m">
<provider selected="true" editor-type-id="text-editor">
<state line="13" column="0" selection-start="233" selection-end="233" vertical-scroll-proportion="0.0">
<state line="50" column="8" selection-start="1203" selection-end="1203" vertical-scroll-proportion="1.2908778">
<folding />
</state>
</provider>
@ -59,7 +64,7 @@
<file leaf-file-name="TennisTests.m" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/TennisTests/TennisTests.m">
<provider selected="true" editor-type-id="text-editor">
<state line="85" column="30" selection-start="2316" selection-end="2316" vertical-scroll-proportion="0.0">
<state line="85" column="0" selection-start="2286" selection-end="2286" vertical-scroll-proportion="0.0">
<folding>
<element signature="e#144#183#0" expanded="true" />
</folding>
@ -67,10 +72,10 @@
</provider>
</entry>
</file>
<file leaf-file-name="TennisGame2.m" pinned="false" current="true" current-in-tab="true">
<file leaf-file-name="TennisGame2.m" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/Tennis/TennisGame2.m">
<provider selected="true" editor-type-id="text-editor">
<state line="136" column="22" selection-start="2901" selection-end="2901" vertical-scroll-proportion="0.8450947">
<state line="26" column="8" selection-start="617" selection-end="617" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
@ -97,7 +102,7 @@
<file leaf-file-name="TennisGame1.m" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/Tennis/TennisGame1.m">
<provider selected="true" editor-type-id="text-editor">
<state line="11" column="27" selection-start="231" selection-end="231" vertical-scroll-proportion="0.0">
<state line="14" column="1" selection-start="267" selection-end="267" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
@ -106,7 +111,7 @@
<file leaf-file-name="TennisGame1.h" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/Tennis/TennisGame1.h">
<provider selected="true" editor-type-id="text-editor">
<state line="12" column="28" selection-start="265" selection-end="265" vertical-scroll-proportion="0.0">
<state line="15" column="0" selection-start="365" selection-end="365" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
@ -115,7 +120,7 @@
<file leaf-file-name="TennisGame.m" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/Tennis/TennisGame.m">
<provider selected="true" editor-type-id="text-editor">
<state line="21" column="19" selection-start="472" selection-end="472" vertical-scroll-proportion="0.0">
<state line="13" column="0" selection-start="254" selection-end="254" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
@ -124,7 +129,7 @@
<file leaf-file-name="TennisGame.h" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/Tennis/TennisGame.h">
<provider selected="true" editor-type-id="text-editor">
<state line="15" column="0" selection-start="283" selection-end="283" vertical-scroll-proportion="0.0">
<state line="13" column="0" selection-start="248" selection-end="248" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
@ -148,16 +153,16 @@
<component name="IdeDocumentHistory">
<option name="changedFiles">
<list>
<option value="$PROJECT_DIR$/Tennis/TennisGame1.h" />
<option value="$PROJECT_DIR$/Tennis/TennisGame2.h" />
<option value="$PROJECT_DIR$/Tennis/TennisGame3.h" />
<option value="$PROJECT_DIR$/Tennis/TennisGame.mm" />
<option value="$PROJECT_DIR$/Tennis/TennisGame3.m" />
<option value="$PROJECT_DIR$/TennisTests/TennisTests.m" />
<option value="$PROJECT_DIR$/Tennis/TennisGame1.m" />
<option value="$PROJECT_DIR$/Tennis/TennisGame.h" />
<option value="$PROJECT_DIR$/Tennis/TennisGame1.h" />
<option value="$PROJECT_DIR$/Tennis/TennisGame.m" />
<option value="$PROJECT_DIR$/TennisTests/TennisTests.m" />
<option value="$PROJECT_DIR$/Tennis/TennisGame2.m" />
<option value="$PROJECT_DIR$/Tennis/TennisGame3.m" />
</list>
</option>
</component>
@ -398,9 +403,30 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Tennis/ViewController.h">
<entry file="file://$PROJECT_DIR$/Tennis/TennisGame.h">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
<state line="13" column="0" selection-start="248" selection-end="248" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Tennis/TennisGame1.h">
<provider selected="true" editor-type-id="text-editor">
<state line="15" column="0" selection-start="365" selection-end="365" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Tennis/TennisGame1.m">
<provider selected="true" editor-type-id="text-editor">
<state line="14" column="1" selection-start="267" selection-end="267" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Tennis/TennisGame.m">
<provider selected="true" editor-type-id="text-editor">
<state line="13" column="0" selection-start="254" selection-end="254" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
@ -412,53 +438,32 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Tennis/TennisGame1.h">
<entry file="file://$PROJECT_DIR$/Tennis/TennisGame2.m">
<provider selected="true" editor-type-id="text-editor">
<state line="12" column="28" selection-start="265" selection-end="265" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Tennis/TennisGame.h">
<provider selected="true" editor-type-id="text-editor">
<state line="15" column="0" selection-start="283" selection-end="283" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Tennis/TennisGame1.m">
<provider selected="true" editor-type-id="text-editor">
<state line="11" column="27" selection-start="231" selection-end="231" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Tennis/TennisGame.m">
<provider selected="true" editor-type-id="text-editor">
<state line="21" column="19" selection-start="472" selection-end="472" vertical-scroll-proportion="0.0">
<state line="26" column="8" selection-start="617" selection-end="617" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/TennisTests/TennisTests.m">
<provider selected="true" editor-type-id="text-editor">
<state line="85" column="30" selection-start="2316" selection-end="2316" vertical-scroll-proportion="0.0">
<state line="85" column="0" selection-start="2286" selection-end="2286" vertical-scroll-proportion="0.0">
<folding>
<element signature="e#144#183#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Tennis/TennisGame3.m">
<entry file="file://$PROJECT_DIR$/Tennis/ViewController.h">
<provider selected="true" editor-type-id="text-editor">
<state line="13" column="0" selection-start="233" selection-end="233" vertical-scroll-proportion="0.0">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Tennis/TennisGame2.m">
<entry file="file://$PROJECT_DIR$/Tennis/TennisGame3.m">
<provider selected="true" editor-type-id="text-editor">
<state line="136" column="22" selection-start="2901" selection-end="2901" vertical-scroll-proportion="0.8450947">
<state line="50" column="8" selection-start="1203" selection-end="1203" vertical-scroll-proportion="1.2908778">
<folding />
</state>
</provider>

View File

@ -9,13 +9,7 @@
#import <Foundation/Foundation.h>
@interface TennisGame : NSObject {
int score1;
int score2;
}
@property(nonatomic, copy) NSString *player1;
@property(nonatomic, copy) NSString *player2;
@interface TennisGame : NSObject
- (id)initWithPlayer1:(NSString *)player1 player2:(NSString *)player2;
- (void)wonPoint:(NSString *)playerName;

View File

@ -12,19 +12,7 @@
@implementation TennisGame
- (id)initWithPlayer1:(NSString *)player1 player2:(NSString *)player2 {
self = [super init];
if (self) {
self.player1 = player1;
self.player2 = player2;
score1 = 0;
score2 = 0;
}
return self;
}
- (id)initWithPlayer1:(NSString *)player1 player2:(NSString *)player2 { return [super init]; }
- (void)wonPoint:(NSString *)playerName {}
- (NSString *)score { return nil; }

View File

@ -11,4 +11,6 @@
@interface TennisGame1 : TennisGame
@property(nonatomic, copy) NSString *player1;
@property(nonatomic, copy) NSString *player2;
@end

View File

@ -9,7 +9,22 @@
#import "TennisGame1.h"
@implementation TennisGame1
@implementation TennisGame1 {
int score1;
int score2;
}
- (id)initWithPlayer1:(NSString *)player1 player2:(NSString *)player2 {
self = [super init];
if (self) {
self.player1 = player1;
self.player2 = player2;
score1 = 0;
score2 = 0;
}
return self;
}
- (void)wonPoint:(NSString *)playerName {
if ([playerName isEqualToString:@"player1"])

View File

@ -9,6 +9,11 @@
#import "TennisGame2.h"
@interface TennisGame2 ()
@property(nonatomic, copy) NSString *player2Name;
@property(nonatomic, copy) NSString *player1Name;
@end
@implementation TennisGame2 {
int P1point;
NSString *P1res;
@ -16,6 +21,17 @@
NSString *P2res;
}
- (id)initWithPlayer1:(NSString *)player1Name player2:(NSString *)player2Name {
self = [super initWithPlayer1:player1Name player2:player2Name];
if (self) {
self.player1Name = player1Name;
self.player2Name = player2Name;
}
return self;
}
- (NSString *)score {
NSString *score = @"";
if (P1point == P2point && P1point < 4)

View File

@ -9,6 +9,47 @@
#import "TennisGame3.h"
@implementation TennisGame3
@interface TennisGame3 ()
@end
@implementation TennisGame3 {
int p1;
int p2;
NSString *p1N;
NSString *p2N;
}
- (id)initWithPlayer1:(NSString *)p1N player2:(NSString *)p2N {
self = [super initWithPlayer1:p1N player2:p2N];
if (self) {
self->p1N = p1N;
self->p2N = p2N;
p1 = 0;
p2 = 0;
}
return self;
}
- (NSString *)score {
NSString *s;
if (p1 < 4 && p2 < 4) {
NSArray* p = @[@"Love", @"Fifteen", @"Thirty", @"Forty"];
s = p[p1];
return (p1 == p2) ? [NSString stringWithFormat:@"%@-All",s] : [NSString stringWithFormat:@"%@-%@",s,p[p2]];
} else {
if (p1 == p2)
return @"Deuce";
s = p1 > p2 ? p1N : p2N;
return ((p1-p2)*(p1-p2) == 1) ? [NSString stringWithFormat:@"Advantage %@",s] : [NSString stringWithFormat:@"Win for %@",s];
}
}
- (void)wonPoint:(NSString *)playerName {
if ([playerName isEqualToString:@"player1"])
p1 += 1;
else
p2 += 1;
}
@end