?? cset.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 + -