剪刀石头布 (人机对战)
Posted 唐唐_010
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剪刀石头布 (人机对战)相关的知识,希望对你有一定的参考价值。
#import <Foundation/Foundation.h>
@interface Computer : NSObject
@property(assign,nonatomic) int ComCount;
-(int)Punches;//出拳
@end
#import "Computer.h"
@implementation Computer
-(int)Punches
{
int num=arc4random()%3+1;//随机产生1-3的值
switch (num)
{
case 1:
NSLog(@"计算机出的是石头");
break;
case 2:
NSLog(@"计算机出的是剪刀");
break;
case 3:
NSLog(@"计算机出的是布");
break;
default:
break;
}
return num;
}
@end
#import <Foundation/Foundation.h>
@interface Person : NSObject
@property(assign,nonatomic) int PerCount;
-(int)Punches;
-(int)PlayCompare:(int)Computer and :(int)Person;
@end
#import "Person.h"
@implementation Person
//出拳的种类
-(int)Punches
{
int num1;
NSLog(@"请出拳:1-->石头,2-->剪刀,3-->布");
scanf("%d",&num1);
switch (num1)
{
case 1:
NSLog(@"您出的是石头!");
break;
case 2:
NSLog(@"您出的是剪刀!");
break;
case 3:
NSLog(@"您出的是布!");
break;
default:
break;
}
return num1;
}
//人出拳的方法与计算机随机出拳的方法进行比较
-(int)PlayCompare:(int)Computer and:(int)Person
{
if ((Computer==1&&Person==2)||(Computer==2&&Person==3)||(Computer==3&&Person==1))
{
NSLog(@"计算机赢了!");
return -1;
}
else if (Computer==Person)
{
NSLog(@"平局");
return 0;
}
else
{
NSLog(@"恭喜:您赢了!");
return 1;
}
}
@end
#import <Foundation/Foundation.h>
#import "Computer.h"
#import "Person.h"
int main(int argc, const char * argv[])
{
@autoreleasepool
{
Computer *computer=[Computer new];
Person *person=[Person new];
int count=0;
int num2;
for (int i=0; i<=20; i++)
{
int first=[person Punches];
int second=[computer Punches];
int third=[person PlayCompare:first and:second];
if (third==1)
{
person.PerCount++;
}
if (third==2)
{
computer.ComCount++;
}
NSLog(@"1-->继续 0-->结束");
scanf("%d",&num2);
count++;
NSLog(@"总共进行了%d局",count);
NSLog(@"人胜了%d局,计算机胜了%d局",person.PerCount,computer.ComCount);
}
}
return 0;
}
以上是关于剪刀石头布 (人机对战)的主要内容,如果未能解决你的问题,请参考以下文章
Java设计模式之从[剪刀石头布AI策略]分析策略(Strategy)模式
1. while循环(当循环) 2. do{}while()循环 3. switch cose(多选一) 例子:当选循环下求百鸡百钱 用 switch cose人机剪刀石头布