-------------------------------------- android培训、java培训、ios培训期待与您交流! ---------------------------------
今天把oc基础视频看完,就花了点时间写了一个命令行21点小游戏。感觉类的设计不是很好,但还是分享下:
main.m
//
// main.m
// 简单21点游戏
//
// Created by zhouyh on 14-4-3.
// Copyright (c) 2014年 itcast. All rights reserved.
//
/*
实验内容:设计一个 21 点的游戏
游戏规则如下:两个玩家,一个是人,一个是电脑。首先由电脑分别随机派两张牌给电脑本身和人类玩家(牌不能重复,牌的表示方式为 花色牌号,如红桃 8),然后玩家通过自己判断再选择是否继续要牌。如果要,则继续随机派给玩家一张牌,若此时所有牌的点数之和大于 21,则判断玩家为输,如果不是,则玩家可以继续选择要牌与否。如果不要牌,则人类玩家阶段结束。轮到电脑。电脑阶段与玩家阶段基本相同。由电脑自己判断是否继续要牌,判断的最重要依据是刚好赢人类玩家就收手。而输赢是按照两家的点数与牌数,赢的一方是点数较大的一方,若点数相同,则取牌数量更多的一方胜,若牌数也一样,则不分胜负。点数的计算方式为:不论花色(红桃,黑桃,梅花,方块),数字牌(2 到 10)按照数字算,A 按照 1 来算, J,Q,K 均算成 10 点,JOKER 算0点。
*/
#import <Foundation/Foundation.h>
#import "Game21.h"
int main(int argc, const char * argv[])
{
NSLog(@"欢迎使用21点游戏!");
Game21 *game = [[Game21 alloc] init]; // 创建游戏
while (1) {
[game run]; // 运行游戏
}
return 0;
}
Card.h
//
// Card.h
// 简单21点游戏
//
// Created by zhouyh on 14-4-3.
// Copyright (c) 2014年 itcast. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface Card : NSObject
//@property (nonatomic, assign) int no;
@property (nonatomic, strong) NSString *cardNo; // 牌号
@property (nonatomic, strong) NSString *huaSe; // 花色
// 通过数字来初始化牌
- (id)initWithNumber:(int)number;
// 计算每张牌的分数
- (int)jiFen;
@end
Card.m
//
// Card.m
// 简单21点游戏
//
// Created by zhouyh on 14-4-3.
// Copyright (c) 2014年 itcast. All rights reserved.
//
#import "Card.h"
@implementation Card
// 通过数字来初始化牌
- (id)initWithNumber:(int)number
{
if (self = [super init]) {
NSString *huaSe[4] = {
@"黑桃",
@"红桃",
@"梅花",
@"方块",
};
NSString *cardNo[13] = {
@"A",
@"2",
@"3",
@"4",
@"5",
@"6",
@"7",
@"8",
@"9",