⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cset.cpp

📁 软件工程的大作业
💻 CPP
字号:
//**************************************************************************************
//
// Copyright    @2006 - 2007, All Rights Reserved.
//
// Filename:    CSet.h
//
// Author:      Yin Zhou
//
// Created:     04/07/2008
//
// Purpose:     Implemenation of CSet class
//              关于一手牌类的具体实现
//
//***************************************************************************************

#include "stdafx.h"
#include "CSet.h"

CSet::CSet() {
    int i;

    for (i=0;i<CARD_NUMBER;i++) 
        m_card[i] = NULL;

    m_count = 0;

}

CSet::~CSet() {

}

// 加一张牌
void CSet::AddCard(CCard *card) {

    if (m_count == CARD_NUMBER) {
        goto ExitHere;
    }

    m_card[m_count++] = card;


ExitHere:
    return;
}

void CSet::Clear() {
    m_count = 0;
}

// 计算点数总和
int CSet::Sum() {
    int sum = 0, i;

    for (i=0;i<m_count;i++) {
        sum += m_card[i]->GetNumber();
    }

    return sum;
}

SET_TYPE CSet::GetType() {
    SET_TYPE ret = OTHERS;

    if (IsSameColor()) {
        ret = SAME_COLOR;
        goto ExitHere;
    }

    if (IsSeries()) {
        ret = SERIES;
        goto ExitHere;
    }

    if (IsSameNumber()) {
        ret = SAME_NUMBER;
        goto ExitHere;
    }

    if (IsPair()) {
        ret = PAIR;
        goto ExitHere;
    }

ExitHere:
    return ret;
}

bool CSet::IsSameColor() {
    bool        isSameColor = true;
    int         i;
    COLOR_TYPE  color;

    color = m_card[0]->GetColor();
    for (i=1;i<m_count;i++) {
        if (m_card[i]->GetColor() != color) {
            isSameColor = false;
            break;
        }
    }

    return isSameColor;
}

bool CSet::IsSeries() {
    CCard *card; 
    int    i;
    bool   result = true;

    if (m_card[2]->GetNumber() < m_card[1]->GetNumber()) {
        card = m_card[1];
        m_card[1] = m_card[2];
        m_card[2] = card;
    }

    if (m_card[1]->GetNumber() < m_card[0]->GetNumber()) {
        card = m_card[0];
        m_card[0] = m_card[1];
        m_card[1] = card;
    }

    if (m_card[2]->GetNumber() < m_card[1]->GetNumber()) {
        card = m_card[1];
        m_card[1] = m_card[2];
        m_card[2] = card;
    }

    for (i=0;i<CARD_NUMBER-1;i++) {
        if (m_card[i+1]->GetNumber() - m_card[i]->GetNumber() != 1) {
            result = false;
            break;
        }
    }

    return result;
}

bool CSet::IsSameNumber() {
    int    i;
    bool   result = true;

    for (i=0;i<CARD_NUMBER-1;i++) {
        if (m_card[i+1]->GetNumber() != m_card[i]->GetNumber()) {
            result = false;
            break;
        }
    }

    return result;
}

bool CSet::IsPair() {
    int    i, j;
    bool   result = false;

    for (i=0;i<CARD_NUMBER-1;i++) {
        for (j=i+1;j<CARD_NUMBER;j++) {
            if (m_card[i]->GetNumber() == m_card[j]->GetNumber()) {
                result = true;
                break;
            }
        }
    }

    return result;
}

void CSet::Display() {
    int i;

    /*for (i=0;i<CARD_NUMBER;i++) {
        printf(" m_card[%d] color = %d, number = %d\n", 
                i, m_card[i]->GetColor(), m_card[i]->GetNumber());
    }*/
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -