MRC实现猜拳游戏(附:@property理解偏差纠正)

  1 /*  猜拳游戏
  2     对象1:人,  属性:输入要出的拳并显示,分数,姓名
  3     对象2:Bot,属性同上,继承。自动生成出拳,枚举法。显示出拳,与传过来的人的出拳作比较,判定结果并输出分数。
  4  其他:每比较一次提示是否继续。
  5
  6  注意:MRC!
  7  */
  8
  9 #import <Foundation/Foundation.h>
 10 #import "Bot.h"
 11 int main(int argc, const char * argv[])
 12 {
 13     Person* p1 = [[Person alloc]init];
 14     p1.name = @"jack";
 15     p1.score = 0;
 16
 17     Bot* b1 = [[Bot alloc]init];
 18     b1.score = 0;
 19     char flag = 0;
 20
 21     do
 22     {
 23         [p1 fistSltAndShow];
 24         [b1 fistSltAndShow:p1];
 25         NSLog(@"继续请按y,结束请按n。");
 26         rewind(stdin);
 27         scanf("%c",&flag);
 28     }while (flag != ‘n‘ && flag != ‘N‘);
 29
 30     [b1 release];
 31     [p1 release];
 32     return 0;
 33 }
 34 //Person.h
 35 #import <Foundation/Foundation.h>
 36 typedef enum
 37 {
 38     kJianDao = 1,
 39     kShiTou,
 40     kBu
 41 }Fist;
 42
 43 @interface Person : NSObject
 44 @property(nonatomic, retain) NSString* name;
 45 @property(nonatomic, assign) int score;
 46 @property(nonatomic, assign) Fist fist;
 47 - (void)fistSltAndShow;
 48 @end
 49 //
 50 //  Person.m
 51
 52 #import "Person.h"
 53
 54 @implementation Person
 55 - (void)dealloc
 56 {
 57     NSLog(@"人挂了");
 58     [_name release];
 59     [super dealloc];
 60 }
 61 - (void)fistSltAndShow
 62 {
 63     do
 64     {
 65     NSLog(@"请选择出拳:1-剪刀,2-石头,3-布");
 66     _fist = -1;
 67     rewind(stdin);
 68     scanf("%d",&_fist);
 69     }while (_fist < 1 || _fist > 3);
 70     NSLog(@"%@出拳为:%@", _name, (_fist == 1 )?@"剪刀":(_fist == 2 ? @"石头" : @"布"));
 71 }
 72 @end
 73 //Bot.h
 74 #import "Person.h"
 75
 76 @interface Bot : Person
 77 - (void)fistSltAndShow:(Person*)person;
 78 @end
 79 //
 80 //  Bot.m
 81 #import "Bot.h"
 82 #import <stdlib.h>
 83 @implementation Bot
 84 - (void)fistSltAndShow:(Person*)person
 85 {
 86     self.fist = arc4random_uniform(3) + 1;
 87     NSLog(@"bot出拳为:%@", (self.fist == 1 )?@"剪刀":(self.fist == 2 ? @"石头" : @"布"));
 88     if ((self.fist - person.fist == 1)|| (-2 == self.fist - person.fist) )//1 - 3   2 - 1  3 - 2
 89     {
 90         self.score++;
 91         NSLog(@"bot赢了");
 92     }else if (0 == self.fist - person.fist)
 93     {
 94         NSLog(@"平局");
 95     }else
 96     {
 97         person.score++;
 98         NSLog(@"%@赢了",person.name);
 99     }
100     NSLog(@"%@:%d-----bot:%d",person.name , person.score, self.score);
101 }
102 - (void)dealloc
103 {
104     NSLog(@"Bot挂了");
105     [super dealloc];
106 }
107 @end

老乡华威ppt图片分享:

时间: 2024-10-23 15:27:49

MRC实现猜拳游戏(附:@property理解偏差纠正)的相关文章

猜拳游戏

//通过控制台命令方式实现一个猜拳游戏,用户通过输入(1.石头,2.剪刀,3.布)与电脑pk,最后通过积分的多少判断胜负 Scanner sc=new Scanner(System.in); for(;;){ System.out.println("欢迎来到猜拳游戏,游戏规则:1.石头,2.剪刀,3.布.赢一次获得1个积分点,输一次扣一个积分点.您共有5次猜拳机会."); System.out.println("请确定是否开始游戏:1.开始  0.退出"); int

C#面向对象编程-猜拳游戏

1.需求 现在要制作一个游戏,玩家与计算机进行猜拳游戏,玩家出拳,计算机出拳,计算机自动判断输赢. 2.需求分析 根据需求,来分析一下对象,可分析出:玩家对象(Player).计算机对象(Computer).裁判对象(Judge). 玩家出拳由用户控制,使用数字代表:1石头.2剪子.3布 计算机出拳由计算机随机产生 裁判根据玩家与计算机的出拳情况进行判断输赢 3.类对象的实现 玩家类示例代码 class Player { string name; public string Name { get

在学会循环结构语句时就可以写的一个猜拳游戏小项目

package com.etc.for2; import java.util.Scanner; /** * 猜拳游戏规则: * 人或机器可以随机出石头.剪刀.布, * 若一方出石头,另一方出剪刀,则输出打印出石头方获胜, * 若一方出石头,另一方出布,则输出打印出布方获胜, * 若一方出布,另一方出剪刀,则输出打印出剪刀方获胜, * */ public class TestCaiQuan { public static void main(String[] args) { Scanner sc=

猜拳游戏 java基础

//用循环方式实现和计算机玩猜拳的程序 (设定胜出条件--输3次或赢3次即退出) package eduask01; import java.util.*; public class Rask03 { public static void main(String[]args){ Scanner sc=new Scanner(System.in); int m=0,n=0;//累计输或赢的次数 for(;;){//死循环进行游戏 System.out.println("猜拳游戏:1.表示石头 2.

安卓版猜拳游戏源码

安卓版猜拳游戏源码,该文件中带有安装测试包的,这个游戏源码比较简单的,现在有两个代码,一个自定义VIEW的,一个就是普通的imageView图片,游戏非常适合一些新手的使用和学习. <ignore_js_op> <ignore_js_op> <ignore_js_op>  详细说明:http://android.662p.com/thread-4914-1-1.html 安卓版猜拳游戏源码,布布扣,bubuko.com

简单版猜拳游戏

界面很简单 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84

Java 入门课程视频实战-0基础 上线了,猜拳游戏,ATM实战,欢迎围观

Java 入门课程视频实战-0基础 已经上传完了.欢迎小伙伴们过来围观 直接进入: http://edu.csdn.net/course/detail/196 课程文件夹例如以下: 1 初识Java  19:08 2 熟悉Eclipse开发工具  12:42 3 Java语言基础  17:39 4 流程控制  14:53 5 数组  14:44 6 字符串  34:32 7 类和对象  29:30 8 猜拳游戏  33:39 9 模拟银行柜员机程序  36:35 10 退休金结算程序  本课程由

条件结构的实例-水仙花数、猜拳游戏、回文数字

1.判断输入的数是否为水仙花数 int num,ge,shi,bai,he;  //声明变量 printf("请输入三位数");  //由用户输入一个三位数 scanf("%d",&num);   //将用户输入的数字保存给num //用户输入的数=个位的三次方+ 十位数的三次方+ 百位数的三次方 //1.从num获取个位 ge=num%10; //2.从num获取十位 shi=num/10%10; //3.从num获取百位 bai=num/100; he=

JavaScript--面向对象--猜拳游戏

//html代码 <!doctype html> <html> <head> <meta charset="UTF-8"> <title>猜拳游戏</title> <link rel="stylesheet" href="css/game.css"></link> </head> <body> <div id="