十進BASIC 第3掲示板

十進BASIC第3掲示板

十進BASICプログラミングについての質問や研究成果の公開にご利用ください。
メッセージ入力枠は右下をドラッグして拡大できます。 画像,URLは省略可能です。
編集/削除キーを入力しなくてもエラーにはなりませんが,何か適当な半角英数字4~8文字を指定してください。
特に,長文投稿の場合,プレビューで最後の行を確認しても,実際には途中で切れてしまうことがあるので,投稿後の確認が必要です。

「PITGAL」パズルゲーム - しばっち

2025/06/22 (Sun) 07:15:00

「PITGAL」パズルゲーム


一昔前パソコン雑誌に掲載されていたプログラムの移植版です。(厳密には移植の移植版)
まず先に下記プログラムを実行して面データファイルを作成してください。

一度実行すれば再実行は必要ありません。


PRINT "「PITGAL」の "
PRINT "画面 データー を 作成 します。"
FOR K=0 TO 49
PRINT K+1;"面 を セーブ 中 です。"
OPEN #1:NAME "pitgal"&RIGHT$("0"&STR$(K),2)&".txt"
ERASE #1
FOR I=1 TO 2
READ A$
PRINT #1:A$;
NEXT I
CLOSE #1
NEXT K
PRINT "終了しました"
DATA 00040000000155450555511004050000110630000001
DATA 55550500001000050000012000000004155505550555
DATA 00400000000004040000000051230000000513220002
DATA 00513330333205100333005051000000650555555555
DATA 00006050400000041514000002415120000233151220
DATA 05211151550055555515200000000155005555555550
DATA 00000400000020003000020310125450100021352540
DATA 02031034320231016333403002055533132135233331
DATA 55555555555424000053354441510533533300105335
DATA 00215105335344001053352121510533510200165555
DATA 00400000000064040000001330100000010033331110
DATA 33332001542000030550442000050012450531015132
DATA 01104000555014040065350140255153501401441535
DATA 51502331535510011555355500515333535021155555
DATA 33305001111333652030213331540324134415303541
DATA 03415003041003151110310251555155101110000001
DATA 00004002053155140150531051201505310512055055
DATA 10514055001105553000511002005555110010060001
DATA 00600053302043331523340233115431303031533313
DATA 00401513313035310510131510303513330133133123
DATA 00000200000000200020000200060002000005450000
DATA 00000200000545454545450000000000050505050505
DATA 00400100400005551004000000000041100555554341
DATA 00111114041001323030312010420500110102105061
DATA 32200520233345210514031353310531013533310501
DATA 13033331014165113115423351410113433313330001
DATA 00040000000000400000500114055510001434400000
DATA 01403400000013033000206100400024055113000120
DATA 00400600400111113111111004030400110323032301
DATA 10353035301103330333011000101000110001010001
DATA 40005540043306400300211533133303302401330300
DATA 33331001030254015050004033333002031000001050
DATA 11111000000124414200001424124400012421432100
DATA 14241244100132214231005515124110252151111601
DATA 10000000001133343334311032363240110334434201
DATA 10322033301100320240011002403400110333303301
DATA 00000033545155431335251502514354511040133545
DATA 10033300333011533333441064040003350550505121
DATA 01111111111600000000015022404240150002020201
DATA 50442040401502000202015042402240150000000001
DATA 00040000000054514555100044036001002330330010
DATA 03501000010200300000105055555555050500000000
DATA 00005335440000255554400003111531100404012001
DATA 11434005001163340020011303300500111111115001
DATA 34000000000360555555510324000000130324000001
DATA 03032400001303032400010303032000130303030001
DATA 11464000000104140000001041400000010545410000
DATA 10040401000105505055001004040500210550505005
DATA 33234052040213340554514000315044133154100351
DATA 01504331401302330013133055413150236333151511
DATA 30000040000303531111113053500000130353040001
DATA 30000333001300003230013333033300100030060001
DATA 55556111111533550004215333500423153555042315
DATA 53520023155535550311535335202155355551015533
DATA 00000000240000000001410000005503100000000051
DATA 00200400001015055001550100000010000000006100
DATA 00040533333000405555550114000000201434555555
DATA 01404011111013030323010100502420161005012101
DATA 10000001000133333304001400600055513055500000
DATA 14022500120130545000101003330000130133333330
DATA 32330404000333311111113052030000130330300001
DATA 30006400001133033000010000000000155555555500
DATA 00000005240000040405311333103154110001301531
DATA 14040001001130331055211030013055416015301254
DATA 30000430000334403310003134303106031032055555
DATA 31004030250312040345003140403500031111155555
DATA 00006404000000015040000401500400004150004020
DATA 13000004050130000422001001003220055510032200
DATA 00000411110000024614100002411141020241151310
DATA 10411524011103325130011003551400110033311100
DATA 56665666520555555555510000400050101523000501
DATA 01514400501133323406011000333150111111111500
DATA 00000444440002004222200011024222600005224221
DATA 00000222421000152222410001022222100051111111
DATA 00404000000003011111110004140000100032100201
DATA 05004140501025030100010100000006155101511155
DATA 00034004000001153111111001530000155015304001
DATA 02015033301150150323011101103330100000000061
DATA 16000400021130442440311052424250110242224201
DATA 10542224501114222224111122222221111111111111
DATA 00140040002001101100152041010204610410101012
DATA 00110100411010101041000001010102000010000010
DATA 33200402040334012050303440111110113300000331
DATA 13304600401100013332011003000150130333301000
DATA 00000004004155555550021111160004204000551022
DATA 32000051042332000510243332020132233330501022
DATA 00000520400000000545510004050204115550505051
DATA 10020030301101500313111010002505110000610101
DATA 12500000400140004011421255540013414000400102
DATA 12330420103130032503301000125334055161250030
DATA 50000000005515552555555153540402551555402245
DATA 51020214235515255552055103060020555555555555
DATA 02041000000150410000001504100000013041000400
DATA 51041551400500416003105422330031050231210010
DATA 04005100200133041015401020310104010330100331
DATA 10006100401333331015012000000103155055505333
DATA 24214244222422134604444221113000024415001111
DATA 44413451224444513313330005531552011111113310
DATA 30043333336411122411124221442101032144221110
DATA 33131113330233310133201423111331012202221210
END

Re: 「PITGAL」パズルゲーム - しばっち

2025/06/22 (Sun) 07:17:05

こちらがゲーム本体です。
基本操作はテンキーの2,4,6,8キー又は矢印キーにスペーキーとリターンキーです。

マウスは使用しません。

実行するとゲームプレイか画面編集かの選択になります。
2,8キー又は矢印キーで「PLAY」か「EDIT」か選択してください。

「PLAY」を選ぶとゲームプレイになります。
面数選択になりますので2,8キー又は矢印キーで何面からスタートするか選択してください。
スペースキー又はリターンキーでゲームスタートします。

キャラクターを操作してゴールドを全部取ればクリアになるパズルゲームです。全50面あります。
時間制限、敵キャラ等はありません。行き詰った場合や操作に失敗した場合は「G」キーでギブアップしてください。
残り人数が0になるとゲームオーバーです。何かキーを押すと最初の画面に戻ります。


          ゲーム説明



ゴールド....全部取ればクリアになります。横方向からしか取れません。上に乗ることもできます。
岩..........岩の隣がスペースなら動かすことができます。横向きにしか動かせませんが下に何もないと落ちます。岩の上に乗ることもできます。    
はしご......上下左右方向に移動できます。
レンガ......レンガ上を移動できます。
ピンクの壁..横方向からなら破壊できますが復元はできません。上に乗ることもできます。
主人公......テンキー又は矢印キーで操作します。下に何もなければ下に落ちます。
      敵はなくやられて死ぬことはありません。身動きできなくなった等操作に失敗した時には「G」キーでギブアップしてください。

そんなに難しいルールではないので実際に操作してみればすぐに分かるかと思います。


「EDIT」を選ぶと面データを編集できます。
2,8キーで面を選びZ,X,C,V,B,N,Mキーで面データを作成できます。

リターンキーで編集を終えセーブするか問いてきますのでY/Nキーで選択してください。
Nキーを押すとメニューが表示されます。2,8キーでメニューから選択してください。
「EXIT」を選ぶと最初の画面に戻ります。



ANSWER.zip 18.2MB(19,151,906 バイト)
パスワード:設定していません。
ダウンロード期限:2025年8月21日(木)

https://99.gigafile.nu/0821-c1ff77cf8a2375aaec0b631fcdf2d80f0



OPTION BASE 0
DECLARE EXTERNAL FUNCTION INKEY$
PUBLIC NUMERIC XPOS,YPOS
SET BITMAP SIZE 640,400
SET WINDOW 0,639,399,0
SET TEXT JUSTIFY "LEFT","TOP"
SET TEXT HEIGHT 14
SET TEXT BACKGROUND "OPAQUE"
FOR I=0 TO 7
SET COLOR MIX(I) BITAND(I,2)/2,BITAND(I,4)/4,BITAND(I,1)
NEXT I
LET F$="PITGAL" ! BASE名
20 DIM Z(10, 8), AA(32,32), BB(32 ,32), CC(32,32), DD(32,32), EE(32,32), FF(32,32), GG(32,32), HH(32,32), II(32,32), JJ(16,16), KK(16,16), LL(16,16), MM(16,16)
30 GOSUB 1800
GOSUB 1940
40 GOSUB 1300
LET MA = 5
50 LET A$ = INKEY$
IF A$ = "" THEN 50
60 IF A$ = "2" THEN GOSUB 1360
70 IF A$ = "8" THEN GOSUB 1370
80 IF A$ <> " " AND A$ <> CHR$(13) THEN 50
90 IF J = 1 THEN
GOSUB 1380
LET PP = 1
GOTO 1000
END IF
100 LET PP = 0
LET L = 0
GOSUB 1380
110 GOSUB 1540
! CALL GLOCATE( 9, 13)
! CALL GPRINT( "画面 データー を ロードします。")
! CALL GLOCATE( 10, 22)
! CALL GPRINT( "FILE")
! CALL GLOCATE( 11, 22)
! CALL GPRINT("NAME")
! CALL GLOCATE( 12, 20)
! CALL GPRINT( ">")
120 ! INPUT "FILE NAME=",F$ ! BASE名(EDITで画面データを作成した場合の読み込み)
! IF LEN(F$) > 6 THEN
! GOTO 120
! ELSE
GOSUB 1530
GOTO 820
! END IF
130 LET GB = 0
LET G = 0
GOSUB 1530
OPEN #1:NAME F$ & RIGHT$("0" & STR$(L), 2)&".txt"
140 FOR Y = 0 TO 7
FOR X = 0 TO 10
150 CHARACTER INPUT #1: Q$
LET Q = VAL(Q$)
LET Z(X, Y) = Q
IF Q=2 THEN LET G=G+1
IF Q = 6 THEN
LET MX = X
LET MY = Y
END IF
160 IF Q > 6 THEN LET Q = 5
170 LET XA = (X * 2 + 3) * 16
LET YA = (Y * 2 + 7) * 16
LET QQ = Q
GOSUB 1620
180 NEXT X
NEXT Y
CLOSE #1
IF G = 0 THEN LET G = 1
190 FOR I = 0 TO 10
LET Z(I, 8) = 5
NEXT I
200 LET X = MX
LET Y = MY
LET X1 = X
LET X2 = X
210 IF Z(X, Y + 1) = 0 AND GB = 0 THEN
LET MY = MY + 1
LET SY = 1
GOTO 470
END IF
230 LET A$ = INKEY$
IF A$ = "" THEN 230
240 IF A$ <> "8" OR Y < 1 THEN 270
250 LET A = Z(X, Y - 1)
260 IF A = 0 OR A = 1 AND GB = 1 THEN
LET MY = MY - 1
LET SY = 1
GOTO 470
END IF
270 IF A$ <> "2" THEN 300
280 LET A = Z(X, Y + 1)
290 IF A = 1 OR A = 0 THEN
LET MY = MY + 1
LET SY = 1
GOTO 470
END IF
300 IF A$ = "6" THEN
LET HX = 1
LET SY = 3
GOTO 390
END IF
310 IF A$ = "4" THEN
LET HX = -1
LET SY = 2
GOTO 390
END IF
320 IF A$ = CHR$(13) THEN 630
330 IF A$ = "g" OR A$ = "G" THEN 370
340 IF A$ = "n" OR A$ = "N" THEN
IF L = 49 THEN
GOTO 200
ELSE
LET L = L + 1
GOTO 370
END IF
END IF
350 IF A$ = "b" OR A$ = "B" THEN
IF L = 0 THEN
GOTO 200
ELSE
LET L = L - 1
GOTO 370
END IF
END IF
360 GOTO 200
370 LET MA = MA - 1
GOSUB 1460
IF MA > 0 THEN 130
380 CALL BOXFULL (8 * 18, 12 * 16,36 * 8, 13 * 16, 0)
CALL GLOCATE( 13, 19)
CALL GPRINT( "GAME OVER")
CHARACTER INPUT A$
GOTO 40
390 IF X + HX < 0 OR X + HX > 10 THEN 200
400 LET B = Z(X + HX, Y)
410 IF B >= 0 AND B < 4 THEN
LET MX = MX + HX
GOTO 470
END IF
420 IF X + HX * 2 < 0 OR X + HX * 2 > 10 THEN 200
430 IF Z(X + HX, Y) <> 4 OR Z(X + HX * 2, Y) <> 0 THEN 200
440 LET XA = ((X + HX) * 2 + 3) * 16
LET YA = (Y * 2 + 7) * 16
LET QQ = 0
GOSUB 1620
LET Z(X + HX, Y) = 0
450 LET XA = ((X + HX * 2) * 2 + 3) * 16
LET YA = (Y * 2 + 7) * 16
LET QQ = 4
GOSUB 1620
LET Z(X + HX * 2, Y) = 4
460 IF HX = 1 THEN
LET X1 = X + 1
LET X2 = X + 2
LET SY = 3
ELSE
LET X1 = X - 2
LET X2 = X - 1
LET SY = 2
END IF
470 LET XA = (X * 2 + 3) * 16
LET YA = (Y * 2 + 7) * 16
LET QQ = GB
GOSUB 1620
LET Z(X, Y) = GB
480 LET A = Z(MX, MY)
IF A=1 THEN LET GB=1 ELSE LET GB=0
490 IF A = 2 THEN LET G = G - 1
500 LET XA = (MX * 2 + 3) * 16
LET YA = (MY * 2 + 7) * 16
LET QQ = 5 + SY
GOSUB 1620
LET Z(MX, MY) = 5 + SY
510 LET Q = 0
FOR X = X1 TO X2
FOR Y = 7 TO 1 STEP -1
520 IF Z(X, Y) <> 0 THEN 560
530 IF Z(X, Y - 1) = 2 THEN
LET XA = (X * 2 + 3) * 16
LET YA = (Y * 2 + 7) * 16
LET QQ = 2
GOSUB 1620
LET Z(X, Y) = 2
GOTO 550
END IF
540 IF Z(X, Y - 1) = 4 THEN
LET XA = (X * 2 + 3) * 16
LET YA = (Y * 2 + 7) * 16
LET QQ = 4
GOSUB 1620
LET Z(X, Y) = 4
ELSE
GOTO 560
END IF
550 LET XA = (X * 2 + 3) * 16
LET YA = ((Y - 1) * 2 + 7) * 16
LET QQ = 0
GOSUB 1620
LET Z(X, Y - 1) = 0
LET Q = 1
560 NEXT Y
NEXT X
570 IF Q > 0 THEN 510
580 IF G = 0 THEN 600
590 GOTO 200
600 CALL BOXFULL(8 * 12, 12 * 16,44 * 8, 13 * 16, 0)
CALL GLOCATE( 13, 13)
CALL GPRINT( "CONGRATULATIONS")
WAIT DELAY 4
610 LET L = L + 1
IF L < 50 THEN
IF MA = 5 THEN
GOSUB 1460
GOTO 130
ELSE
LET MA = MA + 1
GOSUB 1460
GOTO 130
END IF
END IF
620 CALL BOXFULL (8 * 12, 14 * 16,42 * 8, 15 * 16, 0)
CALL GLOCATE( 15, 13)
CALL GPRINT( "ALL LEVEL CLEAR")
WAIT DELAY 4
GOTO 40
630 GOSUB 780
CALL GLOCATE( 12, 22)
CALL GPRINT( "** MENU **")
GOSUB 720
GOSUB 730
GOSUB 740
GOSUB 750
640 LET CU = 0
LET CCC = 0
GOSUB 710
650 LET A$ = INKEY$
IF A$ = "" THEN 650
660 IF A$ = "8" AND CU > 0 THEN
LET CCC = -1
GOSUB 710
GOTO 650
END IF
670 IF A$ = "2" AND CU < 3 THEN
LET CCC = 1
GOSUB 710
GOTO 650
END IF
680 IF A$ <> " " AND A$<>CHR$(13) THEN 650
690 SET TEXT COLOR 7
GOSUB 1530
GOSUB 800
700 IF CU+1=1 THEN 820
IF CU+1=2 THEN 850
IF CU+1=3 THEN 1000
IF CU+1=4 THEN 770
710 SET TEXT COLOR 7
IF CU+1=1 THEN GOSUB 720
IF CU+1=2 THEN GOSUB 730
IF CU+1=3 THEN GOSUB 740
IF CU+1=4 THEN GOSUB 750
LET CU = CU + CCC
GOTO 760
720 CALL GLOCATE( 15, 25)
CALL GPRINT( "PLAY")
RETURN
730 CALL GLOCATE( 16, 25)
CALL GPRINT( "LOAD")
RETURN
740 CALL GLOCATE( 17, 25)
CALL GPRINT( "EDIT")
RETURN
750 CALL GLOCATE( 18, 25)
CALL GPRINT( "EXIT")
RETURN
760 SET TEXT COLOR 5
IF CU+1=1 THEN GOSUB 720
IF CU+1=2 THEN GOSUB 730
IF CU+1=3 THEN GOSUB 740
IF CU+1=4 THEN GOSUB 750
RETURN
770 IF PP = 1 THEN 40 ELSE 200
780 LET XS = 9
LET YS = 11
LET XE = 19
LET YE = XE
LET QQ = 1
GOSUB 1720
790 CALL BOXFULL(10 * 16, 12 * 16,17 * 16 + 15, 17 * 16 + 15, 0)
RETURN
800 FOR J = 0 TO 3
FOR I = 0 TO 4
LET Q = Z(I + 3, J + 2)
810 LET XA = ((I + 3) * 2 + 3) * 16
LET YA = ((J + 2) * 2 + 7) * 16
LET QQ = Q
GOSUB 1620
NEXT I
NEXT J
RETURN
820 IF PP = 1 THEN GOTO 110 ELSE GOSUB 780
830 CALL GLOCATE( 14, 23)
CALL GPRINT( "START")
CALL GLOCATE( 15, 25)
CALL GPRINT( "STAGE")
GOSUB 910
840 LET MA = 5
GOSUB 1540
GOSUB 1460
GOTO 130
850 GOSUB 1540
! CALL GLOCATE( 9, 13)
! CALL GPRINT( "画面 データー を ロードします。")
! CALL GLOCATE( 10, 22)
! CALL GPRINT( "FILE")
! CALL GLOCATE( 11, 22)
! CALL GPRINT( "NAME")
! CALL GLOCATE( 12, 20)
! CALL GPRINT( ">")
860 ! CALL GLOCATE( 21, 11)
! INPUT PROMPT "LOAD FILE NAME=": F$
! IF LEN(F$) > 6 THEN
! CALL GLOCATE( 23, 13)
! CALL GPRINT(" ")
! GOTO 860
!END IF
870 GOSUB 1530
GOSUB 780
CALL GLOCATE( 14, 23)
CALL GPRINT( "LOAD")
CALL GLOCATE( 15, 25)
CALL GPRINT( "STAGE")
GOSUB 910
880 GOSUB 1540
GOSUB 1530
IF PP = 0 THEN 130
890 OPEN #1:NAME F$ & RIGHT$("0" & STR$(L), 2)&".txt"
FOR Y = 0 TO 7
FOR X = 0 TO 10
900 CHARACTER INPUT #1:Q$
LET Z(X, Y) = VAL(Q$)
NEXT X
NEXT Y
CLOSE #1
GOSUB 1020
GOTO 1060
910 CALL GLOCATE( 17, 27)
CALL GPRINT( RIGHT$("0" & STR$(L + 1), 2))
930 LET A$ = INKEY$
IF A$ = "" THEN 930
950 IF A$="8" THEN LET L=L+1
IF A$="2" THEN LET L=L-1
960 IF L < 0 THEN
LET L = 49
ELSEIF L>49 THEN
LET L=0
END IF
970 IF A$ = " " OR A$=CHR$(13) THEN
GOSUB 990
RETURN
END IF
980 GOTO 910
990 CALL GLOCATE( 11, 65)
CALL GPRINT( RIGHT$("0" & STR$(L + 1), 2))
RETURN
1000 GOSUB 780
CALL GLOCATE( 14, 23)
CALL GPRINT( "EDIT")
CALL GLOCATE( 15, 25)
CALL GPRINT( "STAGE")
GOSUB 910
GOSUB 1530
GOSUB 1540
IF PP = 1 THEN
GOSUB 1020
GOTO 1060
END IF
1010 OPEN #1:NAME F$ & RIGHT$("0" & STR$(L), 2)
FOR Y = 0 TO 7
FOR X = 0 TO 10
CHARACTER INPUT #1: Q$
LET Z(X, Y) = VAL(Q$)
NEXT X
NEXT Y
CLOSE #1
GOSUB 1020
GOTO 1060
1020 FOR X = 0 TO 10
FOR Y = 0 TO 7
1030 LET Q = Z(X, Y)
IF Q > 6 THEN
LET Q = 5
LET MX = X
LET MY = Y
END IF
1040 IF Q=2 THEN LET G=G+1
1050 LET XA = (X * 2 + 3) * 16
LET YA = (Y * 2 + 7) * 16
LET QQ = Q
GOSUB 1620
NEXT Y
NEXT X
RETURN
1060 LET X = 0
LET Y = 0
1070 LET XX = X
LET YY = Y
LET LC = 0
LET AC=1-AC
1080 LET XS = X * 2 + 3
LET YS = Y * 2 + 7
LET XE = XS + 2
LET YE = YS + 2
IF AC = 0 THEN
LET QQ = 1
GOSUB 1720
GOTO 1100
END IF
1090 LET QQ = Z(X, Y)
LET XA = (X * 2 + 3) * 16
LET YA = (Y * 2 + 7) * 16
GOSUB 1620
1100 LET LC = LC + 1
LET A$ = INKEY$
IF LC > 20 THEN
GOTO 1070
ELSE
IF A$ = "" THEN 1100
END IF
1110 !'IF INKEY$ <> "" THEN 1110
1120 IF POS("2468",A$)>0 THEN LET A = VAL(A$) ELSE LET A=0
IF A > 0 THEN 1270
1130 IF A$ = CHR$(13) THEN
1140 GOSUB 1540
CALL GLOCATE( 11, 17)
CALL GPRINT( "画面 データー を")
CALL GLOCATE( 13, 13)
CALL GPRINT( "セーブしますか(Y/N)")
CHARACTER INPUT A$
IF A$ = "Y" OR A$ = "y" THEN 1160
1150 GOSUB 1530
GOSUB 1020
IF PP = 0 THEN
LET MA = 5
GOSUB 1460
GOSUB 1020
GOTO 200
ELSE
GOTO 630
END IF
1160 ! CALL GLOCATE( 10, 22)
! CALL GPRINT( "FILE")
! CALL GLOCATE( 11, 22)
! CALL GPRINT( "NAME")
! CALL GLOCATE( 12, 20)
! CALL GPRINT( ">")
1170 ! CALL GLOCATE( 12, 22)
INPUT PROMPT "SAVE FILE NAME=": F$
! IF LEN(F$) > 6 THEN
! CALL GLOCATE( 12, 22)
! CALL GPRINT(" ")
! GOTO 1170
! END IF
1180 GOSUB 1530
GOSUB 1020
OPEN #1:NAME F$ & RIGHT$("0" & STR$(L), 2)&".txt"
1190 FOR Y = 0 TO 7
FOR X = 0 TO 10
PRINT #1:STR$(Z(X, Y));
NEXT X
NEXT Y
CLOSE #1
IF PP = 0 THEN
LET MA = 5
GOSUB 1460
GOSUB 1020
GOTO 200
ELSE
GOTO 630
END IF
1200 END IF
1210 IF A$ = CHR$(12) THEN GOSUB 1540
1220 LET Q = VAL(MID$("012345671234567", POS("zxcvbnmZXCVBNM", A$) + 1, 1))
1230 IF Q > 0 THEN
LET Z(X, Y) = Q - 1
LET AC = 0
END IF
1240 IF A$ <> "+" AND A$ <> "-" AND A$<>"8" AND A$<>"2" THEN 1070
1250 IF A$="+" OR A$="8" THEN LET L=L+1
IF A$="-" OR A$="2" THEN LET L=L-1
IF L < 0 THEN
LET L=49
ELSEIF L>49 THEN
LET L = 0
END IF
1260 GOSUB 990
GOTO 1070
1270 IF A=4 THEN LET X=X-1
IF A=6 THEN LET X=X+1
IF X < 0 THEN
LET X=10
ELSEIF X>10 THEN
LET X = 0
END IF
1280 IF A=8 THEN LET Y=Y-1
IF A=2 THEN LET Y=Y+1
IF Y < 0 THEN
LET Y = 7
ELSEIF Y>7 THEN
LET Y=0
END IF
1290 LET Q = Z(XX, YY)
LET XA = (XX * 2 + 3) * 16
LET YA = (YY * 2 + 7) * 16
LET QQ = Q
GOSUB 1620
GOTO 1070
1300 CLEAR
LET XS = 0
LET YS = 0
LET XE = 40
LET YE = 25
LET QQ = 4
GOSUB 1720
1310 CALL BOXFULL(0, 2 * 16,39 * 16 + 15, 10 * 16 + 15, 0)
1320 CALL BOXFULL (16 * 16, 12 * 16,23 * 16 + 15, 16 * 16 + 15, 0)
1330 CALL BOXFULL (1 * 16, 19 * 16,38 * 16 + 15, 23 * 16 + 15, 0)
1340 RESTORE 1550
FOR J = 0 TO 6
READ A$
1350 LET XA = 0
LET YA = J + 3
GOSUB 1770
NEXT J
1360 SET TEXT COLOR 0
CALL GLOCATE( 14, 37)
CALL GPRINT( "EDIT")
SET TEXT COLOR 2
CALL GLOCATE( 16, 37)
CALL GPRINT( "PLAY")
SET TEXT COLOR 7
LET J = 0
RETURN
1370 SET TEXT COLOR 0
CALL GLOCATE( 16, 37)
CALL GPRINT( "PLAY")
SET TEXT COLOR 2
CALL GLOCATE( 14, 37)
CALL GPRINT( "EDIT")
SET TEXT COLOR 7
LET J = 1
RETURN
1380 CLEAR
LET XS = 7
LET YS = 0
LET XE = 33
LET YE = 7
LET QQ = 4
GOSUB 1720
1390 FOR I = 1 TO 7
1400 LET XA = 7 - I
LET YA = I - 1
LET A$ = LEFT$("2444444", I)
GOSUB 1770
1410 LET XA = 33
LET YA = I - 1
LET A$ = RIGHT$("4444443", I)
GOSUB 1770
NEXT I
1420 LET XS = 1
LET YS = 7
LET XE = 3
LET YE = 23
LET QQ = 1
GOSUB 1720
1430 LET XS = 25
LET YS = 7
LET XE = 27
LET YE = 23
LET QQ = 1
GOSUB 1720
1440 LET XS = 37
LET YS = 7
LET XE = 39
LET YE = 23
LET QQ = 1
GOSUB 1720
1450 LET XS = 0
LET YS = 23
LET XE = 40
LET YE = 25
LET QQ = 1
GOSUB 1720
1460 CALL GLOCATE( 9, 57)
CALL GPRINT( "LEVEL")
1470 CALL GLOCATE( 11, 65)
CALL GPRINT( RIGHT$("0" & STR$(L + 1), 2))
1480 CALL GLOCATE( 15, 65)
CALL GPRINT( "LEFT")
1490 CALL BOXFULL(28 * 16, 16 * 16,36 * 16, 18 * 16, 0)
1500 IF MA = 1 THEN 1520
1510 FOR I = 1 TO MA - 1
LET XA = (36 - I * 2) * 16
LET YA = 16 * 16
LET QQ = 7
GOSUB 1620
NEXT I
1520 RETURN
1530 FOR YM = 8 TO 23
FOR XM = 7 TO 49
CALL GLOCATE( YM, XM)
CALL GPRINT( " ")
NEXT XM
NEXT YM
RETURN
1540 CALL BOXFULL (3 * 16, 7 * 16,24 * 16 + 15, 22 * 16 + 15, 0)
RETURN
1550 DATA"1111111 1 1111111 11111 111 1"
1560 DATA"1 1 1 1 1 1 1 1 1"
1570 DATA"1 1 1 1 1 1 1 1"
1580 DATA"1111111 1 1 1 1111 1111111 1"
1590 DATA"1 1 1 1 1 1 1 1"
1600 DATA"1 1 1 1 1 1 1 1"
1610 DATA"1 1 1 11111 1 1 111111"
1620 IF QQ+1=1 THEN GOSUB 1630
IF QQ+1=2 THEN GOSUB 1640
IF QQ+1=3 THEN GOSUB 1650
IF QQ+1=4 THEN GOSUB 1660
IF QQ+1=5 THEN GOSUB 1670
IF QQ+1=6 THEN GOSUB 1680
IF QQ+1=7 THEN GOSUB 1690
IF QQ+1=8 THEN GOSUB 1700
IF QQ+1=9 THEN GOSUB 1710
RETURN
1630 MAT PLOT CELLS, IN XA, YA;XA+31,YA+31: AA
RETURN
1640 MAT PLOT CELLS, IN XA, YA;XA+31,YA+31: BB
RETURN
1650 MAT PLOT CELLS, IN XA, YA;XA+31,YA+31: CC
RETURN
1660 MAT PLOT CELLS, IN XA, YA;XA+31,YA+31: DD
RETURN
1670 MAT PLOT CELLS, IN XA, YA;XA+31,YA+31: EE
RETURN
1680 MAT PLOT CELLS, IN XA, YA;XA+31,YA+31: FF
RETURN
1690 MAT PLOT CELLS, IN XA, YA;XA+31,YA+31: GG
RETURN
1700 MAT PLOT CELLS, IN XA, YA;XA+31,YA+31: HH
RETURN
1710 MAT PLOT CELLS, IN XA, YA;XA+31,YA+31: II
RETURN
1720 FOR YA = YS * 16 TO (YE - 1) * 16 STEP 16
FOR XA = XS * 16 TO (XE - 1) * 16 STEP 16
IF QQ=1 THEN GOSUB 1730
IF QQ=2 THEN GOSUB 1740
IF QQ=3 THEN GOSUB 1750
IF QQ=4 THEN GOSUB 1760
NEXT XA
NEXT YA
RETURN
1730 MAT PLOT CELLS, IN XA, YA;XA+15,YA+15: JJ
RETURN
1740 MAT PLOT CELLS, IN XA, YA;XA+15,YA+15: KK
RETURN
1750 MAT PLOT CELLS, IN XA, YA;XA+15,YA+15: LL
RETURN
1760 MAT PLOT CELLS, IN XA, YA;XA+15,YA+15: MM
RETURN
1770 LET XA = 16 * XA
LET YA = 16 * YA
FOR K = 1 TO LEN(A$)
IF MID$(A$, K, 1) = " " THEN 1790
1780 LET P= VAL(MID$(A$, K, 1))
IF P=1 THEN GOSUB 1730
IF P=2 THEN GOSUB 1740
IF P=3 THEN GOSUB 1750
IF P=4 THEN GOSUB 1760
1790 LET XA = XA + 16
NEXT K
RETURN
1800 RESTORE 1950
CLEAR
GOSUB 1810
FOR K = 1 TO 8
FOR J = 0 TO 15
READ A$
FOR I = 0 TO 15
CALL BOXFULL(I * 2, J * 2,I * 2 + 1, J * 2 + 1, VAL(MID$(A$, I + 1, 1)))
NEXT I
NEXT J
IF K=1 THEN GOSUB 1820
IF K=2 THEN GOSUB 1830
IF K=3 THEN GOSUB 1840
IF K=4 THEN GOSUB 1850
IF K=5 THEN GOSUB 1860
IF K=6 THEN GOSUB 1870
IF K=7 THEN GOSUB 1880
IF K=8 THEN GOSUB 1890
NEXT K
RETURN
1810 ASK PIXEL ARRAY (0, 0) AA
RETURN
1820 ASK PIXEL ARRAY (0, 0) BB
RETURN
1830 ASK PIXEL ARRAY (0, 0) CC
RETURN
1840 ASK PIXEL ARRAY (0, 0) DD
RETURN
1850 ASK PIXEL ARRAY (0, 0) EE
RETURN
1860 ASK PIXEL ARRAY (0, 0) FF
RETURN
1870 ASK PIXEL ARRAY (0, 0) GG
RETURN
1880 ASK PIXEL ARRAY (0, 0) HH
RETURN
1890 ASK PIXEL ARRAY (0, 0) II
RETURN
1900 ASK PIXEL ARRAY (0, 0) JJ
RETURN
1910 ASK PIXEL ARRAY (0, 0) KK
RETURN
1920 ASK PIXEL ARRAY (0, 0) LL
RETURN
1930 ASK PIXEL ARRAY (0, 0) MM
RETURN
1940 RESTORE 3310
CLEAR
FOR K = 1 TO 4
FOR J = 0 TO 7
READ A$
FOR I = 0 TO 7
CALL BOXFULL (I * 2, J * 2,I * 2 + 1, J * 2 + 1, VAL(MID$(A$, I + 1, 1)))
NEXT I
NEXT J
IF K=1 THEN GOSUB 1900
IF K=2 THEN GOSUB 1910
IF K=3 THEN GOSUB 1920
IF K=4 THEN GOSUB 1930
NEXT K
RETURN
1950 DATA 0750000000000750
1960 DATA 0750000000000750
1970 DATA 0750000000000750
1980 DATA 0757777777777750
1990 DATA 0755555555555750
2000 DATA 0750000000000750
2010 DATA 0750000000000750
2020 DATA 0750000000000750
2030 DATA 0750000000000750
2040 DATA 0750000000000750
2050 DATA 0750000000000750
2060 DATA 0757777777777750
2070 DATA 0755555555555750
2080 DATA 0750000000000750
2090 DATA 0750000000000750
2100 DATA 0750000000000750
2110 !'
2120 DATA 0000000000000000
2130 DATA 0000600600600000
2140 DATA 0006060606006000
2150 DATA 0600600000060060
2160 DATA 0060006606000600
2170 DATA 6000666666060006
2180 DATA 0006666660606000
2190 DATA 0066666666060600
2200 DATA 0666666660606060
2210 DATA 0666666666660600
2220 DATA 6666666666606060
2230 DATA 6666666666660606
2240 DATA 6666666666606060
2250 DATA 6666666666660606
2260 DATA 6666666666606060
2270 DATA 6666666666660606
2280 !'
2290 DATA 3232323232323232
2300 DATA 2323232323232323
2310 DATA 3232323232323232
2320 DATA 2323232323232323
2330 DATA 3232323232323232
2340 DATA 2323232323232323
2350 DATA 3232323232323232
2360 DATA 2323232323232323
2370 DATA 3232323232323232
2380 DATA 2323232323232323
2390 DATA 3232323232323232
2400 DATA 2323232323232323
2410 DATA 3232323232323232
2420 DATA 2323232323232323
2430 DATA 3232323232323232
2440 DATA 2323232323232323
2450 !'
2460 DATA 0000000000000000
2470 DATA 0002020202020000
2480 DATA 0020202626262000
2490 DATA 0200020262626200
2500 DATA 2000202020262620
2510 DATA 0202020202626200
2520 DATA 2020202020202620
2530 DATA 0202020202026200
2540 DATA 2020202020202620
2550 DATA 0202020202026200
2560 DATA 2000202020202020
2570 DATA 0200020202020200
2580 DATA 2000002020202020
2590 DATA 0200000202020200
2600 DATA 0020202020202000
2610 DATA 0002020202020000
2620 !'
2630 DATA 0000000000000000
2640 DATA 5450545454545454
2650 DATA 4540454545454545
2660 DATA 5450545454545454
2670 DATA 4540454545454545
2680 DATA 5450545454545454
2690 DATA 4540454545454545
2700 DATA 5450545454545454
2710 DATA 0000000000000000
2720 DATA 5454545454540454
2730 DATA 4545454545450545
2740 DATA 5454545454540454
2750 DATA 4545454545450545
2760 DATA 5454545454540454
2770 DATA 4545454545450545
2780 DATA 5454545454540454
2790 !'
2800 DATA 0000003333000000
2810 DATA 0000333333330000
2820 DATA 0003333333333000
2830 DATA 0003333333333000
2840 DATA 0033333333333300
2850 DATA 0033333333333300
2860 DATA 0033333333333300
2870 DATA 0033333333333300
2880 DATA 0033327777233300
2890 DATA 0033222222223300
2900 DATA 0033222222223300
2910 DATA 0003222222223000
2920 DATA 0002222222222000
2930 DATA 0002222222222000
2940 DATA 0000077007700000
2950 DATA 0000022002200000
2960 !'
2970 DATA 0000003333300000
2980 DATA 0000033333330000
2990 DATA 0000333333330000
3000 DATA 0000333333330000
3010 DATA 0000333333333000
3020 DATA 0700707077333700
3030 DATA 0770707077337700
3040 DATA 0077777777377300
3050 DATA 0007277773773000
3060 DATA 0000222222333000
3070 DATA 0000222222233000
3080 DATA 0000222222230000
3090 DATA 0002222222220000
3100 DATA 0002222222220000
3110 DATA 0000077077000000
3120 DATA 0000022022000000
3130 !'
3140 DATA 0000033333000000
3150 DATA 0000333333300000
3160 DATA 0003333333330000
3170 DATA 0003333333330000
3180 DATA 0033333333330000
3190 DATA 0073337707070070
3200 DATA 0077337707070770
3210 DATA 0037737777777700
3220 DATA 0003773777727000
3230 DATA 0003332222220000
3240 DATA 0003322222220000
3250 DATA 0000322222220000
3260 DATA 0000222222222000
3270 DATA 0000222222222000
3280 DATA 0000007707700000
3290 DATA 0000002202200000
3300 !'
3310 DATA 77777777
3320 DATA 22222722
3330 DATA 22222722
3340 DATA 22222722
3350 DATA 77777777
3360 DATA 22722222
3370 DATA 22722222
3380 DATA 22722222
3390 !'
3400 DATA 00000001
3410 DATA 00000011
3420 DATA 00000711
3430 DATA 00001711
3440 DATA 00077777
3450 DATA 00711111
3460 DATA 01711111
3470 DATA 11711111
3480 !'
3490 DATA 10000000
3500 DATA 11000000
3510 DATA 11100000
3520 DATA 11110000
3530 DATA 77777000
3540 DATA 11711100
3550 DATA 11711110
3560 DATA 11711111
3570 !'
3580 DATA 77777777
3590 DATA 11111711
3600 DATA 11111711
3610 DATA 11111711
3620 DATA 77777777
3630 DATA 11711111
3640 DATA 11711111
3650 DATA 11711111
END

EXTERNAL SUB GPRINT(X$)
PLOT TEXT ,AT XPOS*8-16,YPOS*16-16:X$
END SUB

EXTERNAL SUB GLOCATE(Y,X)
LET XPOS=X
LET YPOS=Y
END SUB

EXTERNAL FUNCTION INKEY$
LET A$=""
CHARACTER INPUT CLEAR,NOWAIT:A$
IF A$="" THEN
IF GETKEYSTATE(37)<0 THEN LET A$="4"
IF GETKEYSTATE(38)<0 THEN LET A$="8"
IF GETKEYSTATE(39)<0 THEN LET A$="6"
IF GETKEYSTATE(40)<0 THEN LET A$="2"
DO
LOOP WHILE GETKEYSTATE(37)<0 OR GETKEYSTATE(38)<0 OR GETKEYSTATE(39)<0 OR GETKEYSTATE(40)<0
END IF
LET INKEY$=A$
END FUNCTION

EXTERNAL SUB BOXFULL(X1,Y1,X2,Y2,C)
SET AREA COLOR C
PLOT AREA:X1,Y1;X2,Y1;X2,Y2;X1,Y2;X1,Y1
END SUB

名前
件名
メッセージ
画像
メールアドレス
URL
編集/削除キー (半角英数字のみで4~8文字)
プレビューする (投稿前に、内容をプレビューして確認できます)

Copyright © 1999- FC2, inc All Rights Reserved.