mirror of
https://github.com/jie65535/Ancient-Spider.git
synced 2024-07-27 18:54:53 +08:00
提交源码
编译环境 VS2017
This commit is contained in:
parent
a980868e77
commit
a6666bcd52
2
蜘蛛纸牌/Card.cpp
Normal file
2
蜘蛛纸牌/Card.cpp
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
#include "Card.h"
|
||||||
|
|
37
蜘蛛纸牌/Card.h
Normal file
37
蜘蛛纸牌/Card.h
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "CardType.h"
|
||||||
|
|
||||||
|
class Card
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
CardValue _Value;
|
||||||
|
CardType _Type;
|
||||||
|
public:
|
||||||
|
Card() {}
|
||||||
|
Card(CardValue value, CardType type)
|
||||||
|
:_Value(value), _Type(type) {}
|
||||||
|
~Card() {}
|
||||||
|
|
||||||
|
CardValue GetValue() const
|
||||||
|
{
|
||||||
|
return _Value;
|
||||||
|
}
|
||||||
|
|
||||||
|
CardType GetType() const
|
||||||
|
{
|
||||||
|
return _Type;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator<(const Card & card) const
|
||||||
|
{
|
||||||
|
return _Value < card._Value;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator<(const CardValue & value) const
|
||||||
|
{
|
||||||
|
return _Value < value;
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
39
蜘蛛纸牌/CardType.h
Normal file
39
蜘蛛纸牌/CardType.h
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 卡牌类型
|
||||||
|
enum CardType {
|
||||||
|
// 黑桃
|
||||||
|
Spade,
|
||||||
|
|
||||||
|
// 红桃
|
||||||
|
Heart,
|
||||||
|
|
||||||
|
// 梅花
|
||||||
|
Club,
|
||||||
|
|
||||||
|
// 方块
|
||||||
|
Diamond
|
||||||
|
};
|
||||||
|
|
||||||
|
const int CardTypeNum = 4;
|
||||||
|
|
||||||
|
// 卡牌的值
|
||||||
|
enum CardValue {
|
||||||
|
_A,
|
||||||
|
_2,
|
||||||
|
_3,
|
||||||
|
_4,
|
||||||
|
_5,
|
||||||
|
_6,
|
||||||
|
_7,
|
||||||
|
_8,
|
||||||
|
_9,
|
||||||
|
_10,
|
||||||
|
_J,
|
||||||
|
_Q,
|
||||||
|
_K,
|
||||||
|
};
|
||||||
|
|
||||||
|
const int CardValueNum = 13;
|
36
蜘蛛纸牌/CardsSlots.cpp
Normal file
36
蜘蛛纸牌/CardsSlots.cpp
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
#include "CardsSlots.h"
|
||||||
|
|
||||||
|
|
||||||
|
CardsSlots::CardsSlots()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
CardsSlots::~CardsSlots()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void CardsSlots::Push(Card card)
|
||||||
|
{
|
||||||
|
_Cards.push_back(card);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CardsSlots::MoveCardsTo(CardsSlots & targetSlots, int first)
|
||||||
|
{
|
||||||
|
std::vector<Card> & targetCards = targetSlots.GetCards();
|
||||||
|
targetCards.insert(targetCards.end(), _Cards.begin() + first, _Cards.end());
|
||||||
|
_Cards.erase(_Cards.begin() + first, _Cards.end());
|
||||||
|
UpdateHideLevel();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CardsSlots::Pop(int num)
|
||||||
|
{
|
||||||
|
_Cards.erase(_Cards.end() - num, _Cards.end());
|
||||||
|
UpdateHideLevel();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CardsSlots::UpdateHideLevel()
|
||||||
|
{
|
||||||
|
if (HideLevel > 0 && HideLevel == _Cards.size())
|
||||||
|
HideLevel--;
|
||||||
|
}
|
31
蜘蛛纸牌/CardsSlots.h
Normal file
31
蜘蛛纸牌/CardsSlots.h
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <vector>
|
||||||
|
#include "Card.h"
|
||||||
|
|
||||||
|
class CardsSlots
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
std::vector<Card> _Cards;
|
||||||
|
int HideLevel;
|
||||||
|
public:
|
||||||
|
CardsSlots();
|
||||||
|
~CardsSlots();
|
||||||
|
|
||||||
|
int GetHideLevel() const { return HideLevel; }
|
||||||
|
void SetHideLevel(int level) { HideLevel = level; }
|
||||||
|
|
||||||
|
size_t Count() const { return _Cards.size(); }
|
||||||
|
|
||||||
|
void Clear() { _Cards.clear(); }
|
||||||
|
|
||||||
|
void Push(Card card);
|
||||||
|
|
||||||
|
void MoveCardsTo(CardsSlots &targetSlots, int first);
|
||||||
|
|
||||||
|
void Pop(int num);
|
||||||
|
|
||||||
|
std::vector<Card> & GetCards() { return _Cards; }
|
||||||
|
private:
|
||||||
|
void UpdateHideLevel();
|
||||||
|
};
|
||||||
|
|
BIN
蜘蛛纸牌/Debug/Card.obj
Normal file
BIN
蜘蛛纸牌/Debug/Card.obj
Normal file
Binary file not shown.
BIN
蜘蛛纸牌/Debug/CardsSlots.obj
Normal file
BIN
蜘蛛纸牌/Debug/CardsSlots.obj
Normal file
Binary file not shown.
BIN
蜘蛛纸牌/Debug/Game.obj
Normal file
BIN
蜘蛛纸牌/Debug/Game.obj
Normal file
Binary file not shown.
BIN
蜘蛛纸牌/Debug/View.obj
Normal file
BIN
蜘蛛纸牌/Debug/View.obj
Normal file
Binary file not shown.
BIN
蜘蛛纸牌/Debug/main.obj
Normal file
BIN
蜘蛛纸牌/Debug/main.obj
Normal file
Binary file not shown.
BIN
蜘蛛纸牌/Debug/vc141.idb
Normal file
BIN
蜘蛛纸牌/Debug/vc141.idb
Normal file
Binary file not shown.
BIN
蜘蛛纸牌/Debug/vc141.pdb
Normal file
BIN
蜘蛛纸牌/Debug/vc141.pdb
Normal file
Binary file not shown.
7
蜘蛛纸牌/Debug/蜘蛛纸牌.Build.CppClean.log
Normal file
7
蜘蛛纸牌/Debug/蜘蛛纸牌.Build.CppClean.log
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
f:\c++\vs\蜘蛛纸牌\蜘蛛纸牌\debug\vc141.pdb
|
||||||
|
f:\c++\vs\蜘蛛纸牌\蜘蛛纸牌\debug\vc141.idb
|
||||||
|
f:\c++\vs\蜘蛛纸牌\蜘蛛纸牌\debug\card.obj
|
||||||
|
f:\c++\vs\蜘蛛纸牌\蜘蛛纸牌\debug\cardsslots.obj
|
||||||
|
f:\c++\vs\蜘蛛纸牌\蜘蛛纸牌\debug\蜘蛛纸牌.tlog\cl.command.1.tlog
|
||||||
|
f:\c++\vs\蜘蛛纸牌\蜘蛛纸牌\debug\蜘蛛纸牌.tlog\cl.read.1.tlog
|
||||||
|
f:\c++\vs\蜘蛛纸牌\蜘蛛纸牌\debug\蜘蛛纸牌.tlog\cl.write.1.tlog
|
BIN
蜘蛛纸牌/Debug/蜘蛛纸牌.exe
Normal file
BIN
蜘蛛纸牌/Debug/蜘蛛纸牌.exe
Normal file
Binary file not shown.
BIN
蜘蛛纸牌/Debug/蜘蛛纸牌.ilk
Normal file
BIN
蜘蛛纸牌/Debug/蜘蛛纸牌.ilk
Normal file
Binary file not shown.
2
蜘蛛纸牌/Debug/蜘蛛纸牌.log
Normal file
2
蜘蛛纸牌/Debug/蜘蛛纸牌.log
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
main.cpp
|
||||||
|
蜘蛛纸牌.vcxproj -> F:\C++\VS\蜘蛛纸牌\蜘蛛纸牌\Debug\蜘蛛纸牌.exe
|
BIN
蜘蛛纸牌/Debug/蜘蛛纸牌.pdb
Normal file
BIN
蜘蛛纸牌/Debug/蜘蛛纸牌.pdb
Normal file
Binary file not shown.
BIN
蜘蛛纸牌/Debug/蜘蛛纸牌.tlog/CL.command.1.tlog
Normal file
BIN
蜘蛛纸牌/Debug/蜘蛛纸牌.tlog/CL.command.1.tlog
Normal file
Binary file not shown.
BIN
蜘蛛纸牌/Debug/蜘蛛纸牌.tlog/CL.read.1.tlog
Normal file
BIN
蜘蛛纸牌/Debug/蜘蛛纸牌.tlog/CL.read.1.tlog
Normal file
Binary file not shown.
BIN
蜘蛛纸牌/Debug/蜘蛛纸牌.tlog/CL.write.1.tlog
Normal file
BIN
蜘蛛纸牌/Debug/蜘蛛纸牌.tlog/CL.write.1.tlog
Normal file
Binary file not shown.
BIN
蜘蛛纸牌/Debug/蜘蛛纸牌.tlog/link.command.1.tlog
Normal file
BIN
蜘蛛纸牌/Debug/蜘蛛纸牌.tlog/link.command.1.tlog
Normal file
Binary file not shown.
BIN
蜘蛛纸牌/Debug/蜘蛛纸牌.tlog/link.read.1.tlog
Normal file
BIN
蜘蛛纸牌/Debug/蜘蛛纸牌.tlog/link.read.1.tlog
Normal file
Binary file not shown.
BIN
蜘蛛纸牌/Debug/蜘蛛纸牌.tlog/link.write.1.tlog
Normal file
BIN
蜘蛛纸牌/Debug/蜘蛛纸牌.tlog/link.write.1.tlog
Normal file
Binary file not shown.
2
蜘蛛纸牌/Debug/蜘蛛纸牌.tlog/蜘蛛纸牌.lastbuildstate
Normal file
2
蜘蛛纸牌/Debug/蜘蛛纸牌.tlog/蜘蛛纸牌.lastbuildstate
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
#TargetFrameworkVersion=v4.0:PlatformToolSet=v141:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit:WindowsTargetPlatformVersion=10.0.16299.0
|
||||||
|
Debug|Win32|F:\C++\VS\蜘蛛纸牌\蜘蛛纸牌\|
|
329
蜘蛛纸牌/Game.cpp
Normal file
329
蜘蛛纸牌/Game.cpp
Normal file
@ -0,0 +1,329 @@
|
|||||||
|
#include "Game.h"
|
||||||
|
#include <random>
|
||||||
|
|
||||||
|
Game::Game(Difficulty difficulty) :_pView(new View(*this))
|
||||||
|
{
|
||||||
|
SetDifficulty(difficulty);
|
||||||
|
}
|
||||||
|
|
||||||
|
Game::~Game()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Game::Show()
|
||||||
|
{
|
||||||
|
_pView->ShowGame();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Game::SetDifficulty(Difficulty newDifficulty)
|
||||||
|
{
|
||||||
|
_Difficulty = newDifficulty;
|
||||||
|
switch (newDifficulty)
|
||||||
|
{
|
||||||
|
case easy:
|
||||||
|
for (int i = 0; i < GroupsNum; ++i)
|
||||||
|
{
|
||||||
|
for (int j = 0; j < CardValueNum; ++j)
|
||||||
|
{
|
||||||
|
_Cards[i * CardValueNum + j] = Card((CardValue)j, CardType::Spade);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case normal:
|
||||||
|
for (int i = 0; i < GroupsNum; ++i)
|
||||||
|
{
|
||||||
|
for (int j = 0; j < CardValueNum; ++j)
|
||||||
|
{
|
||||||
|
_Cards[i * CardValueNum + j] = Card((CardValue)j, j % 2 ? CardType::Heart : CardType::Spade);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case hard:
|
||||||
|
for (int i = 0; i < GroupsNum; ++i)
|
||||||
|
{
|
||||||
|
for (int j = 0, k = 0; j < CardValueNum; ++j, k = (k + 1) % 4)
|
||||||
|
{
|
||||||
|
_Cards[i * CardValueNum + j] = Card((CardValue)j, (CardType)k);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Game::Shuffle()
|
||||||
|
{
|
||||||
|
static std::random_device rd;
|
||||||
|
std::default_random_engine e1(rd());
|
||||||
|
std::uniform_int_distribution<int> uniform_dist(0, _Cards.size() - 1);
|
||||||
|
for (int i = 0; i < _Cards.size(); ++i)
|
||||||
|
{
|
||||||
|
std::swap(_Cards[i], _Cards[uniform_dist(e1)]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Game::InitScenes()
|
||||||
|
{
|
||||||
|
ReservedCount = ReservedQuantity;
|
||||||
|
SuccessCount = 0;
|
||||||
|
IsVictory = false;
|
||||||
|
for (int i = 0; i < Scenes.size(); ++i)
|
||||||
|
Scenes[i].Clear();
|
||||||
|
|
||||||
|
for (int i = ReservedQuantity * Scenes.size(), j = 0; i < _Cards.size(); ++i, j = (j+1) % Scenes.size())
|
||||||
|
Scenes[j].Push(_Cards[i]);
|
||||||
|
|
||||||
|
for (int i = 0; i < Scenes.size(); ++i)
|
||||||
|
Scenes[i].SetHideLevel(Scenes[i].Count() - 1);
|
||||||
|
|
||||||
|
PSelected.SetValue(-1, -1);
|
||||||
|
PCurrent.SetValue(0, Scenes[0].Count() - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Game::StartNewGame()
|
||||||
|
{
|
||||||
|
Shuffle();
|
||||||
|
InitScenes();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Game::Deal()
|
||||||
|
{
|
||||||
|
if (ReservedCount < 1)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// 将之前选中的取消掉
|
||||||
|
PSelected.SetValue(-1, -1);
|
||||||
|
|
||||||
|
// 为每一个槽发一张牌
|
||||||
|
for (int i = 0; i < Scenes.size(); ++i)
|
||||||
|
{
|
||||||
|
Scenes[i].Push(_Cards[(ReservedCount-1) * Scenes.size() + i]);
|
||||||
|
}
|
||||||
|
// 次数减一
|
||||||
|
ReservedCount--;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Game::CurMove(Dir dir)
|
||||||
|
{
|
||||||
|
int width = Scenes.size();
|
||||||
|
int height = Scenes[PCurrent.x].Count();
|
||||||
|
switch (dir)
|
||||||
|
{
|
||||||
|
case left:
|
||||||
|
if (PCurrent.x == 0)
|
||||||
|
PCurrent.x = width -1;
|
||||||
|
else
|
||||||
|
PCurrent.x--;
|
||||||
|
break;
|
||||||
|
case up:
|
||||||
|
if (height == 0)
|
||||||
|
PCurrent.y = 0;
|
||||||
|
else if (PCurrent.y == 0)
|
||||||
|
PCurrent.y = height - 1;
|
||||||
|
else
|
||||||
|
PCurrent.y--;
|
||||||
|
break;
|
||||||
|
case right:
|
||||||
|
if (PCurrent.x == width - 1)
|
||||||
|
PCurrent.x = 0;
|
||||||
|
else
|
||||||
|
PCurrent.x++;
|
||||||
|
break;
|
||||||
|
case down:
|
||||||
|
if (height == 0)
|
||||||
|
PCurrent.y = 0;
|
||||||
|
else if (PCurrent.y == height - 1)
|
||||||
|
PCurrent.y = 0;
|
||||||
|
else
|
||||||
|
PCurrent.y++;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 如果现在这一列没任何牌 指向底
|
||||||
|
if (Scenes[PCurrent.x].Count() == 0)
|
||||||
|
PCurrent.y = 0;
|
||||||
|
// 否则如果光标高度高于当前高度
|
||||||
|
// 或者之前的高度是0
|
||||||
|
// 或者之前在上一列的顶部时
|
||||||
|
// 将光标指向当前列的顶部
|
||||||
|
else if (PCurrent.y >= Scenes[PCurrent.x].Count()
|
||||||
|
|| height == 0
|
||||||
|
|| PCurrent.y == height - 1)
|
||||||
|
PCurrent.y = Scenes[PCurrent.x].Count() - 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Game::Select()
|
||||||
|
{
|
||||||
|
if (PCurrent.x < 0 || PCurrent.x >= Scenes.size())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (Scenes[PCurrent.x].Count() == 0 && PCurrent.y != 0)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// 如果选中之前选的,则取消选中
|
||||||
|
if (PSelected == PCurrent)
|
||||||
|
{
|
||||||
|
PSelected.SetValue(-1, -1);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 如果之前未选中任何东西
|
||||||
|
if (PSelected.x == -1)
|
||||||
|
{
|
||||||
|
// 判断当前选的这个可不可以选
|
||||||
|
if (CheckIsOptional(PCurrent))
|
||||||
|
{
|
||||||
|
// 如果可以选就选中这个位置,返回true
|
||||||
|
PSelected = PCurrent;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 否则说明之前选中了东西,尝试移动
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// 如果新选的和之前选的是同一列 或者 选的是不是中间的牌
|
||||||
|
if (PCurrent.x == PSelected.x || PCurrent.y != Scenes[PCurrent.x].Count() - 1)
|
||||||
|
{
|
||||||
|
// 如果这一列啥都没有
|
||||||
|
if (Scenes[PCurrent.x].Count() == 0)
|
||||||
|
{
|
||||||
|
// 直接移动过去
|
||||||
|
MoveCards(PSelected, PCurrent.x);
|
||||||
|
PSelected.SetValue(-1, -1);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (CheckIsOptional(PCurrent))
|
||||||
|
{
|
||||||
|
PSelected = PCurrent;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 否则说明选的是其它列的最后一张
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// 如果可以移动过去
|
||||||
|
if (CheckIsOrderly(
|
||||||
|
Scenes[PCurrent.x].GetCards().at(PCurrent.y),
|
||||||
|
Scenes[PSelected.x].GetCards().at(PSelected.y),
|
||||||
|
_Difficulty))
|
||||||
|
{
|
||||||
|
// 直接移动过去
|
||||||
|
MoveCards(PSelected, PCurrent.x);
|
||||||
|
PSelected.SetValue(-1, -1);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
// 否则选中这一张牌
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PSelected = PCurrent;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Game::MoveCards(Point point, int SlotsIndex)
|
||||||
|
{
|
||||||
|
// 将指定位置的牌移动到对应的槽中
|
||||||
|
Scenes[point.x].MoveCardsTo(Scenes[SlotsIndex], point.y);
|
||||||
|
|
||||||
|
// 检测是否完成
|
||||||
|
if (CheckIsSuccess(SlotsIndex))
|
||||||
|
{
|
||||||
|
// 如果完成一组,则弹出这一组排
|
||||||
|
Scenes[SlotsIndex].Pop(CardValueNum);
|
||||||
|
// 然后将完成计数自增
|
||||||
|
SuccessCount++;
|
||||||
|
|
||||||
|
if (SuccessCount == GroupsNum)
|
||||||
|
IsVictory = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool Game::CheckIsOptional(Point point)
|
||||||
|
{
|
||||||
|
// 如果这一列啥都没有
|
||||||
|
if (Scenes[point.x].Count() == 0)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (point.y < Scenes[point.x].GetHideLevel())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (point.y == Scenes[point.x].Count() - 1)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
|
||||||
|
for (int i = point.y; i < Scenes[point.x].Count() - 1; ++i)
|
||||||
|
{
|
||||||
|
// 检查是否有序,只要有一个是错误的,那直接无法选中
|
||||||
|
if (!CheckIsOrderly(Scenes[point.x].GetCards().at(i), Scenes[point.x].GetCards().at(i + 1), _Difficulty))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Game::CheckIsOrderly(Card cur, Card next, Difficulty difficulty)
|
||||||
|
{
|
||||||
|
if (cur.GetValue() != next.GetValue() + 1)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// 根据难度检查花色
|
||||||
|
switch (difficulty)
|
||||||
|
{
|
||||||
|
// 简单难度不看花色
|
||||||
|
case easy:
|
||||||
|
return true;
|
||||||
|
|
||||||
|
// 普通难度要看是否黑红相间
|
||||||
|
case normal:
|
||||||
|
return cur.GetType() == CardType::Spade && next.GetType() == CardType::Heart
|
||||||
|
|| cur.GetType() == CardType::Heart && next.GetType() == CardType::Spade;
|
||||||
|
|
||||||
|
// 困难难度要看是否按照黑桃、红桃、梅花、方块的顺序来
|
||||||
|
case hard:
|
||||||
|
return cur.GetType() == CardType::Spade && next.GetType() == CardType::Heart
|
||||||
|
|| cur.GetType() == CardType::Heart && next.GetType() == CardType::Club
|
||||||
|
|| cur.GetType() == CardType::Club && next.GetType() == CardType::Diamond
|
||||||
|
|| cur.GetType() == CardType::Diamond && next.GetType() == CardType::Spade;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检查这一个槽是否完成
|
||||||
|
bool Game::CheckIsSuccess(int SlotsIndex)
|
||||||
|
{
|
||||||
|
// 先判断这个槽的数量足不足够完成一副牌
|
||||||
|
if (Scenes[SlotsIndex].Count() < CardValueNum)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// 如果显示出来的数量不足完成一副牌,直接返回
|
||||||
|
if (Scenes[SlotsIndex].Count() - Scenes[SlotsIndex].GetHideLevel() < CardValueNum)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
std::vector<Card> Cards = Scenes[SlotsIndex].GetCards();
|
||||||
|
// 然后判断最下面那张牌是不是A,如果不是直接返回
|
||||||
|
if (Cards.back().GetValue() != CardValue::_A)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// 然后检查倒数一副牌数量的位置开始是否有序,直接返回检查结果
|
||||||
|
return CheckIsOptional(Point(SlotsIndex, Cards.size() - CardValueNum));
|
||||||
|
}
|
122
蜘蛛纸牌/Game.h
Normal file
122
蜘蛛纸牌/Game.h
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <vector>
|
||||||
|
#include <array>
|
||||||
|
#include "Card.h"
|
||||||
|
#include "View.h"
|
||||||
|
#include "CardsSlots.h"
|
||||||
|
|
||||||
|
// 难度
|
||||||
|
enum Difficulty
|
||||||
|
{
|
||||||
|
// 简单
|
||||||
|
easy,
|
||||||
|
// 普通
|
||||||
|
normal,
|
||||||
|
// 困难
|
||||||
|
hard,
|
||||||
|
};
|
||||||
|
|
||||||
|
// 牌槽数量
|
||||||
|
const int SlotsNum = 10;
|
||||||
|
|
||||||
|
// 卡组数量
|
||||||
|
const int GroupsNum = 8;
|
||||||
|
|
||||||
|
// 预留数 预留的牌组数量 = 预留数 * 槽数量 = 5 * 10 = 50 可以发五次
|
||||||
|
const int ReservedQuantity = 5;
|
||||||
|
|
||||||
|
struct Point {
|
||||||
|
int x, y;
|
||||||
|
|
||||||
|
Point()
|
||||||
|
:x(0), y(0)
|
||||||
|
{}
|
||||||
|
|
||||||
|
Point(int a, int b)
|
||||||
|
:x(a), y(b)
|
||||||
|
{}
|
||||||
|
|
||||||
|
void SetValue(int a, int b)
|
||||||
|
{
|
||||||
|
x = a, y = b;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator == (const Point p) const
|
||||||
|
{
|
||||||
|
return x == p.x && y == p.y;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
enum Dir {
|
||||||
|
left,
|
||||||
|
up,
|
||||||
|
right,
|
||||||
|
down
|
||||||
|
};
|
||||||
|
|
||||||
|
class View;
|
||||||
|
class Game
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
// 本场游戏的所有牌
|
||||||
|
std::array<Card, GroupsNum * CardValueNum> _Cards;
|
||||||
|
|
||||||
|
// 游戏难度
|
||||||
|
Difficulty _Difficulty;
|
||||||
|
|
||||||
|
View *_pView;
|
||||||
|
|
||||||
|
std::array<CardsSlots, SlotsNum> Scenes;
|
||||||
|
|
||||||
|
// 预留发牌的次数
|
||||||
|
int ReservedCount;
|
||||||
|
|
||||||
|
// 成功完成组合的计数器
|
||||||
|
int SuccessCount;
|
||||||
|
|
||||||
|
Point PSelected;
|
||||||
|
Point PCurrent;
|
||||||
|
|
||||||
|
bool IsVictory;
|
||||||
|
public:
|
||||||
|
friend class View;
|
||||||
|
|
||||||
|
Game(Difficulty difficulty = Difficulty::easy);
|
||||||
|
~Game();
|
||||||
|
|
||||||
|
void Show();
|
||||||
|
|
||||||
|
void SetDifficulty(Difficulty newDifficulty);
|
||||||
|
Difficulty GetDifficulty() const { return _Difficulty; }
|
||||||
|
|
||||||
|
bool GetIsVictory() const { return IsVictory; }
|
||||||
|
|
||||||
|
// 洗牌
|
||||||
|
void Shuffle();
|
||||||
|
|
||||||
|
// 初始化场景
|
||||||
|
void InitScenes();
|
||||||
|
|
||||||
|
// 开始一场新游戏
|
||||||
|
void StartNewGame();
|
||||||
|
|
||||||
|
// 发牌(预留发牌次数足够的情况下才会发成功)
|
||||||
|
void Deal();
|
||||||
|
|
||||||
|
public:
|
||||||
|
// 光标移动
|
||||||
|
void CurMove(Dir dir);
|
||||||
|
|
||||||
|
// 选择当前光标指向的牌 返回是否选择成功
|
||||||
|
bool Select();
|
||||||
|
|
||||||
|
private:
|
||||||
|
void MoveCards(Point point, int SlotsIndex);
|
||||||
|
|
||||||
|
bool CheckIsOptional(Point point);
|
||||||
|
|
||||||
|
bool CheckIsOrderly(Card cur, Card next, Difficulty difficulty);
|
||||||
|
|
||||||
|
bool CheckIsSuccess(int SlotsIndex);
|
||||||
|
};
|
||||||
|
|
85
蜘蛛纸牌/View.cpp
Normal file
85
蜘蛛纸牌/View.cpp
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
#include "View.h"
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
const char *CardTypeView[] = {
|
||||||
|
"黑桃",
|
||||||
|
"红心",
|
||||||
|
"梅花",
|
||||||
|
"方块",
|
||||||
|
};
|
||||||
|
|
||||||
|
const char *CardValueView[] = {
|
||||||
|
" A"," 2"," 3"," 4"," 5"," 6"," 7"," 8"," 9","10"," J"," Q"," K"
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
View::~View()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void View::ShowCard(bool isNull)
|
||||||
|
{
|
||||||
|
std::cout << (isNull ? " " : "XXXXXX");
|
||||||
|
}
|
||||||
|
void View::ShowCard(Card card)
|
||||||
|
{
|
||||||
|
std::cout << CardTypeView[card.GetType()] << CardValueView[card.GetValue()];
|
||||||
|
}
|
||||||
|
|
||||||
|
void View::ShowGame()
|
||||||
|
{
|
||||||
|
bool flag = true;
|
||||||
|
char lc = '[', rc = ']';
|
||||||
|
for (int level = 0; flag; ++level)
|
||||||
|
{
|
||||||
|
flag = false;
|
||||||
|
for (int i = 0; i < _Game.Scenes.size(); ++i)
|
||||||
|
{
|
||||||
|
if (_Game.PSelected.y == level && _Game.PSelected.x == i)
|
||||||
|
lc = rc = '*';
|
||||||
|
else if (_Game.PCurrent.y == level && _Game.PCurrent.x == i)
|
||||||
|
lc = '>', rc = '<';
|
||||||
|
else
|
||||||
|
lc = '[', rc = ']';
|
||||||
|
|
||||||
|
// 如果是还没翻开的槽
|
||||||
|
if (level < _Game.Scenes[i].GetHideLevel())
|
||||||
|
{
|
||||||
|
std::cout << lc;
|
||||||
|
ShowCard(false);
|
||||||
|
std::cout << rc;
|
||||||
|
flag = true;
|
||||||
|
}
|
||||||
|
// 否则如果是有牌的
|
||||||
|
else if (level < _Game.Scenes[i].Count())
|
||||||
|
{
|
||||||
|
std::cout << lc;
|
||||||
|
ShowCard(_Game.Scenes[i].GetCards()[level]);
|
||||||
|
std::cout << rc;
|
||||||
|
flag = true;
|
||||||
|
}
|
||||||
|
// 否则如果是空的槽
|
||||||
|
else if (level == 0 && _Game.Scenes[i].Count() == 0)
|
||||||
|
{
|
||||||
|
// 如果光标正在这个槽上,出现光标
|
||||||
|
if (_Game.PCurrent.y == level && _Game.PCurrent.x == i)
|
||||||
|
lc = '>', rc = '<';
|
||||||
|
else
|
||||||
|
lc = ' ', rc = ' ';
|
||||||
|
std::cout << lc;
|
||||||
|
ShowCard(true);
|
||||||
|
std::cout << rc;
|
||||||
|
}
|
||||||
|
// 其它的全部输出空
|
||||||
|
else
|
||||||
|
{
|
||||||
|
std::cout << ' ';
|
||||||
|
ShowCard(true);
|
||||||
|
std::cout << ' ';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
std::cout << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::cout << "\n\n\n当前已经完成:" << _Game.SuccessCount << "组\t剩余发牌次数:" << _Game.ReservedCount << "次" << std::endl;
|
||||||
|
}
|
25
蜘蛛纸牌/View.h
Normal file
25
蜘蛛纸牌/View.h
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "Card.h"
|
||||||
|
#include "CardType.h"
|
||||||
|
#include "Game.h"
|
||||||
|
|
||||||
|
extern const char *CardTypeView[];
|
||||||
|
extern const char *CardValueView[];
|
||||||
|
|
||||||
|
class Game;
|
||||||
|
class View
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
Game &_Game;
|
||||||
|
|
||||||
|
public:
|
||||||
|
View(Game &game) :_Game(game) {}
|
||||||
|
~View();
|
||||||
|
|
||||||
|
void ShowCard(bool isNull);
|
||||||
|
void ShowCard(Card card);
|
||||||
|
|
||||||
|
void ShowGame();
|
||||||
|
};
|
||||||
|
|
90
蜘蛛纸牌/main.cpp
Normal file
90
蜘蛛纸牌/main.cpp
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
#include <iostream>
|
||||||
|
#include <conio.h>
|
||||||
|
using namespace std;
|
||||||
|
#include "Game.h"
|
||||||
|
|
||||||
|
void showGame();
|
||||||
|
bool input();
|
||||||
|
|
||||||
|
Game game;
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
game.StartNewGame();
|
||||||
|
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
showGame();
|
||||||
|
while(!input())
|
||||||
|
;
|
||||||
|
if (game.GetIsVictory())
|
||||||
|
{
|
||||||
|
system("cls");
|
||||||
|
std::cout << "游戏胜利!按任意键开始新游戏" << std::endl;
|
||||||
|
game.StartNewGame();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
getchar();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void showGame()
|
||||||
|
{
|
||||||
|
system("cls");
|
||||||
|
game.Show();
|
||||||
|
std::cout << "\n\n\n"
|
||||||
|
<< "[w] [s] [a] [d] 移动光标 [e] 发牌 [r] 开始新游戏 [q] 退出游戏" << std::endl
|
||||||
|
<< "[1] 简单难度 [2] 普通难度 [3] 困难难度" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool input()
|
||||||
|
{
|
||||||
|
switch (_getch())
|
||||||
|
{
|
||||||
|
case 'w':
|
||||||
|
case 'W':
|
||||||
|
game.CurMove(Dir::up);
|
||||||
|
break;
|
||||||
|
case 's':
|
||||||
|
case 'S':
|
||||||
|
game.CurMove(Dir::down);
|
||||||
|
break;
|
||||||
|
case 'a':
|
||||||
|
case 'A':
|
||||||
|
game.CurMove(Dir::left);
|
||||||
|
break;
|
||||||
|
case 'd':
|
||||||
|
case 'D':
|
||||||
|
game.CurMove(Dir::right);
|
||||||
|
break;
|
||||||
|
case ' ':
|
||||||
|
game.Select();
|
||||||
|
break;
|
||||||
|
case 'e':
|
||||||
|
case 'E':
|
||||||
|
game.Deal();
|
||||||
|
break;
|
||||||
|
case 'r':
|
||||||
|
case 'R':
|
||||||
|
game.StartNewGame();
|
||||||
|
break;
|
||||||
|
case '1':
|
||||||
|
game.SetDifficulty(Difficulty::easy);
|
||||||
|
game.StartNewGame();
|
||||||
|
break;
|
||||||
|
case '2':
|
||||||
|
game.SetDifficulty(Difficulty::normal);
|
||||||
|
game.StartNewGame();
|
||||||
|
break;
|
||||||
|
case '3':
|
||||||
|
game.SetDifficulty(Difficulty::hard);
|
||||||
|
game.StartNewGame();
|
||||||
|
break;
|
||||||
|
case 'q':
|
||||||
|
exit(0);
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
31
蜘蛛纸牌/蜘蛛纸牌.sln
Normal file
31
蜘蛛纸牌/蜘蛛纸牌.sln
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio 15
|
||||||
|
VisualStudioVersion = 15.0.27130.2036
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "蜘蛛纸牌", "蜘蛛纸牌.vcxproj", "{2358BF32-823A-4544-A768-0F7CB1421917}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|x64 = Debug|x64
|
||||||
|
Debug|x86 = Debug|x86
|
||||||
|
Release|x64 = Release|x64
|
||||||
|
Release|x86 = Release|x86
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{2358BF32-823A-4544-A768-0F7CB1421917}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{2358BF32-823A-4544-A768-0F7CB1421917}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{2358BF32-823A-4544-A768-0F7CB1421917}.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
|
{2358BF32-823A-4544-A768-0F7CB1421917}.Debug|x86.Build.0 = Debug|Win32
|
||||||
|
{2358BF32-823A-4544-A768-0F7CB1421917}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{2358BF32-823A-4544-A768-0F7CB1421917}.Release|x64.Build.0 = Release|x64
|
||||||
|
{2358BF32-823A-4544-A768-0F7CB1421917}.Release|x86.ActiveCfg = Release|Win32
|
||||||
|
{2358BF32-823A-4544-A768-0F7CB1421917}.Release|x86.Build.0 = Release|Win32
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {839C1040-BA87-4924-9F44-029555EEB49C}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
166
蜘蛛纸牌/蜘蛛纸牌.vcxproj
Normal file
166
蜘蛛纸牌/蜘蛛纸牌.vcxproj
Normal file
@ -0,0 +1,166 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
|
<ProjectConfiguration Include="Debug|Win32">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|Win32">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug|x64">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|x64">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
</ItemGroup>
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<VCProjectVersion>15.0</VCProjectVersion>
|
||||||
|
<ProjectGuid>{2358BF32-823A-4544-A768-0F7CB1421917}</ProjectGuid>
|
||||||
|
<Keyword>Win32Proj</Keyword>
|
||||||
|
<RootNamespace>蜘蛛纸牌</RootNamespace>
|
||||||
|
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v141</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v141</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v141</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v141</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
<ImportGroup Label="ExtensionSettings">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="Shared">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<PropertyGroup Label="UserMacros" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>Disabled</Optimization>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>Disabled</Optimization>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>MaxSpeed</Optimization>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>MaxSpeed</Optimization>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="Card.cpp" />
|
||||||
|
<ClCompile Include="CardsSlots.cpp" />
|
||||||
|
<ClCompile Include="Game.cpp" />
|
||||||
|
<ClCompile Include="main.cpp" />
|
||||||
|
<ClCompile Include="View.cpp" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="Card.h" />
|
||||||
|
<ClInclude Include="CardsSlots.h" />
|
||||||
|
<ClInclude Include="CardType.h" />
|
||||||
|
<ClInclude Include="Game.h" />
|
||||||
|
<ClInclude Include="View.h" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
</ImportGroup>
|
||||||
|
</Project>
|
51
蜘蛛纸牌/蜘蛛纸牌.vcxproj.filters
Normal file
51
蜘蛛纸牌/蜘蛛纸牌.vcxproj.filters
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup>
|
||||||
|
<Filter Include="源文件">
|
||||||
|
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||||
|
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="头文件">
|
||||||
|
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||||
|
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="资源文件">
|
||||||
|
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||||
|
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||||
|
</Filter>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="main.cpp">
|
||||||
|
<Filter>源文件</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="Card.cpp">
|
||||||
|
<Filter>源文件</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="View.cpp">
|
||||||
|
<Filter>源文件</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="Game.cpp">
|
||||||
|
<Filter>源文件</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="CardsSlots.cpp">
|
||||||
|
<Filter>源文件</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="Card.h">
|
||||||
|
<Filter>头文件</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="CardType.h">
|
||||||
|
<Filter>头文件</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="View.h">
|
||||||
|
<Filter>头文件</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="Game.h">
|
||||||
|
<Filter>头文件</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="CardsSlots.h">
|
||||||
|
<Filter>头文件</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
4
蜘蛛纸牌/蜘蛛纸牌.vcxproj.user
Normal file
4
蜘蛛纸牌/蜘蛛纸牌.vcxproj.user
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup />
|
||||||
|
</Project>
|
Loading…
Reference in New Issue
Block a user