利用win32控制台程序和boost::signals2库,也能写出有意思的演示小游戏。 先贴代码,后做解释: #include "stdafx.h" #include <iostream> #include <boost/signals2.hpp> using namespace std; typedef int Status; Status CapriconStation(const int power, const int enhanceFactor) { if( power >= 10) { int nNewPower = power*enhanceFactor; cout<<"Your power has alreay been enhaned by CapriconStation, now is: "<<nNewPower<<endl; return 1; } else { cout<<"CapriconStation cannot enhance your power, please goto next station!/n"; return 0; } } Status ScorpioStation(const int power, const int enhanceFactor) { if( power > 0 && power < 10) { int nNewPower = power*enhanceFactor; cout<<"Your power has alreay been enhaned by ScorpioStation, now is: "<<nNewPower<<endl; return 1; } else { cout<<"ScorpioStation cannot enhance your power, please goto next station!/n"; return 0; } } Status RecycleStation(const int power, const int enhanceFactor) { if( power < 0) { cout<<"Your left power is not normal! You are recycled by RecycleStation!/n"; cout<<"You are Dead!/n"; return 0; } } //Combiner: DistributeRequestSystem typedef int FullfilledRequest; struct DistributeRequestSystem { typedef FullfilledRequest result_type; template<typename InputIter> result_type operator()(InputIter first, InputIter last) { while(first != last) { if(nSuccessStatus == *first) return nSuccessStatus; ++first; } return 0; } const static int nSuccessStatus = 1; }; int main() { boost::signals2::signal<int (const int, const int), DistributeRequestSystem> sig_5; sig_5.connect(&CapriconStation); sig_5.connect(&ScorpioStation); sig_5.connect(&RecycleStation); cout<<"The responding status: "<<sig_5(8,5)<<endl; cout<<"The responding status: "<<sig_5(15,10)<<endl; cout<<"The responding status: "<<sig_5(-1,10)<<endl; return 0; } 运行结果: