初心者にも役に立つかもしれないサンプル的、および部品的なプログラムをここに集積しましょう。
最初の一歩。文字列を表示する場合はダブルクォーテーションで囲む必要があります。
なお、ダブルクォーテーションはコンソールに表示されません。
- PRINT ”Hello,world!”
ダブルクォーテーションをコンソールに表示する場合はCHR$()関数を使用する必要があります。
- PRINT CHR$(34)
プチコンが個人情報を抽出して喜ぶプログラムです。
- INPUT ”アナタノ ナマエハ” ; NAME$
- INPUT ”オトシハ イクツテ゛スカ” ; AGE
- PRINT ”アナタノ ナマエハ ” ; NAME$ ; ” テ゛”
- PRINT ”オトシハ ” ; AGE ; ” サイ テ゛スネ”
- PRINT ”コシ゛ンシ゛ョウホウヲ オイシク イタタ゛キマシタ、 ククク”
- WAIT 30
524287まで0から順に数えていきます。
- @LOOP
- PRINT A
- A=A+1
- GOTO @LOOP
現在の時間を表示するだけのプログラム。
- @TIME
- LOCATE 0,0:PRINT”Р”;TIME$
- VSYNC 60
- GOTO @TIME
一行でAボタンの入力をまつプログラム。 16のところをいじると、どのボタンの入力待ちでも出来ます。
- FOR I=0 TO 1:I=BUTTON()==16:NEXT
FOR文を用いてブロックIFを実装しています。
- FOR I=1 TO A
- ?”Block IF”
- NEXT
この場合、Aの部分が条件式となり、?”Block IF”の部分が処理となります。
下画面にスプライトを表示するサンプルは以下の通り。付属のエディタ等で CHR リソースを作成しておく必要あり。(例ではファイル名 "TCHR01")
- VISIBLE 1,1,1,1,1,1
- PNLTYPE ”OFF”
- SPPAGE 1
- LOAD”SPS0:TCHR01”,FALSE
- SPSET 0,0,0,0,0,0
- SPOFS 0,100,100
- VSYNC 600
INPUTで文字列を取得し、それでEXECするプログラム。
- INPUT A$
- EXEC A$
ライオネルさんの「新しい無限ループ?」と同じです。
- ’−−−−−−−−−−−−−−−−−−−−−−−−−−−
- ’ルーフ゜ないのしょりをかく
- ’−−−−−−−−−−−−−−−−−−−−−−−−−−−
- EXEC”このフ゜ロク゛ラムのファイルめい”
ファイル名は「PRG:TEST」にしてください。
- PRINT A
- A=A+1
- EXEC”TEST”
サブルーチンは単独では動きません。自作のプログラムに混ぜて使います。
- @GETBTN
- BTN=BUTTON()
- TRG=(NOT OLD_BTN)AND BTN
- OFFTRG=OLD_BTN AND(NOT BTN)
- REP=0
- REPCNT=REPCNT+1
- IF OLD_BTN!=BTN THEN REPCNT=0
- IF REPCNT==0 THEN REP=BTN:GOTO @_GETBTN0
- IF REPCNT<30 GOTO @_GETBTN0
- IF (REPCNT−30)%5==0 THEN REP=BTN
- @_GETBTN0
- OLD_BTN=BTN
- RETURN
- CLEAR:CLS:S=0
- @LOOP
- GOSUB @GETBTN
- IF (REP AND 8) THEN S=(S+1)%70
- IF (REP AND 4) THEN S=(S−1+70)%70
- IF (TRG AND 16) THEN BEEP S
- LOCATE 0,0:PRINT S;” ”
- VSYNC 1
- GOTO @LOOP
- @OKIKAE
- L1$=H1$:L2$=H2$:L3$=H3$
- S1=LEN(L2$):S2=LEN(L3$)
- FOR RI=0 TO LEN(L1$)−1
- M1$=MID(L1$,RI,1)
- M2$=MID(L2$,S3,1)
- IF M1$!=M2$ THEN S3=0:M3$=””
- IF M1$==M2$ THEN S3=S3+1:M3$=M3$+M1$
- IF M3$==L2$ THEN F1=1
- IF F1 THEN M4$=MID$(L1$,0,RI−LEN(L2$)+1):S4=LEN(M4$+L2$):S5=LEN(L3$)−LEN(L2$):M5$=MID$(L1$,S4,255)
- IF F1 THEN M6$=M4$+L3$+M5$:L1$=M6$:RI=RI+S5−1:F1=0
- NEXT
- R1$=L1$
- RETURN
- CLEAR:CLS
- H1$=”アカン”
- H2$=”ア”
- H3$=”オ”
- GOSUB @OKIKAE
- ?R1$
- @MIDL
- L1$=H1$:L2$=H2$:L3$=H3$
- S1=VAL(L2$)
- S2=LEN(L1$)
- M1$=MID$(L1$,0,S1)
- FOR RI=0 TO S1−S2−1
- M1$=M1$+” ”
- NEXT RI
- M2$=MID$(L1$,S1+1,255)
- M3$=M1$+L3$+M2$
- R1$=M3$
- RETURN
- CLEAR:CLS
- H1$=”タラコ”
- H2$=”1”
- H3$=”ハ゛ス”
- ?H1$
- GOSUB @MIDL
- ?R1$
まず、このサブルーチンを呼ぶ前に DIM B(12) と配列を宣言しておいてください。
などとすることで、上ボタンが押された瞬間だけ THEN 以降を実行するということもできます。
- @BTN
- B=BUTTON():BA=1
- FOR I=0 TO 11
- IF B AND BA THEN B(I)=B(I)+1
- IF (B AND BA)==0 THEN B(I)=0
- BA=BA*2:NEXT:RETURN
- CLEAR:CLS
- DIM B(12)
- @LOOP
- VSYNC 1
- GOSUB @BTN
- FOR I=0 TO 11
- LOCATE 0,I:?B(I);” ”
- NEXT
- GOTO @LOOP
- @BNKT
- F1=0:S1=0:M3$=””
- FOR RI=0 TO LEN(H$)−1
- F1=0
- IF M1$==”,”THEN L$(S1)=M3$:S1=S1+1:M3$=””:F1=1
- M1$=MID$(H$,RI+1,1)
- M2$=MID$(H$,RI,1)
- IF F1==0 THEN M3$=M3$+M2$
- NEXT
- L$(S1)=M3$:S1=S1+1:M3$=””:F1=1
- H$=””
- RETURN
- @MIDL2
- GOSUB @BNKT
- M1$=MID$(L$(0),0,VAL(L$(1)))
- FOR RI=LEN(M1$) TO VAL(L$(1))−1
- M1$=M1$+” ”
- NEXT
- M2$=MID$(L$(0),LEN(M1$)+LEN(L$(2)),255)
- M3$=M1$+L$(2)+M2$
- R1$=M3$
- RETURN
- CLEAR:CLS
- H$=”アイウエオ,2,シテル”
- GOSUB @MIDL2
- ?R1$
- @LOOP
- GOTO @LOOP
- @COLBW
- FOR P=0 TO 1
- BGPAGE P
- SPPAGE P
- GPAGE P
- FOR I=0 TO 255
- COLREAD(”SP”,I),R,G,B
- COLSET ”SP”,I,HEX$(FLOOR((R+G+B)/3),2)*3
- COLREAD(”BG”,I),R,G,B
- COLSET ”BG”,I,HEX$(FLOOR((R+G+B)/3),2)*3
- COLREAD(”GRP”,I),R,G,B
- COLSET ”GRP”,I,HEX$(FLOOR((R+G+B)/3),2)*3
- NEXT
- NEXT
- RETURN
変数 | 意味 |
X | 始点X |
X2 | 終点X |
Y | 始点Y |
Y2 | 終点Y |
- X2=0
- X=0
- Y2=0
- Y=0
- ’−−−−−−−−−−−−−−−−−−−−
- @RING
- BX=0:BY=0
- HANKEIX=ABS(X2−X)
- HANKEIY=ABS(Y2−Y)
- XS=HANKEIX/2
- YS=HANKEIY/2
- FOR G=0 TO 360
- X4=COS(RAD(G))*(XS)+X+XS
- Y4=SIN(RAD(G))*(YS)+Y+YS
- IF BX==0 AND BY==0 THEN BX=X4:BY=Y4
- GLINE BX,BY,X4,Y4,COL
- BX=X4:BY=Y4
- NEXT
- X4=COS(RAD(0))*(XS)+X+XS
- Y4=SIN(RAD(0))*(YS)+Y+YS
- GLINE BX,BY,X4,Y4,COL
- RETURN
PUT$に文字列、PUTX,PUTYに位置(1ドット単位)PUTCに文字色を入れて呼び出すと文字列をグラフィック面に描画します。
- PUT$=”HELLO WORLD!”
- PUTX=80:PUTY=96
- GOSUB @PUTSTR
- END
- @PUTSTR
- DRAWX=PUTX:DRAWY=PUTY:DRAWC=PUTC
- FOR I=0 TO LEN(PUT$)−1
- GPUTCHR DRAWX,DRAWY,”BGF”,ASC(MID$(PUT$,I,1)),DRAWC,1
- DRAWX=DRAWX+8
- IF DRAWX>248 THEN DRAWX=DRAWX−248:DRAWY=DRAWY+8
- NEXT
- RETURN
使用している変数やラベル名は全てHT_*
前半部分はサンプル
- ACLS:CLEAR:GOSUB@HT_INIT
- HT_K$=”AHO”:HT_V$=”HAGE”
- GOSUB@HT_SET
- HT_K$=”HAHAHA”:HT_V$=”AHYA”
- GOSUB@HT_SET
- HT_K$=”HAHAHA”
- GOSUB@HT_GET
- ?HT_V$
- HT_K$=”AHO”
- GOSUB@HT_GET
- ?HT_V$
- END
- @HT_INIT
- HT_P=0:HT_M=3000
- DIM HT_K$[HT_M],HT_V$[HT_M]
- RETURN
- @HT_INDEX ’HT_I=HT_K$
- HT_I=−1
- FOR HT_INDEX_I=0 TO HT_P−1
- IF HT_K$[HT_INDEX_I]==HT_K$ THEN HT_I=HT_INDEX_I
- NEXT
- RETURN
- @HT_NEWKEY ’HT_K$
- HT_K$[HT_P]=HT_K$
- HT_I=HT_P:HT_P=HT_P+1
- RETURN
- @HT_GET ’HT_V$=HT_K$
- HT_V$=CHR$(0)
- GOSUB@HT_INDEX
- IF HT_I!=−1 THEN HT_V$=HT_V$[HT_I]
- RETURN
- @HT_SET ’HT_K$,HT_V$
- GOSUB@HT_INDEX
- IF HT_I==−1 THEN GOSUB@HT_NEWKEY
- HT_V$[HT_I]=HT_V$
- RETURN
ヤッフーさんの「デバッグルーチン?」と同じです。
三行目までをプログラムの始めに、四行目からプログラムの最後に入れます。 そして、プログラム内でDEBUG$にルーチン名を入れてGOSUBします。
- DEBUG$=””
- GOSUB @DEBUG
- END
- @DEBUG
- IF DEBUG$==”@” OR DEBUG$==”” THEN RETURN
- IF DEBUG$!=”@” THEN DEBUG2$=”@”+DEBUG$
- GOTO DEBUG2$
- RETURN
表示モード : [ スマホ・3DS対応表示 | クラシック表示 ]
PukiWiki 1.4.7 Copyright © 2001-2006 PukiWiki Developers Team. License is GPL. Based on "PukiWiki" 1.3 by yu-ji
ページの処理時間 : 0.142 秒 | このページの最終更新 : 2022/09/20 (火) 12:44:01 (565d) | ログイン
Copyright(C) 2011-2014 プチコンまとめWiki ◆1sxkymI8ji30