※2012年プチコン大喜利応募作品
画面内に、トランポリンみたいに跳ねられる四角いパネルが散らばっているので、上手く跳ね上がって、どんどん画面手前方向に進んでください。There are square panels around you, You must jump on them and go up.
50枚おきに青いパネルが現れ、それで飛び跳ねることでレベルが上がっていきます。A blue panel will appear every 50 panels. A level is cleared if you jump on it.
パネルに乗り損なって下まで落下してしまうとゲームオーバーです。The game is over if you miss the panel and fall toward bottom.
タイトル画面では、何かボタン(ABXY)を押すことでゲームを開始します。画面中央の魔法使いの女の子を十字キーで上下左右に操作します。You can start the game by any button (ABXY). You can move the character by cross-key.
ゲーム中はSTARTボタンでポーズができます。もう一度押すと解除できます。You can pause and resume the game by start button.
ゲームオーバーになってしまったら、何かボタンを押すことでゲームを再挑戦できます。You can retry the game by any button after the game is over.
BT | ボタンの状態 |
F$ | 現在のレベルで出現するパネルの種類 |
FA() | パネル描画時の透明度 |
FB,FE | リングバッファ制御用インデックス番号 |
FH() | 何枚目のパネルか |
FS() | パネルの大きさ |
FT() | パネルの種類 (1:橙 2:緑 3:黄 4:茶 5:青) |
FU | 奥行き移動量 |
FV,FW | 画面スクロール量 |
FV(),FW() | パネルの移動量 |
FX(),FY(),FZ() | パネルの位置 |
LV | レベル |
PA | プレイヤーのアニメーション状態 (0:アニメしない 1:アニメする) |
PF | ゲームの状態 (0:通常 1:レベル開始前 2:レベルクリア直後) |
PH | 到達したパネルの枚数 |
PM | プレイヤーが跳ねたパネルのインデックス番号 |
PX,PY | プレイヤーの画面中央からの相対位置 |
A | 雑用 (パネル描画時の透明度) |
C$,C(),G() | 雑用 (カラーパレット設定) |
D,R | 雑用 (角度・距離) |
I,J,K | 汎用ループカウンタ |
Q | 雑用 (いろいろ) |
S | 雑用 (パネルの大きさ) |
T | 雑用 (パネルの種類) |
T$ | 雑用 (タイトル画面描画用) |
V,W | 雑用 (主に移動量算出用) |
X,Y,Z | 雑用 (主に座標計算用) |
001. ′┌─────────────────────────┐Л 002. ′│ PRG:HOPPER by OBONO │Л 003. ′└─────────────────────────┘Л 004. Л 005. ′┝┝┝ MAIN PROCEDURE ┰┰┰Л 006. Л 007. ′--- INITIALIZE & SHOW TITLEЛ 008. Л 009. ACLSЛ 010. CLEARЛ 011. GOSUB @COЛ 012. GOSUB @TIЛ 013. Л 014. ′--- WAIT & START GAMEЛ 015. Л 016. @TLЛ 017. IF !(BUTTON() AND 240) THEN @TLЛ 018. GOSUB @STЛ 019. GOSUB @FIЛ 020. Л 021. ′--- MAIN LOOPЛ 022. Л 023. @LPЛ 024. FV=-PX/4Л 025. FW=-PY/4Л 026. IF FU>-4 THEN FU=FU-1/16Л 027. IF FU<0 THEN PM=-1:IF PF==2 THEN GOSUB @FIЛ 028. GOSUB @PMЛ 029. Л 030. FOR I=0 TO 9Л 031. IF FT(I) THEN GOSUB @FMЛ 032. NEXTЛ 033. IF FU<0 AND PM>=0 THEN GOSUB @PSЛ 034. IF !PF AND FZ(FE)>0 AND FT(FE)!=5 THEN GOSUB @FNЛ 035. IF FB!=FE AND FZ(FB)>256 THEN GOSUB @FRЛ 036. Л 037. GCLS 32Л 038. I=FBЛ 039. @LDЛ 040. GOSUB @FDЛ 041. IF I!=FE THEN I=(I+1)%10:GOTO @LDЛ 042. SPOFS 0,PX+128,PY+96Л 043. Л 044. VSYNC 1Л 045. IF FZ(FB)<0 THEN GOSUB @OV:GOTO @TLЛ 046. GOTO @LPЛ 047. Л 048. ′┝┝┝ SUB ROUTINES (GAME) ┰┰┰Л 049. Л 050. ′--- MOVE PLAYERЛ 051. Л 052. @PMЛ 053. BT=BUTTON()Л 054. IF PF THEN BT=0Л 055. IF BT AND 1024 THEN GOSUB @PZЛ 056. V=((BT AND 8)/8-(BT AND 4)/4)*4Л 057. W=((BT AND 2)/2-(BT AND 1) )*4Л 058. IF V*W THEN V=V*.75:W=W*.75Л 059. PX=PX+V+FVЛ 060. PY=PY+W+FWЛ 061. IF FU>3 THEN RETURNЛ 062. SPCHR 0,100Л 063. IF !PA AND (V!=0 OR W!=0) THEN SPANIM 0,4,4:PA=1Л 064. IF PA AND !V AND !W THEN SPANIM 0,1,4:PA=0Л 065. RETURNЛ 066. Л 067. ′--- SPRING PLAYERЛ 068. Л 069. @PSЛ 070. IF PH<FH(PM) THEN PH=FH(PM):LOCATE 7,1:PRINT PHЛ 071. PA=0Л 072. SPCHR 0,125Л 073. SPANIM 0,1,4Л 074. T=FT(PM)Л 075. IF T==3 THEN FV(PM)=1Л 076. IF T!=5 THEN @PS2Л 077. LV=LV+1Л 078. FU=6Л 079. PF=2Л 080. COLOR 3Л 081. LOCATE 11,9Л 082. PRINT ”EXCELLENT!”Л 083. LOCATE 9,14Л 084. PRINT ”Try next level”Л 085. COLOR 0Л 086. BGMSTOPЛ 087. BEEP 5Л 088. RETURNЛ 089. Л 090. @PS2Л 091. FU=4Л 092. BEEP 8Л 093. IF !PF THEN RETURNЛ 094. PF=0Л 095. CLSЛ 096. LOCATE 1,1Л 097. PRINT ”Floor ”;PHЛ 098. LOCATE 23,22Л 099. PRINT ”Level ”;LV+1Л 100. BGMPLAY (LV%3+1)*8+(LV%3==2)*3Л 101. RETURNЛ 102. Л 103. ′--- INITIALIZE FLOORSЛ 104. Л 105. @FIЛ 106. F$=””Л 107. IF LV<6 THEN F$=”1”Л 108. IF LV AND 1 THEN F$=F$+”2”Л 109. IF LV AND 2 THEN F$=F$+”3”Л 110. IF LV AND 4 OR LV==8 THEN F$=F$+”4”Л 111. FOR I=0 TO 9Л 112. FT(I)=0Л 113. NEXTЛ 114. FX(0)=PXЛ 115. FY(0)=PYЛ 116. FZ(0)=256Л 117. FS(0)=64-LV*3Л 118. FH(0)=LV*50Л 119. FT(0)=1Л 120. FB=0Л 121. FE=0Л 122. PF=1Л 123. RETURNЛ 124. Л 125. ′--- MOVE FLOORЛ 126. Л 127. @FMЛ 128. X=FX(I)+FVЛ 129. Y=FY(I)+FWЛ 130. Z=FZ(I)+FUЛ 131. S=FS(I)Л 132. T=FT(I)Л 133. A=31Л 134. IF T==2 THEN X=X+FV(I):Y=Y+FW(I)Л 135. IF T==3 AND FV(I) THEN S=S-1:IF S<0 THEN S=0Л 136. IF T==3 AND Z<0 THEN FV(I)=0:S=FW(I)Л 137. IF X<-256 THEN X=X+512Л 138. IF X> 256 THEN X=X-512Л 139. IF Y<-256 THEN Y=Y+512Л 140. IF Y> 256 THEN Y=Y-512Л 141. IF ABS(X)>=256-A THEN A=FLOOR(256-ABS(X))Л 142. IF ABS(Y)>=256-A THEN A=FLOOR(256-ABS(Y))Л 143. IF Z>=256-A*2 THEN A=FLOOR((256-Z)/2)Л 144. FX(I)=XЛ 145. FY(I)=YЛ 146. FZ(I)=ZЛ 147. FS(I)=SЛ 148. FA(I)=AЛ 149. IF FU>0 OR Z<0 OR Z+FU-1/16>=0 THEN RETURNЛ 150. IF S>0 AND ABS(X-PX)<S AND ABS(Y-PY)<S THEN PM=IЛ 151. RETURNЛ 152. Л 153. ′--- NEW FLOORЛ 154. Л 155. @FNЛ 156. Z=FZ(FE)-32-LV*2Л 157. H=FH(FE)+1Л 158. T=VAL(MID$(F$,RND(LEN(F$)),1))Л 159. IF H%50==0 AND LV<11 THEN T=5Л 160. FE=(FE+1)%10Л 161. FX(FE)=RND(512)-256Л 162. FY(FE)=RND(512)-256Л 163. FZ(FE)=ZЛ 164. FS(FE)=64-LV*3Л 165. FH(FE)=HЛ 166. FT(FE)=TЛ 167. FV(FE)=0Л 168. FW(FE)=0Л 169. IF T==2 THEN D=PI()*RND(256)/128:R=2+LV/8:FV(FE)=COS(D)*R:FW(FE)=SIN(D)*RЛ 170. IF T==3 THEN FW(FE)=FS(FE)Л 171. IF T==4 THEN FS(FE)=FS(FE)/2Л 172. RETURNЛ 173. Л 174. ′--- REMOVE FLOORЛ 175. Л 176. @FRЛ 177. FT(FB)=0Л 178. FB=(FB+1)%10Л 179. RETURNЛ 180. Л 181. ′--- DRAW FLOORЛ 182. Л 183. @FDЛ 184. IF FZ(I)<0 THEN RETURNЛ 185. Q=1+FZ(I)/16Л 186. S=FS(I)/QЛ 187. T=FT(I)Л 188. A=FA(I)Л 189. IF A<0 OR S==0 THEN RETURNЛ 190. X=FX(I)/Q+128Л 191. Y=FY(I)/Q+96Л 192. IF I==PM THEN X=X+(RND(3)-1)*FU:Y=Y+(RND(3)-1)*FUЛ 193. GFILL X-S,Y-S,X+S,Y+S,T*32+AЛ 194. RETURNЛ 195. Л 196. ′┝┝┝ SUB ROUTINES (OTHER) ┰┰┰Л 197. Л 198. ′--- SET COLOR PALETTEЛ 199. Л 200. @COЛ 201. READ G(0),G(1),G(2)Л 202. FOR I=0 TO 4Л 203. READ C(0),C(1),C(2)Л 204. FOR J=0 TO 31Л 205. C$=””Л 206. FOR K=0 TO 2Л 207. C$=C$+HEX$(C(K)*J+G(K)*(31-J),2)Л 208. NEXTЛ 209. COLSET ”GRP”,I*32+J+32,C$Л 210. NEXTЛ 211. NEXTЛ 212. RETURNЛ 213. DATA 1,3,0, 8,5,2, 2,7,2Л 214. DATA 8,8,0, 7,3,1, 5,5,8Л 215. Л 216. ′--- TITLE SCREENЛ 217. Л 218. @TIЛ 219. GCLS 32Л 220. COLOR 3Л 221. FOR I=0 TO 4Л 222. READ T$Л 223. BEEP 8-(I==4)*3Л 224. FOR J=1 TO LEN(T$)Л 225. LOCATE 4,8+IЛ 226. PRINT RIGHT$(T$,J)Л 227. VSYNC 1Л 228. NEXTЛ 229. NEXTЛ 230. COLOR 4Л 231. LOCATE 1,19Л 232. PRINT ”2012.9.26 Programmed by OBONO”Л 233. LOCATE 2,20Л 234. PRINT ”http://d.hatena.ne.jp/OBONO/”Л 235. COLOR 0Л 236. LOCATE 1,16Л 237. PRINT ”Press any button to start game”Л 238. RETURNЛ 239. DATA ”┻ ┻┛┳┏╋┓┻┏╋┓┻┏╋┓┻┏┏━┻┏╋┓”Л 240. DATA ”┻┠┨┛┻ ┻┛┻┠┨━┻┠┨━┻┠┠ ┻┠┨━”Л 241. DATA ”┻ ┻┛┻ ┻┛┻ ┻ ┻ ┻┃┯ ”Л 242. DATA ”┃ ┃━ ┏┏ ┃ ┃ ┃┏┏ ┃ ┃━”Л 243. DATA ” in Petit Computer”Л 244. Л 245. ′--- INITIALIZE GAMEЛ 246. Л 247. @STЛ 248. PX=0Л 249. PY=0Л 250. PH=0Л 251. LV=0Л 252. FU=0Л 253. PA=0Л 254. SPSET 0,100,2,0,0,3Л 255. SPHOME 0,8,8Л 256. SPOFS 0,128,96Л 257. SPANIM 0,1,4Л 258. CLSЛ 259. LOCATE 13,14Л 260. PRINT ”Ready?”Л 261. BEEP 32Л 262. RETURNЛ 263. Л 264. ′--- PAUSE AND RESUMEЛ 265. Л 266. @PZЛ 267. Q=0Л 268. LOCATE 12,14Л 269. PRINT ”Pause...”Л 270. BEEP 3Л 271. @PZ2Л 272. IF (BUTTON() AND 1024)==(Q%2)*1024 THEN Q=Q+1Л 273. IF Q<3 THEN @PZ2Л 274. LOCATE 12,14Л 275. PRINT ” ”*8Л 276. VSYNC 1Л 277. RETURNЛ 278. Л 279. ′--- GAME OVERЛ 280. Л 281. @OVЛ 282. SPCHR 0,120Л 283. SPANIM 0,4,8Л 284. BGMSTOPЛ 285. BEEP 14Л 286. VSYNC 90Л 287. BGMPLAY 6Л 288. LOCATE 11,14Л 289. PRINT ”GAME OVER”Л 290. LOCATE 1,16Л 291. PRINT ”Press any button to retry game”Л 292. RETURNЛ
※コードのHTML生成にPTC2HTMLを使用しています。