これを試そうと思っていたら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 crdSuit return __suit #modcfunc crdNumber return __number #modcfunc crdName return suits(__suit)+numbers(__number) #modinit int _suit,int _number __suit=_suit __number=_number return #global ;トランプの束を用意 dimtype cards,5 foreach suits@Card: i=cnt foreach numbers@Card newmod cards,Card,i,cnt loop loop ;トランプを表示 foreach cards mes crdName(cards.cnt),1 if (cnt+1)\length(numbers@Card)=0: mes ;カードのインデックス cardIndex.cnt=cnt loop mes ;トランプの束をシャッフル xsShuffle xs,cardIndex,mangleIndex foreach mangleIndex mangles.cnt=cards(mangleIndex.cnt) loop mes ;シャッフルしたトランプの束を表示 foreach mangles mes crdName(mangles.cnt),1 if (cnt+1)\length(numbers@Card)=0: mes loop mes ;ソートの条件(並べ方)を定義 ;数字降順>スート昇順とする foreach mangles compares.cnt=crdNumber(mangles.cnt)*length(suits@Card)+length(suits@Card)-1-crdSuit(mangles.cnt) loop ;トランプの束を決めた条件で並び替え sortval compares,1 foreach compares sortget i,cnt sorted.cnt=mangles.i loop ;並び変えたトランプの束を表示 foreach sorted mes crdName(sorted.cnt),1 if (cnt+1)\length(suits@Card)=0: mes loop mes