私なら、スーさんご提案のとおり、カードAは0~5、カードBは6~9・・・カードZは125~129、のように、直列に番号を振った上で、TE[5]のような配列に5枚の手札の番号を格納したあと「SORT TE」で手札を昇順に並べかえます。
例えば次のようにして、同じ種類のカードが何枚あるかが分かります。
FOR I=0 TO 3:A=1:FOR J=I+1 TO 4
IF(TE[I] DIV 5)==(TE[J] DIV 5)THEN
A=A+1
ELSE
IF A>1 THEN ?TE[I] DIV 5,A
BREAK
ENDIF
NEXT J:NEXT I
同じ種類のカードが5枚あることの判定は、とても簡単で、次の条件を満足するか確認するだけです。
(TE[0] MOD 5)==0 && TE[4]==(TE[0]+4)
昨夜はカードの並び替えとそれに伴う番号の変更を行って力尽きたので、今朝から昨日のアドバイスを再読して実行しようとしましたが、数学力の無さからか疑問がいっぱいで、簡単には理解ができませんでした…orz。
Hanzoさんが書かれた式のFOR I=0 TO 3は何故3なのでしょうか?
そして、FOR J=I+1 TO 4も、+1とするのは何故でしょうか?(4は3+1だからというのは分かりますけど…。)
Hanzoさん以外の方でも、解説が可能な方はコメントをよろしくお願いします!
nobuさんは手札5枚だけでカードを決めようとしていますが途中の説明で「カードは全部で130枚あり、26種類のカードが5枚ずつ存在」と説明しています。
最初の5枚の事だけ考えるとあと125枚とのチェックが大変になるので最初にすべて用意してしまった方が楽になります。
DIM ALLCARD[130]
FOR I=0 TO 129 :ALLCARD[I]=I:NEXT
FOR I=0 TO 129
SWAP CARDS[I],CARDS[RND(130)]
NEXT
これで0~129までの数字が重複なくバラバラの順番で格納されます。
カードの交換を可能にしたいと思っていますが、どのようにしたら良いのか?困ってしまいました…。
まず、カードの選択はタッチ操作が一番良いと思いますけど、TOUCH OUT TM,TX,TYという式でタッチした座標を取得できるのですか?(TM,TX,TYは数値でなく、このままで良いのですか?)
次に、タッチされたカードを交換となりますが、条件文でタッチされた範囲を指定することになるのでしょうか?その場合、IF 0>TX<64 AND 144>TY<240 という感じにすれば良いのでしょうか?(範囲指定を使ったことがないので、正しいのか分かりません…。)
それとも、別の方法のほうが良いのでしょうか?
what is the key to this game? i'm a huge fan of touhou and have been teaching myself how to read Japanese so i can play it and understand what the characters are saying.