
ã²ãŒã ã¯ããŒããŒæéãšåŒã°ããŸãã 効ããã¶ã€ã³ãæ åœããŸããã éçºã¯ãC ++ã®cocos2dxãšã³ãžã³ã§è¡ãããŸããã
ã²ãŒã ãã¬ã€
åºç€ã¯ããããªã¹ã²ãŒã ã®ã¡ã«ããºã ããååŸãããŸãã åãåè§ã®æ°Žå¹³ããã³åçŽã®ç Žå£ïŒ4è¡é£ç¶ïŒãããŸããŸãªãã¬ã€ã€ãŒã®åªæãèœåãããŸããŸãªåå©æ¡ä»¶ãã²ãŒã ãè€éã«ããããŸããŸãªäžå¿«ãªç¬éãããã³åè§ãã¹ãè¿œå ããŸããã
建ç¯
MVC
ã²ãŒã ã³ãŒãã§äœ¿çšãããã¡ã€ã³ãã³ãã¬ãŒãã¯MVCïŒ Wikipediaã®èª¬æ ã Appleã®ããã¥ã¡ã³ã ïŒã§ãã ãã³ãã¬ãŒãã¯ãã¢ãã«ããã¥ãŒãã³ã³ãããŒã©ãŒã®3ã€ã®éšåã§æ§æãããŠããŸãã ã³ã³ãããŒã©ãŒã¯ãã¢ãã«ãšãã¥ãŒã®éã仲ä»ããŸãã ããã«ãåéšåã«ã¯ç¬èªã®è²¬ä»»ããããŸãã äŸã¯ãã²ãŒã ããŒãïŒã²ãŒã ã¯ãŒã«ãïŒã®å®è£ ã§ãã
1ïŒã¢ãã«ã ã¡ã€ã³ã²ãŒã ã®æ¬¡ã®ãšã³ãã£ãã£ãåºå¥ãããŸããïŒæ£æ¹åœ¢ãæ£æ¹åœ¢ããã®è©³çŽ°ã ã²ãŒã ã«ã¯ã²ãŒã ããŒãïŒ GameBoardViewDataSource ïŒããããåã»ã«ã¯åº§æšã«å¯Ÿå¿ããŠããŸãïŒããšãã°ïŒ 1ã1 ïŒãïŒ 32ã48 ïŒïŒã é»æ¿ã¯æ£æ¹åœ¢ã®ã³ã¬ã¯ã·ã§ã³ã§ãã ãã ããããã¯ããŒã¿ã¢ãã«ã§ãã ã¢ã€ãã ã¯åºæ¬çã«å°ããªããŒãã§ãã
2ïŒã³ã³ãããŒã©ãŒã ã²ãŒã ããŒãã®ã³ã³ãããŒã©ãŒïŒ GameBoardController ïŒã¯ãã¢ãã«ããã€æç»ãããã決å®ããŸãã 圌ã¯ãã¢ãã«ã®å éšæ§é ïŒé åããªã³ã¯ãªã¹ãïŒãç¥ããŸããã 圌ã¯çŽ°èã®æ°ãšå现èã«é¢ããæ å ±ãåŸãæ¹æ³ã ããç¥ã£ãŠããŸãã cocos2dxã®ã³ã³ããã¹ãã§ã¯ãããã¯Nodeã¯ã©ã¹ã®åå«ã§ãã
3ïŒãã¬ãŒã³ããŒã·ã§ã³ïŒã¹ãã©ã€ãïŒã ãã¥ãŒã¯æ£æ¹åœ¢ïŒæç»ã³ãŒãïŒãæç»ããŸãããããŒã¿æ§é ã«ã€ããŠã¯äœãç¥ããŸããã cocos2dxã®ã³ã³ããã¹ãã§ã¯ãSpriteã¯ã©ã¹ã§ãã ã³ã³ãããŒã©ãŒã«ã¯ãã¬ã³ããªã³ã°çšã®ããŒã¿ïŒãã¯ã¹ãã£ãäœçœ®ïŒãæäŸããã¹ãã©ã€ãã®ã³ã¬ã¯ã·ã§ã³ãå«ãŸããŠããŸãã
ã²ãŒã ã®éçºã§ã¯ãããã·ãMVCãäž»ã«äœ¿çšãããŸãã-ã³ã³ãããŒã©ãŒèªäœãå¿ èŠã«å¿ããŠã¢ãã«ããããŒã¿ãååŸããŸãã
ã²ãŒã ã«ã¯ã¡ã€ã³ã³ã³ãããŒã©ãŒïŒ GameWorldController ïŒããããã²ãŒã ããŒãã®ã³ã³ãããŒã©ãŒãšã¢ãã¡ãŒã·ã§ã³ã³ã³ãããŒã©ãŒã«ç¶æ ãæŽæ°ããããæ瀺ããŸãã ããã«ã圌ã¯ã²ãŒã ã·ã¹ãã ã®ã¹ããŒã¿ã¹ãæŽæ°ããŸãã
1ïŒWin-loseã·ã¹ãã ïŒ WinGameSystem ïŒ-ãã¬ã€ã€ãŒãåã£ããšããšè² ãããšãã決å®ããŸãã
2ïŒã²ãŒã ã€ãã³ãã®ã·ã¹ãã -æªæã®ããã€ãã³ãããã€éå§ãããã決å®ããŸãïŒã²ãŒã ã®é床ãäžããããã€ãã®äžèŠãªè©³çŽ°ãæšãŠãŸãïŒã
3ïŒã²ãŒã ããžãã¯ã®ã·ã¹ãã ïŒ TetrisLogicSystem ïŒ-æ£æ¹åœ¢ã®è¡ãçµã¿ç«ãŠãããŠãããã©ããã確èªããŸãã4ã€ã®åãæ£æ¹åœ¢ãåçŽãŸãã¯æ°Žå¹³ã«äžŠãã§ããŸãã
4ïŒã¹ãã«ã·ã¹ãã ïŒ SpellRechargeSystem ïŒ-ã¹ãã«ã®ã¹ããŒã¿ã¹ãç£èŠããŸãã
5ïŒçŸåšã®ãã¬ãŒã€ãŒéšåã®å¶åŸ¡ã·ã¹ãã ïŒ CurrentDetailController ïŒ-éšåãå¶åŸ¡ãã1ã¹ãããäžãããªã©ã
6ïŒãã¹ã®ã¹ããŒã¿ã¹ãç£èŠããã·ã¹ãã ã
ã²ãŒã ãã¬ã€ã®åèŠçŽ ã«ã¯ç¬èªã®ã·ã¹ãã ããããŸãã ã¢ãã¡ãŒã·ã§ã³ã³ã³ãããŒã©ãŒã¯ãã·ã¹ãã ããšã«åå¥ã®ã³ã³ãããŒã©ãŒã§æ§æãããŠããŸãã ãããã¯ãActionã¯ã©ã¹ãšãã®ãµãã¯ã©ã¹ã«åºã¥ããŠããŸãã éåžžãã¢ãã¡ãŒã·ã§ã³ã®åŸãäœããã®çš®é¡ã®ã€ãã³ãïŒãã€ã³ãã®å¢å ãæäžè¡ã®åé€ãªã©ïŒãçºçãããããã·ã¹ãã ã¯ã³ã³ãããŒã©ãŒã«ã³ãŒã«ããã¯é¢æ°ïŒããšãã°ãc ++ 11ã®ã©ã ãïŒãéä¿¡ããŸãã ããã¯ãã¢ã¯ãã£ããªMVCã®äœ¿çšäŸã§ããã¢ãã«èªäœãå¿ èŠã«å¿ããŠã³ã³ãããŒã©ãŒã«ã¢ã¯ã»ã¹ããŸãã
ãã®ãããªã·ã¹ãã ã®å©ç¹ã¯ãæè»æ§ã§ãã æ°ããã²ãŒã ãã¬ã€èŠçŽ ãè¿œå ããã«ã¯ãæ°ããã·ã¹ãã ãšå Žåã«ãã£ãŠã¯ã¢ãã¡ãŒã·ã§ã³ã³ã³ãããŒã©ãŒãè¿œå ããŸãã æ¬ ç¹ã¯ããã®è€éããšå®è£ ã®ããã®ã³ãŒãã®éã§ãã æŽæ°é åºã«ãããã·ã¹ãã éã§æé»çãªäŸåé¢ä¿ãçºçããå ŽåããããŸãã
ãããŒ
ã²ãŒã ã®éçºã§ã¯ãLonerãã³ãã¬ãŒãïŒ ServiceLocator ïŒããã䜿çšãããŸããã ãœãŒã¹ã³ãŒãã§ã¯ãããã¯çŽç²ãªLonerã§ã¯ãªããã¢ã¯ã»ã¹ã¡ãœããã«ãã£ãŠé ãããã°ããŒãã«å€æ°ã§ãã å®éãããã¯ã¢ãã«ã®ã³ã³ããã§ããã ããšãã°ããã¬ãŒã€ãŒããããäžã®ã¬ãã«ãéžæãããšãããŒããŒïŒ GameLogicLoader ïŒãå¿ èŠãªã¢ãã«ïŒçŸåšã®ã¬ãã«ãã·ã¹ãã ã®ããŒã¿ïŒããã®ã³ã³ãããŒã«ããŒãããŸãã ãããŠãã³ã³ãããŒã©ãŒã¯ããããå¿ èŠãªã¢ãã«ãååŸããŸãã ã³ã³ãããŒã©ãŒã§ã¢ãã«ãçŽæ¥äœæããããšã¯å¯èœã§ãããããã«ããè¿œå ã®äŸåé¢ä¿ãçºçããŸãã
å·¥å Ž
ãã¡ã¯ããªãŒïŒãã¡ã¯ããªãŒã¡ãœããïŒãã³ãã¬ãŒãã¯ãã²ãŒã ã§ãã䜿çšãããŸããã²ãŒã ã«ã¯7ã€ã®ã·ãŒã³ïŒã¹ã¯ãªãŒã³ïŒããããåã¹ã¯ãªãŒã³ã«ãã¡ã¯ããªãŒãäœæãããå¿ èŠãªã¢ãã«ãããŒãããŠã³ã³ãããŒã©ãŒããã·ãŒã³ã°ã©ããåéããŸãã ããšãã°ãã¯ã©ã¹LoadingGameSceneFactory ã
ãªãã¶ãŒããŒ
ãŸãããã¿ãŒã³Observerã䜿çšããŸããã ç¹å®ã®ã€ãã³ãïŒãããã¢ããïŒã«ãã£ãŠè¡šç€ºãããé衚瀺ã®èŠçŽ ãããã·ãŒã³ã§ã¯ããªããžã§ã¯ããäœæããããªãã¶ãŒããŒïŒãããã¢ããïŒã¯ç¹å®ã®ã¡ãã»ãŒãžããµãã¹ã¯ã©ã€ãããŸãã 次ã«ãã€ãã³ããçºçãããšããã®ãªããžã§ã¯ãã«éç¥ãéä¿¡ããããªããžã§ã¯ãã¯å¿ èŠãªãªãã¶ãŒããŒã«éç¥ãéä¿¡ãããããã¢ããã衚瀺ãããŸãã ããšãã°ã RegulateSoundPopUpã¯ã©ã¹ã¯ãåæåæã«GamePopUpsControllerããã®ã¡ãã»ãŒãžããµãã¹ã¯ã©ã€ãããŸãã
æŠç¥
ãŸããStrategyãã³ãã¬ãŒãã䜿çšããŸããã ããšãã°ããã¹ã«ãã£ãŠè¡åãç°ãªããŸããäœãããªã人ãããã°ãå±éºããéãã人ãããŸãã ãããã®åäœãå®è£ ããããã«ãäžé£ã®æŠç¥ã䜿çšãããŸããã æŠç¥ã®ã³ã¬ã¯ã·ã§ã³ãäœæãããå¿ èŠãªãã®ãèšå ¥ãããŸãã ç°ãªãæŠç¥ãè¿œå ããããšã«ãããäžåžã«ç°ãªãåäœãè¿œå ããŸãã ããšãã°ã AIMovementStrategyã¯ã©ã¹ã¯ããã¹ã«ç§»åèœåãäžããæŠç¥ã®1ã€ã§ãã
è¿œå ã®ã©ã€ãã©ãªã
ãã¬ã€ã€ãŒã®çµ±èšãåéããããã«ãGoogle Analyticsã䜿çšããããšã決å®ãããŸããã iOSããã³Androidçšã®Googleã¢ããªãã£ã¯ã¹SDKããããŸãããWindowsã®å®è£ ã¯ãããŸããã§ããã SDKããã¥ã¡ã³ããèªãã åŸã Google Analytics Measurement Protocolã䜿çšããããšã決å®ãããŸããã ãã®ãããªãããã³ã«ã®äœ¿çšäŸïŒ GATrackerpp ïŒã¯ãã€ã³ã¿ãŒãããã§curlã©ã€ãã©ãªã䜿çšããŠçºèŠãããŸããã ãã®çµæãåæãéä¿¡ããã¯ãã¹ãã©ãããã©ãŒã ã®å®è£ ã«ãªããŸãã ãã ããæ å ±ãéä¿¡ããã«ã¯ãGUIDæšæºã«åŸã£ãŠäžæã®ãã¬ãŒã€ãŒèå¥åãå¿ èŠã§ãã ãŸããã¯ãã¹ãã©ãããã©ãŒã ã§GUIDèå¥åãçæããããã®ã©ã€ãã©ãªïŒcrossguidïŒãèŠã€ããŸããã 確ãã«ãAndroidã®æåŸã«ã¯ããã¹ãŠã®äººã«1ã€ã®GUIDã䜿çšããããšã決å®ãããŸããã C ++ãJavaã«æ¥ç¶ããæ¹æ³ãããããŸããã§ããã
ã¬ãã«èšå®ã§xmlãã¡ã€ã«ã解æããããã«ãã¯ãã¹ãã©ãããã©ãŒã ã®pugiXMLããŒãµãŒã䜿çšããããšã決å®ãããŸããã ããã¯ã倧ããªãã¡ã€ã«ã解æããå¿ èŠããªããcocos2dxãã©ãŒã©ã ã§ã¢ããã€ã¹ãããããã«éžæãããDOMããŒãµãŒã§ãã
移æ€æ©èœã

æåã¯ãéåžžã®ãŠã£ã³ããŠã¢ããªã±ãŒã·ã§ã³ã§ãããŠã£ã³ããŠã®éçºãè¡ãããŸããã ãã®åŸãwindowsã¹ãã¢çšã®ããŒããäœæãããŸãã-windowsRTäžã ãã®åŸãã¢ã³ããã€ãçšã®ããŒãžã§ã³ãäœæãããŸããã ã¯ãã¹ãã©ãããã©ãŒã ãããžã§ã¯ããæŽçããããã«ãgitã®ãã©ã³ãã·ã¹ãã ãéžæãããŸããã ãã©ãããã©ãŒã ããšã«åå¥ã®ãã©ã³ããäœæãããŸãã äž»ãªãšã©ãŒã¯ããã©ã³ãã®ã³ãŒãããŒã¹ãå°ãç°ãªãããšã§ããã cocos2dxãªããžããªãªã©ã®åäžã®ã«ãŒãã«ã¯ãããŸããã åŸã§ãããªããã»ããµã³ãã³ãããã¡ã¯ããªã¯ã©ã¹ïŒãã¡ã¯ããªãã³ãã¬ãŒãïŒã«ã«ãã»ã«åããªãããæåã«C ++ããªããã»ããµã䜿çšã§ããããšãåŠã³ãŸããã ãããããã©ã³ãã¯ãŸã æçšã§ããã ãã©ãããã©ãŒã ãç°ãªãã°ãã°ã©ãã£ãã¯ãã€ã³ã¿ãŒãã§ã€ã¹èŠçŽ ã®äœçœ®ãç°ãªããŸãã åæã«ãAndroidã®ãã¹ãŠã®ã³ãŒãã¯æåã«Windowsã§ãã¹ãããã³ãããã°ããããã®åŸAndroidåãã«ãã«ããããŸããã
ãã1ã€ã®éèŠãªãã€ã³ãã¯ãç°ãªããã©ãããã©ãŒã ã®ãã¡ã€ã«ã·ã¹ãã ã«ãã¡ã€ã«ãä¿åããæ¹æ³ãæ€çŽ¢ããããšãããã³Androidã§apkãã¡ã€ã«ãã¢ãŒã«ã€ãããããšã§ããã
ãµãŠã³ã圢åŒã¯åé¡ãåŒãèµ·ãããŸããã§ãã-ãã¹ãŠã®ãã©ãããã©ãŒã ã§mp3ã䜿çšãããŸããã
éçºäžã®å¥åŠãªç¹ïŒ
1ïŒãã¹ãã€ã³ã¯ãªã¡ã³ãïŒi ++ïŒã1ã€ã®ã¯ã©ã¹ã§ã³ã³ãã€ã«ãããªãã£ããããäºåã€ã³ã¯ãªã¡ã³ãïŒ++ iïŒãå®è¡ããå¿ èŠããããŸãã-Androidã®ããŒãžã§ã³ã
2ïŒãšã³ãžã³ã¯ããªã«æåã®ãã¹ããµããŒãããŠããŸããã§ããã WindowsãŠãŒã¶ãŒåããã·ã¢èªã§èšè¿°ãããŠããå Žåãã²ãŒã ã¯ãšã©ãŒãåŒãèµ·ãããèµ·åããŸããã
3ïŒã¡ãœããã®å®è£ ããšã³ãžã³ã«ãªãããããµãŠã³ããæ©èœããªãããšãå€æããã å¥ã®ã¯ã©ã¹ã䜿çšããå¿ èŠããããŸããã
èŠçŽïŒ
çµè«ãšããŠã䜿çšãããäž»ãªãã¿ãŒã³ïŒMVCãFactoryãLonerãObserverãStrategyã«æ³šç®ããããšæããŸãã äž»ãªè¿œå ã©ã€ãã©ãªã¯curlãšpugiXMLã§ããã ã²ãŒã ã®éçºã«ã¯6ãæããããŸããã ãããã®ïŒ
- 2ã3é±éãã¡ã«ããã¯ã«ã€ããŠèããæè¡ä»æ§ãäœæãã
- ã¢ãŒããã¯ãã£ãçèããã¢ãã«ã¯ã©ã¹ãèšè¿°ãã1ãæã
- ãšã³ãžã³ãæ§ç¯ããã¬ã³ããªã³ã°ãšã¢ãã¡ãŒã·ã§ã³ã®ã¯ã©ã¹ãäœæããæ
- ã²ãŒã ã®ãã©ã³ã¹ããã¹ãããŠèª¿æŽãã1ãæã
- WindowsRTãžã®ç§»æ€ã«2ã3é±éïŒãã«ã¹ã¯ãªãŒã³ã§ã®ã²ãŒã ïŒ
- Androidãžã®ç§»æ€ã«2ã3é±éïŒãããžã§ã¯ããæ§ç¯ããããã®ç°å¢ãèšå®ããã·ãã¥ã¬ãŒã¿ãŒã§ãã¹ãããŸãïŒã
ãããžã§ã¯ãå šäœã®ãœãŒã¹ã³ãŒãã¯ããã§ããã£ã«ã¿ãŒä»ãã®Windowsãããžã§ã¯ãïŒãœãŒã¹ãã¡ã€ã«ã®ãã£ã¬ã¯ããªïŒã¯ããã§è¡šç€ºã§ããŸã ã
æåŸã«ãç§ã¯ã²ãŒã ããªãªãŒã¹ãããããžã§ã¯ãã«åãçµãã ãšãã«å€ãã®çµéšãšåã³ãåŸãŸããã
ãæž èŽããããšãããããŸããã