PRG:TRE_ATK
動いている様子はコチラ
セツメイEXPLANATION
落ち物パズルゲームです。最初に、十字キーで難易度を選択し、A,Bボタンでゲームを開始します。This is a tetris-like game. First you can choose difficulty by cross-key and decide by A or B button.
ブロックはL字型に3つセットで落ちてきます。ブロックは宝箱、ドル袋、男の子が含まれます。十字キーで移動させて、A,Bボタンで回転させます。You drop L-shaped 3 blocks consisting of boxes, doller-bags and guy. Move by cross-key, rotate by A or B button.
宝箱は横一列に揃えると消滅します。ドル袋は、定期的に出てくる男の子に回収してもらいます。男の子は、横方向よりも下方向の移動を優先します。Boxes are disappeared if they line horizontally without other blocks. The guy captures doller-bags. He moves in down-direction prior to horizontal-direction.
ブロックがフィールド上部まで積みあがってしまうとゲームオーバーです。A,B,Rボタンでタイトル画面に戻ります。If the blocks reach to top of field, the game is over. Press A,B or R button to go to title screen.
なお、ブロック操作中はRボタンを押す事で、いつでもタイトル画面に戻る事ができます。In addition, you can go to title screen by pressing R button during puzzle.
QRコードQR CODE
プログラムコードPROGRAM CODE
表示 Show
A | スコア |
B | ボタンの状態 |
C | 落下ブロックのキャラの種類、着地フレーム数、ウェイト係数 |
C() | スプライト番号に対するキャラの種類 |
D | 横一列に揃った宝箱の段数 |
E | ドル袋回収中の男の子のスプライト番号 |
F | フィールド内で注目している位置のスプライト番号 |
F(,) | フィールドの状態 |
G | 男の子が取得したドル袋の数 |
H | フィールドの高さ計算用 |
H() | 各列のフィールドの高さ |
I | 汎用ループ関数 |
J | 落下ブロック内の男の子の位置、ブロックが男の子単体か |
K | 得点係数 |
L | レベル |
M | 男の子が来てから落としたブロックの数 |
N | レベルが上がってから落としたブロックの数 |
P,Q | 男の子の位置 |
R | 落下ブロックの回転量 |
S | 次に使用するスプライト番号 |
T | ブロック落下中のY座標 |
U | 下キー制御用変数 |
V,W | 汎用移動量変数 |
X,Y | 汎用位置変数 |
Z | 汎用判定フラグ |
001. ′┌─────────────────────────┐Л
002. ′│ PRG:TRE_ATK by OBONO │Л
003. ′└─────────────────────────┘Л
004. Л
005. ′■ INITЛ
006. ACLSЛ
007. BREPEAT 2,10,1:BREPEAT 3,10,1Л
008. BGFILL 0,0,0,32,23,”82208224”Л
009. FOR I=5 TO 10Л
010. BGFILL 0,I*2,0,I*2+1,23,”905E905F907E907F”Л
011. NEXTЛ
012. BGCOPY 0,10,0,13,3,24,2Л
013. @IЛ
014. CLS:SPCLR:CLEARЛ
015. DIM F(8,14),H(8),C(90),M(6)Л
016. FOR I=0 TO 13Л
017. F(0,I)=89:F(7,I)=89Л
018. F(I%8,0)=89Л
019. NEXTЛ
020. H(0)=13:H(7)=13:C(89)=1Л
021. SPSET 1,64,4,0,0,1:Y=1Л
022. Л
023. ′■ LEVELЛ
024. @LЛ
025. B=BTRIG():W=(B+1 AND 3)%3Л
026. IF W!=1 THEN BEEP 31Л
027. Y=(Y+5-W)%4:L=Y*Y*10:GOSUB @PЛ
028. FOR I=0 TO 3Л
029. COLOR (I!=Y)*7:LOCATE 13,I*2+14Л
030. ? MID$(”NOVICE STANDARDEXPERT GODHAND ”,I*8,8)Л
031. NEXTЛ
032. SPOFS 1,88,Y*16+104:VSYNC 1Л
033. IF !(B AND 48) THEN @LЛ
034. CLS:BEEP 32:BGMPLAY 27Л
035. Л
036. ′■ ENTERЛ
037. @EЛ
038. K=L/10+1 OR 0:Z=KЛ
039. IF L<40 THEN Z=3+(L>24)Л
040. M=(M+1)%Z:J=RND(3)*(L>9)Л
041. FOR I=0 TO 2Л
042. Z=!M AND I==J:C=RND(2)+Z*2+1Л
043. IF !M*I>0 AND L<10 THEN C=0Л
044. @SЛ
045. S=S%88+1:IF C(S) THEN @SЛ
046. C(S)=C:M(I)=M(I+3):M(I+3)=SЛ
047. IF C THEN SPSET S,ASC(MID$(” Y-h`”,C,1))-32,3+Z,0,0,!Z:SPOFS S,192+(I>1)*16,32-!I*16Л
048. NEXTЛ
049. J=!C(M(1)):GOSUB @PЛ
050. IF !M(0) THEN WAIT 60:GOTO @EЛ
051. X=3:T=J*16-32:R=0:C=0:U=0:G=0Л
052. W=L/5 OR 0:W=(W*W+4)*(L%5+1)/64Л
053. IF W>16 THEN W=16Л
054. Л
055. ′■ CONTROLЛ
056. @CЛ
057. B=BTRIG()Л
058. U=(U*BUTTON()OR B AND 2)/2Л
059. IF U AND W<8 THEN T=T+8 ELSE T=T+WЛ
060. Y=(192-T)/16 OR 0:GOSUB @JЛ
061. IF !Z THEN C=0 ELSE C=C+1:Y=Y+1:T=192-Y*16:IF C==1 THEN BEEP 24Л
062. V=1-(B/4+1 AND 3)%3Л
063. IF V THEN X=X+V:GOSUB @J:X=X-V*Z:IF !Z THEN BEEP 31Л
064. V=3+(B/16*!J+1 AND 3)%3Л
065. IF V!=4 THEN R=R+V:GOSUB @J:R=(R-V*Z)%4:IF !Z THEN BEEP 27Л
066. IF B AND 512 THEN BGMSTOP:BEEP 4:GOTO @IЛ
067. FOR I=0 TO !J*2:Z=(I+R)%4Л
068. SPOFS M(I),(X+(Z>1))*16+64,T+(Z+1 AND 2)*8Л
069. NEXTЛ
070. VSYNC 1:IF C<30-U*29 THEN @CЛ
071. FOR I=0 TO !J*2:Z=(I+R)%4Л
072. F(X+(Z>1),Y-(Z+1 AND 2)/2)=M(I)Л
073. NEXTЛ
074. Л
075. ′■ REFRESHЛ
076. @RЛ
077. FOR I=1TO 88Л
078. IF C(I)==5 THEN C(I)=0:SPCLR IЛ
079. NEXTЛ
080. Л
081. ′■ FALLЛ
082. Z=0:P=0Л
083. FOR X=1 TO 6:H=0Л
084. FOR Y=1 TO 13:F=F(X,Y)Л
085. IF F THEN H=H+1:W=Y-H:SPOFS F,X*16+64,192-H*16,W*2:SWAP F(X,Y),F(X,H):IF Z<W THEN Z=WЛ
086. IF C(F)>2 THEN P=X:Q=HЛ
087. NEXT:H(X)=HЛ
088. NEXTЛ
089. IF Z THEN WAIT Z*2:BEEP 24Л
090. Л
091. ′Й ERASEЛ
092. C=7-K/2 OR 0:D=0Л
093. FOR Y=1 TO 13:Z=6Л
094. FOR X=1TO 6:Z=Z-(C(F(X,Y))==1):NEXTЛ
095. IF !Z THEN D=D+1:FOR X=1 TO 6:F=F(X,Y):F(X,Y)=0:C(F)=5:SPCHR F,240:SPANIM F,8,C:NEXTЛ
096. NEXTЛ
097. IF D THEN A=A+K*POW(2,D+!!G)*10:BEEP 30,-4096:GOSUB @P:WAIT C*8:GOTO @RЛ
098. Л
099. ′■ CAPTUREЛ
100. IF !P THEN @TЛ
101. Z=0:E=F(P,Q):V=C(E)*2-7Л
102. F(P,Q)=0:C(E)=0:SPANIM E,4,CЛ
103. @GЛ
104. W=C(F(P,Q-1))!=1Л
105. Z=!W*(Z OR(C(F(P-1,Q))==1)OR(C(F(P+1,Q))==1)*2)Л
106. IF Z==3 THEN SPCLR E:WAIT C*4:GOTO @RЛ
107. Q=Q-W:P=P+!W*VЛ
108. IF C(F(P,Q))==1 THEN P=P-V*2:V=-VЛ
109. SPCHR E,68-!W*V*4Л
110. SPOFS E,P*16+64,192-Q*16,C*2Л
111. WAIT C*2:F=F(P,Q)Л
112. IF F THEN F(P,Q)=0:C(F)=5:SPCHR F,48:SPANIM F,4,4:G=G+1:A=A+K*(G+1):BEEP 12,G*96:GOSUB @PЛ
113. GOTO @GЛ
114. Л
115. ′■ CHOKED?Л
116. @TЛ
117. N=(N+(L<99))%15:L=L+!NЛ
118. IF !N AND L%5==0 THEN BEEP 38Л
119. GOSUB @P:WAIT 12Л
120. IF !F(3,12)*!F(4,12) THEN @EЛ
121. Л
122. ′■ GAMEOVERЛ
123. FOR Y=1 TO 12:FOR X=1TO 6Л
124. F=F(X,Y)Л
125. IF C(F)==1 THEN SPCHR F,56Л
126. NEXT:BEEP 9:VSYNC 5:NEXTЛ
127. BGMSTOP:BEEP 11:COLOR 0Л
128. LOCATE 12,10:? ”GAMEOVER”Л
129. @VЛ
130. VSYNC 1Л
131. IF !(BTRIG() AND 560) THEN @VЛ
132. BEEP 4:GOTO @IЛ
133. Л
134. ′■ MOVABLE?Л
135. @JЛ
136. IF J THEN Z=H(X)>=Y:RETURNЛ
137. Z=H(X)>=Y-(R!=2)OR H(X+1)>=Y-(R!=3)Л
138. RETURNЛ
139. Л
140. ′■ STATUSЛ
141. @PЛ
142. COLOR 3:LOCATE 1,3Л
143. ? ”TREASURE”:? ” ATTACK”Л
144. COLOR 0Л
145. LOCATE 23,19:? ”LV ”;L;” ”Л
146. LOCATE 23,21:? ”SC ”;AЛ
147. RETURNЛ
148. ′─────────────────────── EOFЛ
※コードのHTML生成にPTC2HTMLを使用しています。
モドル BACK