面向对象-石头剪刀布小游戏
电脑和人都是参赛者的子类
比赛和参赛者的复合
main
//
// main.m
// oc_8.7_3
//
// Created by dq on 15/8/7.
// Copyright (c) 2015年 dq. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Competition.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSLog(@"===============================");
NSLog(@" 石头剪刀布小游戏 ");
NSLog(@"===============================");
Competition *game = [Competition new];
int flag =1;
while (flag) {
NSLog(@"请选择: 1.比赛开始 2.退出比赛 ");
int option;
scanf("%d",&option);
flag = [game game:option];
}
NSLog(@"��结束");
NSLog(@"总局数为%d",game.sum);
NSLog(@"你的赢的次数为%d 电脑赢的次数为%d",game.perWin,game.comWin);
}
return 0;
}
Competiotion
//
// Competition.h
// oc_8.7_3
//
// Created by dq on 15/8/7.
// Copyright (c) 2015年 dq. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Person.h"
#import "Computer.h"
@interface Competition : NSObject
/**
* 纪录电脑和人赢的次数 以及总局数
*/
@property(readonly,assign)int sum,perWin,comWin;
/**
* 参赛者
*/
@property(nonatomic,strong)Competitor *competitor1,*competitor2;
/**
* 比赛控制界面
*
* @param option 游戏者的选择
*
* @return 返回 继续比赛 还是 退出比赛
*/
- (int)game:(int)option;
/**
* 比赛规则
*
* @param A A方出拳的结果
* @param B B方出拳的结果
*
* @return 返回比较的结果 0 平局 1 A方胜 2 B方胜 4 没有按规则出拳
*/
- (int)ruleA:(int)A B:(int)B;
@end
//
// Competition.m
// oc_8.7_3
//
// Created by dq on 15/8/7.
// Copyright (c) 2015年 dq. All rights reserved.
//
#import "Competition.h"
@implementation Competition
- (instancetype)init
{
self = [super init];
if (self) {
_sum = 0;
_perWin = 0;
_comWin = 0;
_competitor1 = [Person new];
_competitor2 = [Computer new];
}
return self;
}
-(int)game:(int)option
{
int flag=1;
switch (option) {
case 1:{
NSLog(@"请输入 1 ✊ 2 ✂️ 3 布");
int result = [self ruleA:[_competitor1 chuquan] B:[_competitor2 chuquan]];
if (result==0) {
NSLog(@"平局");
}
else if (result ==1)
{
NSLog(@"你赢了");
_perWin++;
}else if(result ==2)
{
NSLog(@"��胜");
_comWin++;
}
else
{
_comWin++;
NSLog(@"你没有按规则出拳 所以��胜");
}
break;}
case 2:
flag = 0;
break;
default:{
_sum--;
NSLog(@"输入❌,请重新输入");
break;}
}
if (flag==0) {
return 0;
}
_sum++;
return 1;
}
-(int)ruleA:(int)A B:(int)B
{
if (A==0) {
return 4;
}
if(A==B)
return 0;//平局
else if ((A==1&&B==2)||(A==2&&B==3)||(A==3&&B==1))
return 1;//A方胜
else
return 2;//B方胜
}
@end
Person
//
// Person.h
// oc_8.7_3
//
// Created by dq on 15/8/7.
// Copyright (c) 2015年 dq. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Competitor.h"
@interface Person : Competitor
@end
//
// Person.m
// oc_8.7_3
//
// Created by dq on 15/8/7.
// Copyright (c) 2015年 dq. All rights reserved.
//
#import "Person.h"
@implementation Person
-(int)chuquan
{
int op;
scanf("%d",&op);
if (op>0&&op<=3) {
return op;
}
return 0;
}
@end
computer
//
// Computer.h
// oc_8.7_3
//
// Created by dq on 15/8/7.
// Copyright (c) 2015年 dq. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Competitor.h"
@interface Computer : Competitor
@end
//
// Computer.m
// oc_8.7_3
//
// Created by dq on 15/8/7.
// Copyright (c) 2015年 dq. All rights reserved.
//
#import "Computer.h"
@implementation Computer
-(int)chuquan
{
int op = arc4random()%3+1;
return op;
}
@end
Compertiter
//
// Competitor.h
// oc_8.7_3
//
// Created by dq on 15/8/8.
// Copyright (c) 2015年 dq. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface Competitor : NSObject
/**
* 出拳的结果
*/
-(int)chuquan;
@end
//
// Competitor.m
// oc_8.7_3
//
// Created by dq on 15/8/8.
// Copyright (c) 2015年 dq. All rights reserved.
//
#import "Competitor.h"
@implementation Competitor
-(int)chuquan
{
return 0;
}
@end