From 59373c51454aa27735dd7468e707cb3e7e989a74 Mon Sep 17 00:00:00 2001 From: Nomango Date: Sun, 23 Oct 2022 13:26:07 +0800 Subject: [PATCH] v2.1.12 --- PushBox/Buttons.cpp | 10 +++---- PushBox/PlayScene.cpp | 58 +++++++++++++++++++-------------------- PushBox/PushBox.vcxproj | 44 ++++++----------------------- PushBox/StartScene.cpp | 8 +++--- PushBox/SuccessScene.cpp | 6 ++-- PushBox/logo.ico | Bin 38078 -> 32883 bytes PushBox/main.cpp | 20 +++++++------- 7 files changed, 59 insertions(+), 87 deletions(-) diff --git a/PushBox/Buttons.cpp b/PushBox/Buttons.cpp index 6993a2a..25270f8 100644 --- a/PushBox/Buttons.cpp +++ b/PushBox/Buttons.cpp @@ -8,7 +8,7 @@ static DrawingStyle buttonDisabledStyle = DrawingStyle(Color::LightGray); MyTextButton::MyTextButton(const String& text, Function callback) { this->setText(text); - this->setFont(Font(L"新宋体", 28, Font::Weight::Bold)); + this->setFont(Font("新宋体", 28, Font::Weight::Bold)); this->setDrawingStyle(buttonNormalStyle); // 添加按钮监听器 @@ -46,7 +46,7 @@ void MyTextButton::setEnable(bool enable) SoundButton::SoundButton() { - static auto sound = L"res/background.wav"; + static auto sound = "res/background.wav"; lis = gcnew ToggleButtonListener(g_SoundOpen, [=](ButtonEvent evt, bool state) { if (evt == ButtonEvent::Clicked) { @@ -63,7 +63,7 @@ SoundButton::SoundButton() g_SoundOpen = state; this->setState(state); // 保存信息到文件 - Data::saveBool(L"sound", g_SoundOpen); + Data::saveBool("sound", g_SoundOpen); } }); this->addListener(lis); @@ -78,7 +78,7 @@ void SoundButton::updateStatus() void SoundButton::setState(bool state) { - static auto soundon = L"res/soundon.png"; - static auto soundoff = L"res/soundoff.png"; + static auto soundon = "res/soundon.png"; + static auto soundoff = "res/soundoff.png"; this->open(state ? soundon : soundoff); } diff --git a/PushBox/PlayScene.cpp b/PushBox/PlayScene.cpp index d01b712..8ad4e67 100644 --- a/PushBox/PlayScene.cpp +++ b/PushBox/PlayScene.cpp @@ -5,31 +5,31 @@ PlayScene::PlayScene(int level) { // 创建字体 - auto font = Font(L"新宋体", 28, Font::Weight::Bold); - auto font2 = Font(L"新宋体", 20, Font::Weight::Bold); + auto font = Font("新宋体", 28, Font::Weight::Bold); + auto font2 = Font("新宋体", 20, Font::Weight::Bold); // 当前关卡文字 - levelText = gcnew Text(L"", font); + levelText = gcnew Text("", font); levelText->setPos(520, 30); this->addChild(levelText); // 当前步数文字 - stepText = gcnew Text(L"", font2); + stepText = gcnew Text("", font2); stepText->setPos(520, 100); this->addChild(stepText); // 最佳步数文字 - bestText = gcnew Text(L"", font2); + bestText = gcnew Text("", font2); bestText->setPos(520, 140); this->addChild(bestText); // 按 ESC 退出提示文字 - auto exitText = gcnew Text(L"按ESC返回", font2); + auto exitText = gcnew Text("按ESC返回", font2); exitText->setPos(520, 250); this->addChild(exitText); // 按回车重新开始提示文字 - auto restartText = gcnew Text(L"按回车重开", font2); + auto restartText = gcnew Text("按回车重开", font2); restartText->setPos(520, 290); this->addChild(restartText); @@ -121,27 +121,27 @@ void PlayScene::Flush() // 1.墙 if (piece.type == TYPE::Wall) { - sprite->open(L"res/wall.gif"); + sprite->open("res/wall.gif"); } // 2.得分点处的地面 else if (piece.type == TYPE::Ground && piece.isPoint) { - sprite->open(L"res/point.gif"); + sprite->open("res/point.gif"); } // 3.普通地面 else if (piece.type == TYPE::Ground) { - sprite->open(L"res/floor.gif"); + sprite->open("res/floor.gif"); } // 4.得分点处的箱子 else if (piece.type == TYPE::Box && piece.isPoint) { - sprite->open(L"res/boxinpoint.gif"); + sprite->open("res/boxinpoint.gif"); } // 5.普通箱子 else if (piece.type == TYPE::Box) { - sprite->open(L"res/box.gif"); + sprite->open("res/box.gif"); } // 6.正在推箱子的角色 else if (piece.type == TYPE::Man && g_Pushing) @@ -150,16 +150,16 @@ void PlayScene::Flush() switch (g_Direct) { case 1: - sprite->open(L"res/manhandup.gif"); + sprite->open("res/manhandup.gif"); break; case 2: - sprite->open(L"res/manhanddown.gif"); + sprite->open("res/manhanddown.gif"); break; case 3: - sprite->open(L"res/manhandleft.gif"); + sprite->open("res/manhandleft.gif"); break; case 4: - sprite->open(L"res/manhandright.gif"); + sprite->open("res/manhandright.gif"); break; } } @@ -169,16 +169,16 @@ void PlayScene::Flush() switch (g_Direct) { case 1: - sprite->open(L"res/manup.gif"); + sprite->open("res/manup.gif"); break; case 2: - sprite->open(L"res/mandown.gif"); + sprite->open("res/mandown.gif"); break; case 3: - sprite->open(L"res/manleft.gif"); + sprite->open("res/manleft.gif"); break; case 4: - sprite->open(L"res/manright.gif"); + sprite->open("res/manright.gif"); break; } } @@ -200,22 +200,22 @@ void PlayScene::SetLevel(int level) // 保存关卡等级 ::g_CurrentLevel = level; // 保存关卡信息到文件 - Data::saveInt(L"level", ::g_CurrentLevel); + Data::saveInt("level", ::g_CurrentLevel); // 修改关卡信息文字 - levelText->setText(L"第" + std::to_wstring(level) + L"关"); + levelText->setText("第" + std::to_string(level) + "关"); // 重置步数 SetStep(0); // 获取最佳步数 - String strLevel = L"level" + std::to_wstring(level); + String strLevel = "level" + std::to_string(level); int bestStep = Data::getInt(strLevel, 0); if (bestStep != 0) { - bestText->setText(L"最佳" + std::to_wstring(bestStep) + L"步"); + bestText->setText("最佳" + std::to_string(bestStep) + "步"); } else { - bestText->setText(L""); + bestText->setText(""); } // 获取关卡地图信息 @@ -251,7 +251,7 @@ void PlayScene::Move(int x, int y, int direct) map.value[map.roleY][map.roleX].type = TYPE::Ground; map.value[y][x].type = TYPE::Man; // 播放音效 - if (::g_SoundOpen) MusicPlayer::play(L"res/manmove.wav"); + if (::g_SoundOpen) MusicPlayer::play("res/manmove.wav"); } // 3.前面是箱子 else if (map.value[y][x].type == TYPE::Box) @@ -289,7 +289,7 @@ void PlayScene::Move(int x, int y, int direct) map.value[y][x].type = TYPE::Man; map.value[map.roleY][map.roleX].type = TYPE::Ground; // 播放音效 - if (::g_SoundOpen) MusicPlayer::play(L"res/boxmove.wav"); + if (::g_SoundOpen) MusicPlayer::play("res/boxmove.wav"); } // 重新保存角色位置 map.roleX = x; @@ -303,13 +303,13 @@ void PlayScene::SetStep(int step) // 保存步数 this->step = step; // 修改步数文字 - stepText->setText(L"当前" + std::to_wstring(step) + L"步"); + stepText->setText("当前" + std::to_string(step) + "步"); } void PlayScene::GameOver() { // 获取最佳步数 - String strLevel = L"level" + std::to_wstring(g_CurrentLevel); + String strLevel = "level" + std::to_string(g_CurrentLevel); int bestStep = Data::getInt(strLevel, 0); // 重新保存最佳步数 if (bestStep == 0 || step < bestStep) diff --git a/PushBox/PushBox.vcxproj b/PushBox/PushBox.vcxproj index eef1696..23c10b1 100644 --- a/PushBox/PushBox.vcxproj +++ b/PushBox/PushBox.vcxproj @@ -26,52 +26,24 @@ Application true - Unicode - v100 - v110 - v120 - v140 - v141 - v142 - v143 + $(DefaultPlatformToolset) Application false true - Unicode - v100 - v110 - v120 - v140 - v141 - v142 - v143 + $(DefaultPlatformToolset) Application true - Unicode - v100 - v110 - v120 - v140 - v141 - v142 - v143 + $(DefaultPlatformToolset) Application false true - Unicode - v100 - v110 - v120 - v140 - v141 - v142 - v143 + $(DefaultPlatformToolset) @@ -107,7 +79,7 @@ Level3 Disabled - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true true @@ -119,7 +91,7 @@ Level3 Disabled - _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true true @@ -133,7 +105,7 @@ MaxSpeed true true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true true @@ -149,7 +121,7 @@ MaxSpeed true true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true true diff --git a/PushBox/StartScene.cpp b/PushBox/StartScene.cpp index 759baf2..25d5f09 100644 --- a/PushBox/StartScene.cpp +++ b/PushBox/StartScene.cpp @@ -5,14 +5,14 @@ StartScene::StartScene() { // 添加背景图 - auto background = gcnew Sprite(L"res/start.jpg"); + auto background = gcnew Sprite("res/start.jpg"); this->addChild(background); // 修改节点默认中心点位置 Node::setDefaultAnchor(0.5, 0.5); // 创建开始游戏按钮 - auto startBtn = gcnew MyTextButton(L"新游戏", [=]() { + auto startBtn = gcnew MyTextButton("新游戏", [=]() { this->Start(); }); // 设置按钮位置 @@ -20,7 +20,7 @@ StartScene::StartScene() this->addChild(startBtn); // 继续游戏按钮 - resumeBtn = gcnew MyTextButton(L"继续关卡", [=]() { + resumeBtn = gcnew MyTextButton("继续关卡", [=]() { this->Continue(); }); // 设置按钮位置 @@ -33,7 +33,7 @@ StartScene::StartScene() this->addChild(resumeBtn); // 创建退出按钮 - auto exitBtn = gcnew MyTextButton(L"退出", [=]() { + auto exitBtn = gcnew MyTextButton("退出", [=]() { this->Exit(); }); // 设置按钮位置 diff --git a/PushBox/SuccessScene.cpp b/PushBox/SuccessScene.cpp index 83b1780..43c3ce2 100644 --- a/PushBox/SuccessScene.cpp +++ b/PushBox/SuccessScene.cpp @@ -4,13 +4,13 @@ SuccessScene::SuccessScene() { // 背景图片 - auto background = gcnew Sprite(L"res/success.jpg"); + auto background = gcnew Sprite("res/success.jpg"); this->addChild(background); // 回主菜单按钮 auto backBtn = gcnew Button(); - backBtn->setNormal(gcnew Text(L"回主菜单", Font(L"新宋体", 28, Font::Weight::Bold), DrawingStyle(Color::Black))); - backBtn->setMouseOver(gcnew Text(L"回主菜单", Font(L"新宋体", 28, Font::Weight::Bold), DrawingStyle(Color::Blue))); + backBtn->setNormal(gcnew Text("回主菜单", Font("新宋体", 28, Font::Weight::Bold), DrawingStyle(Color::Black))); + backBtn->setMouseOver(gcnew Text("回主菜单", Font("新宋体", 28, Font::Weight::Bold), DrawingStyle(Color::Blue))); backBtn->setPos(255, 350); // 设置回调函数 backBtn->setClickFunc([]() diff --git a/PushBox/logo.ico b/PushBox/logo.ico index d968a5487b482c95f84829ee25fa2cd74ae6dcb9..7d7427c7a2473e70f46adf6f3d759295e9d0aa29 100644 GIT binary patch literal 32883 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 literal 38078 zcmeI(K}rKL6oBFBC0vUOaqlg>f(Si^3thQYa3OjGU3&u2;=)A_;L?lKK`EGJ^Bx(~ zektiRh4&JE{>+dx9fsNXn$L%^><>?O!>~7gIvVSItS@7ojo<&2+uzII_t*2im5Koe zIKTl8aDW3G-~b0WzyS_$fCC)h00%h00S<70104AO4lEzeR@+j(-X6RAjSBy1=Lr7z zXWjqYf3ir{<-xy>TUHeQStRT7;9tirD+>QCl686Tuj7^#g?|>wx;(qi|KsMQyY>In zdt{mGU;H;;OXI&ev&=bzKmM6M^_GkO{O`@#%<=M{|Cv7ZmW%)V@6FlF@$#SlnLhQF zE7Skw{psrc>bO~5TpV=2-ht*;|9X7kNc_VHLkaK?;R^@jA4V8TfPV;I zI2ivh!cYSIL-@kM_=gdO65t=g7Y@chj4+e{{}P|`Kb!BRX72yskN+<3Kl7je{NLPx z-k4>M*YkH;U+~92b3XT$i~s!Z&DqTH@}K{iKJ}I>)Bo1zuhwV17MF+Jo&(C{U+#vs zYxVfQ-}OAje|zr#?Tjyb;(y7bbqoL2#LNEhFL|_X;oq8g*&qHTkJc^xTN5w)!@uOw zx`lsh;$?q5^IxxnU8h|K