これを試そうと思っていたらHSP3.6の不具合にぶつかった。
これを試そうと思っていたらHSP3.6の不具合にぶつかった。
#runtime "hsp3cl"#cmpopt varinit 1#include "XorShift.as";https://github.com/yosgspec/XorShift128-on-8languages/blob/master/HSP/XorShift.as;乱数エンジンnew@XorShift xs;トランプカードモジュールsuits@Card="△","▼","□","◆"numbers@Card="A","2","3","4","5","6","7","8","9","10","J","Q","K"#module Card __suit,__number#modcfunc crdSuitreturn __suit#modcfunc crdNumberreturn __number#modcfunc crdNamereturn suits(__suit)+numbers(__number)#modinit int _suit,int _number__suit=_suit__number=_numberreturn#global;トランプの束を用意dimtype cards,5foreach suits@Card: i=cntforeach numbers@Cardnewmod cards,Card,i,cntlooploop;トランプを表示foreach cardsmes crdName(cards.cnt),1if (cnt+1)\length(numbers@Card)=0: mes;カードのインデックスcardIndex.cnt=cntloopmes;トランプの束をシャッフルxsShuffle xs,cardIndex,mangleIndexforeach mangleIndexmangles.cnt=cards(mangleIndex.cnt)loopmes;シャッフルしたトランプの束を表示foreach manglesmes crdName(mangles.cnt),1if (cnt+1)\length(numbers@Card)=0: mesloopmes;ソートの条件(並べ方)を定義;数字降順>スート昇順とするforeach manglescompares.cnt=crdNumber(mangles.cnt)*length(suits@Card)+length(suits@Card)-1-crdSuit(mangles.cnt)loop;トランプの束を決めた条件で並び替えsortval compares,1foreach comparessortget i,cntsorted.cnt=mangles.iloop;並び変えたトランプの束を表示foreach sortedmes crdName(sorted.cnt),1if (cnt+1)\length(suits@Card)=0: mesloopmes