トレジャーバレー by えぬおう

再生

 画面固定型のサイドビューアクションゲームが登場だ。
 主人公の操作は左右ボタンで移動、Aボタンでジャンプ。まずは画面内に散らばる星を全て集めよう。そして鍵を取ってから扉に入ればゴール、ステージクリアだ。
 あちこちにあるコインを取ればスコアがアップするぞ。多く集めながら全5面のステージを突破しよう。

私が作りました

えぬおう

プチコン作成ゲーム1本目です。スプライトを表示させたところから気がついたら4日後には出来上がっていました。


 CHECK POiNT 

博士
スプライトを使った、本格的なジャンプアクションゲームじゃな。

神崎
簡単なようで意外とお邪魔キャラの配置に手応えがあるね。半キャラ単位のフワッとした操作感も、独特のいい味があるよ。

ワンパク
悪く言えば操作にクセが強いってコトだが……慣れてくるとたしかにココが面白みではあるな!

インテリ
スコアアタックの要素が強いけど、慣れきっちゃうとスコアが頭打ちになっちゃう。クリア時間によってスコアに変化があると、さらに楽しめるかもしれないね。

博士
ステージ構成はプログラムを見ての通り、わかりやすいDATA文になっておるから、各自ここを工夫して新しいステージを作るのもいいじゃろうな。

プログラムリスト

  1. CLEAR
  2. VISIBLE 1,1,1,1,1,1
  3. BGPAGE 0
  4. SPPAGE 0
  5. BGOFS 0,0,0
  6. BGCLIP 0,0,31,23
  7. BGMSTOP
  8. ’ハイケイ クロ0 レンカ゛1 イシ2 クロ3
  9. ’フ゛ロック イワ4 キヒタ゛リ5 キミキ゛6 キ7
  10. @LMAP1
  11. DATA 0000000000000000
  12. DATA 2222002222002222
  13. DATA 5656005656005656
  14. DATA 0220000220000220
  15. DATA 0220005656000220
  16. DATA 0220000220044420
  17. DATA 2222222222244422
  18. DATA 4444444444444411
  19. DATA 1111111111111111
  20. DATA 7111111111111111
  21. DATA 1111111111111111
  22. DATA 4444444444444444
  23. ’ナシ0 コイン1 ヒ2 スタ-3
  24. ’カキ゛4 トヒ゛ラ5 フ゜レイヤ-6 テキ7
  25. @LOBJ1
  26. DATA 0000000000000000
  27. DATA 0330000330000330
  28. DATA 0000000000000000
  29. DATA 0000001111001111
  30. DATA 0000000000000000
  31. DATA 0000000000000000
  32. DATA 6000000000000000
  33. DATA 0000000000000000
  34. DATA 0000000000000000
  35. DATA 0000000000000000
  36. DATA 4112211221122115
  37. DATA 0000000000000000
  38. @LMAP2
  39. DATA 2222222222222222
  40. DATA 2222222222222222
  41. DATA 2727272727224444
  42. DATA 2200220027002200
  43. DATA 2200220027002200
  44. DATA 2222222244442222
  45. DATA 2222222422222222
  46. DATA 2222222222222222
  47. DATA 2200224422002244
  48. DATA 2000024420000244
  49. DATA 2000024420000244
  50. DATA 4444444444444444
  51. @LOBJ2
  52. DATA 0401010100000600
  53. DATA 0000000000000005
  54. DATA 0000000000000000
  55. DATA 0222222200000000
  56. DATA 0000000011110000
  57. DATA 0000000000000000
  58. DATA 0000001100000011
  59. DATA 0000000000000000
  60. DATA 0011000000110000
  61. DATA 0022002200220000
  62. DATA 3022032230220300
  63. DATA 0000000000000000
  64. @LMAP3
  65. DATA 0000044400000222
  66. DATA 0000022200000222
  67. DATA 0007044427272222
  68. DATA 0001000222222444
  69. DATA 0701000002227222
  70. DATA 0101000000562222
  71. DATA 0101111100222222
  72. DATA 0101115656222222
  73. DATA 0144111111222222
  74. DATA 4444144444444444
  75. DATA 4111111111111114
  76. DATA 4444444444444444
  77. @LOBJ3
  78. DATA 0000000001010003
  79. DATA 0000311000000000
  80. DATA 0300000000000075
  81. DATA 0000000000000000
  82. DATA 0000000110000000
  83. DATA 0011000000000000
  84. DATA 0000000000000000
  85. DATA 0000000000000000
  86. DATA 6000000002011023
  87. DATA 0000000000000000
  88. DATA 0400000111111110
  89. DATA 0000000000000000
  90. @LMAP4
  91. DATA 0000000000000000
  92. DATA 4400044444400044
  93. DATA 0000000000000000
  94. DATA 4400044444400044
  95. DATA 0000000000000000
  96. DATA 4400044444400044
  97. DATA 0000000000000000
  98. DATA 4400044444400044
  99. DATA 0000000000000000
  100. DATA 4400044444400044
  101. DATA 0000000000000000
  102. DATA 4444444444444444
  103. @LOBJ4
  104. DATA 4001000030001005
  105. DATA 0000002222000000
  106. DATA 0001000300001000
  107. DATA 0000002222000000
  108. DATA 7001000030001007
  109. DATA 0000002222000000
  110. DATA 0001000300001000
  111. DATA 0000002222000000
  112. DATA 0001000030001000
  113. DATA 0000002222000000
  114. DATA 0001000300001006
  115. DATA 0000000000000000
  116. @LMAP5
  117. DATA 1011101011101111
  118. DATA 4010101010101010
  119. DATA 4010100010100014
  120. DATA 4010004010000014
  121. DATA 4000004010000014
  122. DATA 4000004000004004
  123. DATA 4004004000004004
  124. DATA 4204024000004204
  125. DATA 4224024204004224
  126. DATA 4224224204024224
  127. DATA 4224224224224224
  128. DATA 4444444444444444
  129. @LOBJ5
  130. DATA 5000003000000006
  131. DATA 0000000000000004
  132. DATA 0000000000003000
  133. DATA 1003000000000000
  134. DATA 0000000000000000
  135. DATA 1000001003001001
  136. DATA 0000000000000000
  137. DATA 0001000000001001
  138. DATA 0000001000000000
  139. DATA 0000000001000000
  140. DATA 7220227227220227
  141. DATA 0000000000000000
  142. DIM SPNUM(16,16)
  143. DIM ENLIST(16,6)
  144. DIM MAPDAT(17,16)
  145. DIM OBJDAT(17,16)
  146. DIM JMPDAT(8)
  147. JMPDAT(0)=-16
  148. JMPDAT(1)=-8
  149. JMPDAT(2)=-4
  150. JMPDAT(3)=0
  151. JMPDAT(4)=4
  152. JMPDAT(5)=8
  153. JMPDAT(6)=16
  154. JMPDAT(7)=0
  155. DIM BGPAT(8,5)
  156. @LBGPAT
  157. DATA 0,0,0,0,8
  158. DATA 64,65,96,97,8
  159. DATA 43,44,75,76,8
  160. DATA 0,0,0,0,8
  161. DATA 195,196,227,228,8
  162. DATA 45,46,45,46,8
  163. DATA 46,47,46,47,8
  164. DATA 45,47,45,47,8
  165. RESTORE @LBGPAT
  166. FOR X=0 TO 8-1
  167. FOR Y=0 TO 5-1
  168. READ A
  169. BGPAT(X,Y)=A
  170. NEXT Y
  171. NEXT X
  172. DIM OBJPAT(8,5)
  173. @LOBJPAT
  174. DATA 36,2,4,20,0
  175. DATA 42,2,2,20,0
  176. DATA 156,2,4,20,0
  177. DATA 14,10,1,60,0
  178. DATA 58,6,1,60,0
  179. DATA 64,3,4,10,0
  180. DATA 128,3,2,10,0
  181. RESTORE @LOBJPAT
  182. FOR X=1 TO 8-1
  183. FOR Y=0 TO 5-1
  184. READ A
  185. OBJPAT(X,Y)=A
  186. NEXT Y
  187. NEXT X
  188. DIM BGI(5)
  189. BGI(0)=14
  190. BGI(1)=1
  191. BGI(2)=9
  192. BGI(3)=1
  193. BGI(4)=9
  194. SC=0
  195. STG=0
  196. @TITLE
  197. CLS
  198. SPCLR
  199. GOSUB @BGCLR
  200. LOCATE 10,8
  201. COLOR 3
  202. PRINT ”┝トレシ゛ャ-ハ゛レ-┰”
  203. LOCATE 10,14
  204. COLOR 13
  205. PRINT ”PUSH АBUTTON”
  206. LOCATE 0,0
  207. COLOR 15
  208. PRINT ”SC:”;SC
  209. LOCATE 12,0
  210. PRINT ”FLOOR:”;STG+1
  211. @TITLE1
  212. BTN=BUTTON()
  213. IF (BTN AND &H10)==0 THEN @TITLE1
  214. SC=0
  215. RST=3
  216. STG=0
  217. LVL=20
  218. @RESTART
  219. CLS
  220. SPCLR
  221. GOSUB @BGCLR
  222. LOCATE 12,10
  223. PRINT ”FLOOR:”;STG+1
  224. ON STG GOSUB @STAGE1,@STAGE2,@STAGE3,@STAGE4,@STAG5
  225. BGMPLAY 4
  226. VSYNC(180)
  227. CLS
  228. ’GOSUB @BGCLR
  229. GOSUB @BGDRAW
  230. GOSUB @OBJDRAW
  231. LOCATE 0,0
  232. PRINT ”SC:”;SC
  233. LOCATE 12,0
  234. PRINT ”FLOOR:”;STG+1
  235. SPSET 8,0,0,0,0,1
  236. SPSET 4,0,0,0,0,1
  237. GOSUB @START
  238. BGMPLAY BGI(STG)
  239. @LOOP1
  240. BTN=BUTTON()
  241. IF SPCHK(8)==FALSE THEN GOSUB @PLAYER
  242. FOR ENL=0 TO EN-1
  243. ENSP=ENLIST(ENL,0)
  244. IF SPCHK(ENSP)==FALSE THEN GOSUB @ENEMY
  245. IF MK <=0 THEN GOSUB @ENHIT
  246. NEXT ENL
  247. GOTO @LOOP1
  248. @STAGE1
  249. RESTORE @LOBJ1
  250. GOSUB @OBJREAD
  251. RESTORE @LMAP1
  252. GOSUB @MAPREAD
  253. RETURN
  254. @STAGE2
  255. RESTORE @LOBJ2
  256. GOSUB @OBJREAD
  257. RESTORE @LMAP2
  258. GOSUB @MAPREAD
  259. RETURN
  260. @STAGE3
  261. RESTORE @LOBJ3
  262. GOSUB @OBJREAD
  263. RESTORE @LMAP3
  264. GOSUB @MAPREAD
  265. RETURN
  266. @STAGE4
  267. RESTORE @LOBJ4
  268. GOSUB @OBJREAD
  269. RESTORE @LMAP4
  270. GOSUB @MAPREAD
  271. RETURN
  272. @STAGE5
  273. RESTORE @LOBJ5
  274. GOSUB @OBJREAD
  275. RESTORE @LMAP5
  276. GOSUB @MAPREAD
  277. RETURN
  278. @MAPREAD
  279. FOR Y=4 TO 16-1
  280. READ A$
  281. FOR X=0 TO 16-1
  282. MAPDAT(X,Y)=VAL(MID$(A$,X,1))
  283. NEXT X
  284. NEXT Y
  285. RETURN
  286. @OBJREAD
  287. FOR Y=4 TO 16-1
  288. READ A$
  289. FOR X=0 TO 16-1
  290. OBJDAT(X,Y)=VAL(MID$(A$,X,1))
  291. NEXT X
  292. NEXT Y
  293. RETURN
  294. @PLAYER
  295. IF (BTN AND &H04)==0 THEN @PLAYER5
  296. X=X-8
  297. IF X<0 THEN X=0
  298. SPCHR 8,72,2,0,0,1
  299. @PLAYER5
  300. IF (BTN AND &H08)==0 THEN @PLAYER6
  301. X=X+8
  302. IF X>256-16 THEN X=256-16
  303. SPCHR 8,64,2,0,0,1
  304. @PLAYER6
  305. IF JMP<=6 THEN @PLAYER1
  306. I=FLOOR(X/16)
  307. J=FLOOR((X+15)/16)
  308. L=FLOOR(Y/16)+1+4
  309. IF MAPDAT(I,L)<4 OR MAPDAT(J,L)<4 THEN JMP=4
  310. IF (BTN AND &H10)!=0 THEN JMP=0:BEEP 8,0,88
  311. @PLAYER1
  312. Y=Y+JMPDAT(JMP)
  313. IF JMP<3 THEN @PLAYER3
  314. I=FLOOR(X/16)
  315. J=FLOOR((X+15)/16)
  316. L=FLOOR(Y/16)+1+4
  317. IF MAPDAT(I,L)>3 AND MAPDAT(J,L)>3 THEN JMP=7:Y=FLOOR(Y/16)*16
  318. @PLAYER3
  319. IF JMP<6 THEN JMP=JMP+1
  320. SPOFS 8,X,Y,10
  321. SPOFS 4,X,Y,10
  322. I=FLOOR(X/16)
  323. L=FLOOR(Y/16)+4
  324. ON OBJDAT(I,L) GOSUB @PLAYER4,@BONUS,@TRAP,@STAR,@GETKEY,@DOOR,@PLAYER4,@PLAYER4
  325. @PLAYER4
  326. IF MK<=0 THEN @PLAYER2
  327. IF MK==16 THEN SPCHR 4,52,2,0,0,1:SPANIM 4,4,10,0
  328. MK=MK-1
  329. IF MK>0 THEN @PLAYER2
  330. SPCHR 4,448,0,0,0,1
  331. SPANIM 4,1,10,0
  332. @PLAYER2
  333. RETURN
  334. @BONUS
  335. OBJDAT(I,L)=0
  336. SPCLR SPNUM(I,L)
  337. I=10
  338. GOSUB @SCORE
  339. BEEP 7,0,80
  340. RETURN
  341. @OUT
  342. SPCHR 8,88,2,0,0,1
  343. SPANIM 8,4,10,2
  344. SPOFS 8,X,Y,10
  345. BEEP 14,0,80
  346. @OUT1
  347. IF SPCHK(8)==TRUE THEN @OUT1
  348. SPOFS 8,X,Y,10
  349. VSYNC(90)
  350. RST=RST-1
  351. IF RST<=0 THEN @OVER
  352. RETURN
  353. @TRAP
  354. GOSUB @OUT
  355. GOSUB @START
  356. RETURN
  357. @STAR
  358. OBJDAT(I,L)=0
  359. SPCLR SPNUM(I,L)
  360. I=50
  361. GOSUB @SCORE
  362. KY=KY-1
  363. BEEP 12,0,80
  364. RETURN
  365. @GETKEY
  366. IF KY>0 THEN RETURN
  367. OBJDAT(I,L)=0
  368. SPCLR SPNUM(I,L)
  369. I=100
  370. GOSUB @SCORE
  371. KY=-1
  372. BEEP 5,0,80
  373. RETURN
  374. @SCORE
  375. SC=SC+I
  376. LOCATE 0,0
  377. PRINT ”SC:”;SC
  378. RETURN
  379. @DOOR
  380. IF KY>=0 THEN RETURN
  381. I=500
  382. GOSUB @SCORE
  383. LOCATE 10,10
  384. PRINT ”  CLEARИ  ”
  385. BGMPLAY 5
  386. STG=STG+1
  387. IF STG<5 THEN @DOOR1
  388. STG=0
  389. LVL=10
  390. RST=RST+1
  391. I=500
  392. GOSUB @SCORE
  393. LOCATE 10,12
  394. PRINT ”ALL CLEARО”
  395. BGMPLAY 7
  396. VSYNC(600)
  397. GOTO @RESTART
  398. @DOOR1
  399. VSYNC(120)
  400. GOTO @RESTART
  401. @OVER
  402. LOCATE 10,10
  403. PRINT ”GAME  OVER”
  404. BGMPLAY 6
  405. VSYNC(120)
  406. GOTO @TITLE
  407. @START
  408. LOCATE 25,0
  409. PRINT ”REST:”;RST
  410. X=PX*16
  411. Y=PY*16
  412. JMP=7
  413. MK=16
  414. SPCHR 8,64,2,0,0,1
  415. SPANIM 8,4,10,0
  416. SPOFS 8,X,Y,1
  417. SPCHR 4,52,2,0,0,1
  418. SPANIM 4,4,10,0
  419. SPOFS 4,X,Y,1
  420. @START1
  421. IF SPCHK(8)==TRUE THEN @START1
  422. RETURN
  423. @ENEMY
  424. ENX=ENLIST(ENL,1)
  425. ENY=ENLIST(ENL,2)
  426. ENJ=ENLIST(ENL,3)
  427. IF ENJ<=6 THEN @ENEMY2
  428. IF X>ENX THEN ENX=ENX+8:SPCHR ENSP,OBJPAT(7,0),OBJPAT(7,1)
  429. IF X>ENX THEN ENX=ENX-8:SPCHR ENSP,OBJPAT(7,0)+4,OBJPAT(7,1),0,0,1
  430. IF X==ENX THEN ENJ=0
  431. I=FLOOR(ENX/16)
  432. L=FLOOR(ENY/16)+1+4
  433. IF MAPDAT(I,L)<4 THEN ENJ=4
  434. @ENEMY2
  435. IF ENJ>6 THEN @ENEMY1
  436. ENY=ENY+JMPDAT(ENJ)
  437. ENJ=ENJ+1
  438. @ENEMY1
  439. IF ENJ<4 THEN @ENEMY3
  440. I=FLOOR(ENX/16)
  441. L=FLOOR(ENY/16)+1+4
  442. IF MAPDAT(I,L)>3 THEN ENJ=7:ENY=FLOOR(ENY/16)*16
  443. @ENEMY3
  444. SPOFS ENSP,ENX,ENY,LVL
  445. ENLIST(ENL,1)=ENX
  446. ENLIST(ENL,2)=ENY
  447. ENLIST(ENL,3)=ENJ
  448. RETURN
  449. @ENHIT
  450. ENX=ENLIST(ENL,1)
  451. ENY=ENLIST(ENL,2)
  452. IF ENX>=X+16 OR ENX+16<=X THEN @ENHIT1
  453. IF ENY>=Y+16 OR ENY+16<=Y THEN @ENHIT1
  454. GOSUB @OUT
  455. GOSUB @START
  456. @ENHIT1
  457. RETURN
  458. @BGDRAW
  459. FOR Y=0 TO 12-1
  460. FOR X=0 TO 16-1
  461. I=MAPDAT(X,Y+4)
  462. BGPUT 0,X*2,Y*2,BGPAT(I,0),BGPAT(I,4),0,0
  463. BGPUT 0,X*2+1,Y*2,BGPAT(I,1),BGPAT(I,4),0,0
  464. BGPUT 0,X*2,Y*2+1,BGPAT(I,2),BGPAT(I,4),0,0
  465. BGPUT 0,X*2+1,Y*2+1,BGPAT(I,3),BGPAT(I,4),0,0
  466. NEXT X
  467. NEXT Y
  468. RETURN
  469. @OBJDRAW
  470. SP=50
  471. KY=0
  472. EN=0
  473. FOR Y=0 TO 12-1
  474. FOR X=0 TO 16-1
  475. I=OBJDAT(X,Y+4)
  476. IF I==0 AND SP<100 THEN @OBJDRAW2
  477. IF I==3 THEN KY=KY+1
  478. IF I==6 THEN PX=X:PY=Y:GOTO @OBJDRAW2
  479. L=SP
  480. J=X
  481. K=Y
  482. GOSUB @OBJSET
  483. IF I==7 THEN GOSUB @ENMSET
  484. SP=SP+1
  485. @OBJDRAW2
  486. NEXT X
  487. NEXT Y
  488. RETURN
  489. @OBJSET
  490. SPSET L,OBJPAT(I,0),OBJPAT(I,1),0,0,1
  491. SPANIM L,OBJPAT(I,2),OBJPAT(I,3),0
  492. SPOFS L,J*16,K*16,1
  493. SPNUM(J,K+4)=L
  494. RETURN
  495. @ENMSET
  496. ENLIST(EN,0)=L
  497. ENLIST(EN,1)=J*16
  498. ENLIST(EN,2)=K*16
  499. ENLIST(EN,3)=7
  500. EN=EN+1
  501. RETURN
  502. @BGCLR
  503. FOR Y=0 TO 63
  504. FOR X=0 TO 63
  505. BGPUT 0,X,Y,0,0,0,0
  506. NEXT X
  507. NEXT Y
  508. RETURN