OK | |
OK | |
NG (※数字で始まる変数名は使用できない) | |
NG (※命令語と同じ変数名は使用できない) | |
OK (※PRINT1という命令はないため使用できる) |
DIM A[3] | DIMを使って宣言することでA[0]〜A[2]の3つの配列変数が使用可能(※配列変数は宣言無しで使用することはできない) 番号は0番から始まっているためDIM A[3]で3つの配列変数を確保しても3つ目はA[2]になる |
A[0]=10 | 要素0の配列変数A[0]に10を代入 |
A[1]=15 | 要素1の配列変数A[1]に15を代入 |
A[2]=20 | 要素2の配列変数A[2]に20を代入 |
A[3]=25 | 要素3の配列変数A[3]に25を代入 A[3]は宣言されている配列変数の範囲外なのでSubscript out of rangeエラーとなる |
FOR I=0 TO 9 S[I]=100 NEXT |
ACLS | 画面の消去(ACLSは表示関係をすべて初期化できる) |
BACKCOLOR #GREEN | 背景色を緑にする |
VAR C[52],I,S=500 | 変数の宣言(配列S[]を52個確保、Sの初期値は500) |
FOR I=0 TO 51 | ループを0から始めて51まで(52回分)繰り返す |
C[I]=I | 配列C[]にカード番号を0から順に割り振る |
NEXT | ループの終了 |
FOR I=0 TO S | ループ1から始めてSの値まで(S回分)繰り返す |
SWAP C[RND(52)],C[RND(52)] | 52枚のカードからランダムな2枚を交換することでシャッフルを行う |
NEXT | ループの終了 |
FOR I=0 TO 51 | ループを0から始めて51まで(52回分)繰り返す |
CARD C[I] | カード番号Iのカードを表示(表示は後に定義しているCARD命令で行う) |
NEXT | ループの終了 |
END | プログラムの終了 |
DEF CARD C | カードを表示するCARD命令を定義 |
VAR A,B,C$ | 変数を宣言(これら3つの変数はDEF〜END内での宣言であるためローカル変数となる) |
A=C MOD 13 | 変数Aに「Cを13で割った余り」が入る(これがカードの数字の部分の元となる) |
B=C DIV 13 | 変数Bに「Cを13で割った商(整数値)」が入る(これがカードのマークの部分の元となる) |
IF A==0 THEN | 変数Aの値が0ならば |
C$="A" | 変数C$に"A"を代入(カードの数字の部分が0ならば「A(エース)」となる) |
ELSEIF A<10 THEN | 変数Aの値が10より小さいならば (ELSEIFと記述することですでに判定しているAの値が0の場合を除外できる) |
C$=STR$(A+1) | 変数C$にA+1を文字列化したものを代入 (AではなくA+1としているのはカードの数字が0が「A」であるため数字が1のカードが「2」になるから) |
ELSE C$=MID$("JQK",A-10,1) | それ以外の時は変数C$に"J"、"Q"、"K"のいずれかを代入 (MID$においてA-10としているのは カードの数字が10の時に"JQK"の最初(起点となる0番目)の文字である"J"を選択 カードの数字が11の時に"JQK"の1番目の文字である"Q"を選択 カードの数字が12の時に"JQK"の2番目の文字である"K"を選択のため) |
ENDIF | IF命令の終了 |
C$=MID$("♠♥♣♦",B,1)+C$ | 変数C$にトランプマークを追加する (MID$によってB(トランプマーク)が0の時はスペード、1の時はハート、2の時はクラブ、3の時はダイヤが選択される) |
COLOR (B MOD 2)*2+1 | 表示色を(B MOD 2)*2+1に設定 ((B MOD 2)*2+1の値はBが0の時は1、Bが1の時は3、Bが2の時は1、Bが3の時は3となり スペードのカードは黒、ハートのカードは赤、クラブのカードは黒、ダイヤのカードは赤となる) |
PRINT C$, | 変数C$(カード)を表示(最後に「,」が付いているのはカード同士がくっつかないようにするため) |
END | 自作命令CARDの定義を終了 |
VAR A,I,K=64,X[K],Y[K] FOR I=0 TO K-1 SPSET I,345 NEXT SPCOLOR K-1,#BLUE @LOOP FOR I=0 TO K-1 SPOFS I,X[I],Y[I] NEXT STICK OUT SX,SY PUSH X,X[K-1]+SY*4 PUSH Y,Y[K-1]-SY*4 A=SHIFT(X) A=SHIFT(Y) VSYNC GOTO @LOOP |
OPTION STRICT VAR SCORE=0 ※変数SOCREは使用可能になり0という初期値が代入される |
OPTION STRICT SCORE=0 ※変数SOCREは正しく宣言されてないためUndefined variableというエラーが出る |
DEF SLOT() VAR A$,B,I FOR I=0 TO 3 A$=STR$(I)+":_SLOT" B=CHKVAR(A$) IF B THEN VAR(A$)=1 _SLOT=0 IF B && !VAR(A$) THEN BREAK NEXT RETURN I END |
VAR A=2 VARA DEF VARA VAR A=1 ?A,VAR("A"),VAR("0:A"),VAR(STR$(SLOT())+":A") END |
VAR A[1000],B[0] FOR I=0 TO 999 A[I]=RNDF() NEXT B=A |
WHILE LEN(A) Z=POP(A) WEND |
WHILE LEN(VAR(A$)) Z=POP(VAR(A$)) WEND |
DEF ERASER V VAR Z WHILE LEN(V) Z=POP(V) WEND END |
DEF SUFFIX(V) VAR A A=V>0<3 IF A THEN V=0.5:A=V*2+1 RETURN A END |
DEF ERASE V VAR Z,Z$ WHILE LEN(V) IF V[0]>0<3 THEN Z=POP(V) ELSE Z$=POP(V) WEND END |
VAR A[1000],B[0] FOR I=0 TO 999 A[I]=RNDF() NEXT A=B |
DEF INITR() VAR B[0] RETURN B END |
DEF INITA(A) IF !LEN(A) THEN RETURN A VAR V$[0],V%[0],V#[0] RETURN VAR("V"+"$%#"[SUFFIX(A[0])]) END |
DEF INITS(A$) VAR V[0],V$[0],V%[0],V#[0],Z$="V"+A$ RETURN VAR(Z$) END |
DEF INIT(A) VAR V$[0],V%[0],V#[0],Z[0] Z=VAR("V"+"$%#"[SUFFIX(A)]) PUSH Z,A RETURN Z END |
RETURN (プチコン3号講座のページにもどる) RETURN *MAIN (トップページにもどる)