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

📄 highscoremodel.cpp

📁 该程序功能:用JAVa实现的彩色五珠棋小游戏
💻 CPP
字号:
// HighScoreModel.cpp: implementation of the CHighScoreModel class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "FivePlus.h"
#include "HighScoreModel.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
IMPLEMENT_SERIAL( CHighScoreModel, CObject, 1 )

CHighScoreModel::CHighScoreModel(int nMaxSize)
{		
	m_nMaxSize = nMaxSize;
}

CHighScoreModel::~CHighScoreModel()
{	
	while ( !m_lstScoreRecord.IsEmpty() ) {
		CScoreRecord* pScoreRecord = m_lstScoreRecord.RemoveHead();
		delete pScoreRecord;		
	}
}

void CHighScoreModel::Serialize(CArchive &ar)
{	
	int count = m_lstScoreRecord.GetCount();
	if (ar.IsStoring())	
    {		
		ar << count;
		POSITION pos = m_lstScoreRecord.GetHeadPosition();		
		while ( pos ){
			CScoreRecord* pScoreRecord = m_lstScoreRecord.GetNext(pos);
			pScoreRecord->Serialize(ar);
		}
    }
    else
    {
		ar >> count;
		for ( int i = 0; i < count; i++ ){
			CScoreRecord* pScoreRecord = new CScoreRecord;
			pScoreRecord->Serialize(ar);
			m_lstScoreRecord.AddTail(pScoreRecord);
		}
    }

}

BOOL CHighScoreModel::UpBoard(CScoreRecord* scoreRecord)
{
	POSITION pos = m_lstScoreRecord.GetTailPosition();			
	BOOL bEnd = FALSE;	
	while ( pos && (!bEnd)){
		CScoreRecord* pScoreRecord = m_lstScoreRecord.GetPrev(pos);
		if (scoreRecord->m_nScore <= pScoreRecord->m_nScore){
			bEnd = TRUE;
		}
	}
	if ( pos ){
		m_lstScoreRecord.GetNext(pos);
		m_lstScoreRecord.InsertAfter(pos, scoreRecord);
	}
	else
		m_lstScoreRecord.AddHead(scoreRecord);
	if ( m_lstScoreRecord.GetCount() > m_nMaxSize )
		delete m_lstScoreRecord.RemoveTail();
	return TRUE;
}

BOOL CHighScoreModel::CanUpBoard(int score)
{	
	if ( m_lstScoreRecord.GetCount() < 9 ){
		return ( score > 0 );
	}else{
		CScoreRecord* pScoreRecord = m_lstScoreRecord.GetTail();
		if ( score > pScoreRecord->m_nScore )
			return TRUE;
		return FALSE;
	}
}

CString CHighScoreModel::GetString()
{
	POSITION pos = m_lstScoreRecord.GetHeadPosition();	
	char buffer[1024];
	int j = 0;
	int count = 0;
	while ( pos ){
		count++;
		CScoreRecord* pScoreRecord = m_lstScoreRecord.GetNext(pos);
		j += sprintf(buffer + j, "%d", count);
		j += sprintf(buffer + j, "%6d    ", pScoreRecord->m_nScore);
		j += sprintf(buffer + j, "%s", pScoreRecord->m_szName);		
		if ( pos )
			j += sprintf(buffer + j, "%s", "\n");			
	}
	
	j += sprintf(buffer + j, "%s", "\0");
	return buffer;	
}

⌨️ 快捷键说明

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