亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? bosseng.cpp

?? 《SymbianOSC手機應用開發》源碼
?? CPP
字號:
// bosseng.cpp
//
// Copyright (c) 2000 Symbian Ltd.  All rights reserved.

#include "bosseng.h"

#include <s32std.h>

// panic wrapper

enum
	{
	ERowOutOfRange,
	EColOutOfRange,
	ETileOutOfRange,
	EBadArrangement,
	EBadMove,
	};

void Panic(TInt aPanic)
	{
	_LIT(KBossEnginePanic,"BossEngine");// constant declaration
	User::Panic(KBossEnginePanic,aPanic);
	}

// construct

EXPORT_C TBossPuzzle::TBossPuzzle()
	{
	SetFullyOrdered();
	}

// initialize state

EXPORT_C void TBossPuzzle::SetFullyOrdered()
	{
	for (TInt i=0; i<15; i++)
		iTiles[i]=i+1;
	iTiles[15]=0;
	}

EXPORT_C void TBossPuzzle::SetBossOrdered()
	{
	SetFullyOrdered();
	iTiles[13]=15;
	iTiles[14]=14;
	}

// inquiry

EXPORT_C TBool TBossPuzzle::IsFullyOrdered() const
	{
	for (TInt i=0; i<15; i++)
		if (iTiles[i]!=i+1)
			return EFalse;
	if (iTiles[15]!=0)
		return EFalse;
	return ETrue;
	}

EXPORT_C TBool TBossPuzzle::IsBlank(TInt aRow, TInt aCol) const
	{
	return Tile(aRow, aCol)==0;
	}

EXPORT_C const TInt& TBossPuzzle::Tile(TInt aRow, TInt aCol) const
	{
	__ASSERT_ALWAYS(aRow>=0 && aRow<4, Panic(ERowOutOfRange));
	__ASSERT_ALWAYS(aCol>=0 && aCol<4, Panic(EColOutOfRange));
	return iTiles[aRow*4 + aCol];
	}

EXPORT_C TInt& TBossPuzzle::Tile(TInt aRow, TInt aCol)
	{
	__ASSERT_ALWAYS(aRow>=0 && aRow<4, Panic(ERowOutOfRange));
	__ASSERT_ALWAYS(aCol>=0 && aCol<4, Panic(EColOutOfRange));
	return iTiles[aRow*4 + aCol];
	}

EXPORT_C void TBossPuzzle::LocateTile(TInt aTileNumber, TInt& aRow, TInt& aCol) const
	{
	__ASSERT_ALWAYS(aTileNumber>=1 && aTileNumber<=15, Panic(ETileOutOfRange));
	for (TInt row=0; row<4; row++)
		for (TInt col=0; col<4; col++)
			if (Tile(row, col)==aTileNumber)
				{
				aRow=row;
				aCol=col;
				return;
				}
	Panic(EBadArrangement);
	}

EXPORT_C void TBossPuzzle::LocateBlank(TInt& aRow, TInt& aCol) const
	{
	for (TInt row=0; row<4; row++)
		for (TInt col=0; col<4; col++)
			if (Tile(row, col)==0)
				{
				aRow=row;
				aCol=col;
				return;
				}
	Panic(EBadArrangement);
	}

// whether various moves are possible

EXPORT_C TBool TBossPuzzle::CanMove(TMoveType aMoveType) const
	{
	TInt blankRow, blankCol;
	LocateBlank(blankRow, blankCol);
	blankRow += aMoveType==EUp ? 1 : aMoveType==EDown ? -1 : 0;
	blankCol += aMoveType==ELeft ? 1 : aMoveType==ERight ? -1 : 0;
	return blankRow>=0 && blankRow<4 && blankCol>=0 && blankCol<4;
	}

EXPORT_C TBool TBossPuzzle::CanMove(TInt aRow, TInt aCol) const
	{
	TInt blankRow, blankCol;
	LocateBlank(blankRow, blankCol);
	return
		aRow==blankRow && aCol==blankCol+1 ||
		aRow==blankRow && aCol==blankCol-1 ||
		aCol==blankCol && aRow==blankRow+1 ||
		aCol==blankCol && aRow==blankRow-1;
	}

EXPORT_C TBossPuzzle::TMoveType TBossPuzzle::CanMoveType(TInt aRow, TInt aCol) const
	{
	__ASSERT_ALWAYS(CanMove(aRow, aCol), Panic(EBadMove));
	TInt blankRow, blankCol;
	LocateBlank(blankRow, blankCol);
	return
		aRow==blankRow && aCol==blankCol+1 ? ELeft :
		aRow==blankRow && aCol==blankCol-1 ? ERight :
		aCol==blankCol && aRow==blankRow+1 ? EUp :
		EDown;
	}

// moving - these functions panic if impossible

EXPORT_C void TBossPuzzle::Move(TMoveType aMoveType)
	{
	// check it's ok
	__ASSERT_ALWAYS(CanMove(aMoveType), Panic(EBadMove));
	// get current blank position and calculate new one
	TInt blankRow, blankCol;
	LocateBlank(blankRow, blankCol);
	TInt newBlankRow = blankRow + (aMoveType==EUp ? 1 : aMoveType==EDown ? -1 : 0);
	TInt newBlankCol = blankCol + (aMoveType==ELeft ? 1 : aMoveType==ERight ? -1 : 0);
	// do the move
	Tile(blankRow, blankCol)=Tile(newBlankRow,newBlankCol); // move tile to present blank
	Tile(newBlankRow, newBlankCol)=0; // move blank to new position
	}

EXPORT_C void TBossPuzzle::Move(TInt aRow, TInt aCol)
	{
	Move(CanMoveType(aRow, aCol));
	}

// stream persistence

EXPORT_C void TBossPuzzle::ExternalizeL(RWriteStream& aStream) const
	{
	for (TInt i=0; i<16; i++)
		aStream.WriteInt8L(iTiles[i]);
	}

EXPORT_C void TBossPuzzle::InternalizeL(RReadStream& aStream)
	{
	for (TInt i=0; i<16; i++)
		iTiles[i]=aStream.ReadInt8L();
	}

// store and restore

EXPORT_C TStreamId TBossPuzzle::StoreL(CStreamStore& aStore) const
	{
	RStoreWriteStream stream;
	TStreamId id = stream.CreateLC(aStore);
	ExternalizeL(stream);
	stream.CommitL();
	CleanupStack::PopAndDestroy(); // stream
	return id;
	}

EXPORT_C void TBossPuzzle::RestoreL(const CStreamStore& aStore, TStreamId aStreamId)
	{
	RStoreReadStream stream;
	stream.OpenLC(aStore,aStreamId);
	InternalizeL(stream);
	CleanupStack::PopAndDestroy(); // stream
	}

// requirement for E32 DLLs

EXPORT_C TInt E32Dll(TDllReason)
	{
	return 0;
	}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧洲性图库| 日韩色在线观看| 国产精品系列在线播放| 天堂影院一区二区| 午夜欧美在线一二页| 亚洲妇熟xx妇色黄| 性感美女极品91精品| 亚洲图片欧美一区| 日韩av在线发布| 男男gaygay亚洲| 精品一区二区三区免费| 精品一区二区三区在线视频| 国产精品资源站在线| 成人免费电影视频| 成人黄色a**站在线观看| 不卡av免费在线观看| 91免费小视频| 欧美日韩国产免费一区二区| 日韩一区国产二区欧美三区| 精品播放一区二区| 中文字幕中文字幕中文字幕亚洲无线| 国产精品欧美一区二区三区| 亚洲欧美日韩久久| 蜜臀av一区二区| 国产一区二区三区免费观看| 91免费视频网址| 91精品国产高清一区二区三区| 久久综合狠狠综合| 17c精品麻豆一区二区免费| 亚洲欧洲av一区二区三区久久| 亚洲一级不卡视频| 精品一区二区日韩| 91麻豆免费观看| 日韩视频国产视频| 亚洲欧美激情在线| 久久精品国产久精国产爱| 91在线无精精品入口| 日韩欧美一区二区不卡| 国产精品久久久久精k8| 日本女人一区二区三区| 成人精品小蝌蚪| 欧美影院一区二区三区| 国产欧美一区视频| 日韩成人精品视频| bt欧美亚洲午夜电影天堂| 欧美日韩国产高清一区二区| 久久精品人人爽人人爽| 三级久久三级久久| 91色porny在线视频| 久久网站热最新地址| 亚洲专区一二三| 国产99一区视频免费| 91精品国产91久久久久久一区二区| 国产欧美一区二区三区沐欲| 亚洲电影第三页| 一本一道久久a久久精品综合蜜臀| 欧美成人艳星乳罩| 午夜精品一区二区三区电影天堂 | 一本色道久久综合亚洲91| 精品国免费一区二区三区| 亚洲综合一二区| 色综合久久综合网欧美综合网| 久久久美女艺术照精彩视频福利播放 | 欧洲精品一区二区| 国产欧美va欧美不卡在线| 日本视频在线一区| 欧美三级视频在线播放| 亚洲精品国产精品乱码不99| 成人av电影在线观看| 国产女人18毛片水真多成人如厕| 久久99国产精品久久99| 欧美一区二区在线观看| 三级不卡在线观看| 欧美精品 日韩| 婷婷开心激情综合| 欧美午夜不卡在线观看免费| 亚洲欧洲三级电影| 99精品一区二区| 国产精品国产馆在线真实露脸 | 欧洲激情一区二区| 一区二区三区av电影| 91福利视频网站| 亚洲成人自拍一区| 欧美欧美欧美欧美| 麻豆中文一区二区| 久久亚洲一级片| 国产乱码精品一品二品| 欧美激情一区二区三区在线| 国产成人免费视频精品含羞草妖精| 久久久噜噜噜久久人人看| 国产一区二区三区免费| 中文字幕一区在线观看视频| 91在线观看下载| 亚洲一区二区三区爽爽爽爽爽| 欧美日韩你懂得| 日本va欧美va精品| 久久精品一级爱片| 91在线免费视频观看| 五月婷婷激情综合网| 欧美精品三级日韩久久| 国产在线播放一区三区四| 国产午夜一区二区三区| 99久久99精品久久久久久| 亚洲国产精品影院| 欧美一区二区不卡视频| 国产精品亚洲а∨天堂免在线| 欧美激情资源网| 欧美在线免费视屏| 精品亚洲aⅴ乱码一区二区三区| 久久久电影一区二区三区| 91在线看国产| 久久成人av少妇免费| 国产精品免费视频一区| 欧美日韩国产一区二区三区地区| 日韩va欧美va亚洲va久久| 中文字幕乱码日本亚洲一区二区 | 色综合天天做天天爱| 日韩精品一二三| 日本一区二区三区高清不卡| 欧美日韩在线不卡| 成人网男人的天堂| 日本欧美在线看| 亚洲精品欧美在线| 久久久99精品久久| 欧美美女bb生活片| a4yy欧美一区二区三区| 久久精品国产第一区二区三区| 国产精品无人区| 精品国产三级a在线观看| 色婷婷久久久亚洲一区二区三区| 美女一区二区久久| 爽好久久久欧美精品| 亚洲国产精品黑人久久久| 日韩一区二区三区免费看| 91麻豆国产香蕉久久精品| 国产综合久久久久久久久久久久| 天天综合色天天综合| 亚洲精品亚洲人成人网| 国产婷婷色一区二区三区四区| 欧美一区二区三区系列电影| 91免费视频网| 成人黄色小视频在线观看| 国产一级精品在线| 国产一区二区三区四区在线观看| 日本亚洲一区二区| 天堂va蜜桃一区二区三区| 亚洲国产日产av| 亚洲黄色av一区| 亚洲乱码国产乱码精品精的特点| 国产精品美女久久久久久| 久久久久久久久久久黄色| 精品国产乱码久久久久久免费 | 处破女av一区二区| 国产一区在线不卡| 国内精品久久久久影院色| 激情深爱一区二区| 麻豆精品国产传媒mv男同 | 日韩一区二区在线观看| 欧美一区二区三区在线看| 在线不卡免费av| 7799精品视频| 日韩视频免费直播| 久久综合给合久久狠狠狠97色69| 2024国产精品视频| 欧美国产精品一区二区三区| 国产日韩欧美高清在线| 中文字幕视频一区| 一级日本不卡的影视| 一区二区三区电影在线播| 午夜精品一区二区三区电影天堂| 日本美女一区二区三区| 理论片日本一区| 国产成人免费9x9x人网站视频| 成人一道本在线| 在线精品视频免费观看| 91精品国产欧美一区二区成人| 欧美一区二区三区视频在线 | 国产精品―色哟哟| 亚洲视频一区二区在线| 午夜精品久久久久久久久久久| 日韩电影免费一区| 国产不卡视频一区| 欧美日韩高清一区| 精品少妇一区二区三区免费观看| 国产午夜精品理论片a级大结局| 国产精品久久久久久久岛一牛影视| 亚洲综合丝袜美腿| 狠狠久久亚洲欧美| 91丝袜国产在线播放| 欧美一级理论片| 中文字幕精品—区二区四季| 亚洲女人****多毛耸耸8| 久久精品国产精品亚洲精品| 99国产精品一区| 欧美电影免费观看高清完整版在线| 国产精品国产三级国产普通话三级| 日韩精品视频网站| www.日韩大片| 日韩精品一区二区三区视频| 综合色中文字幕|