2011年05月01日投稿 / 投稿者 : 名無しさん / タグ : 投稿プログラム ゲーム シューティングゲーム 初代対応 移植
ベーマガ1983年8月号 RAN RANさん投稿JR200用「アステロイド・ワールド」の移植です。
デモ画面でАを押すとゲーム開始です。
←→で左右移動、Аでビーム発射です。
ビームを発射するとエネルギーが20減ります。
また、時間の経過とともにエネルギーが減ります。
インベーダを全滅させるとステージクリア、ミサイルにやられるかエネルギーがなくなるとゲームオーバーです。
Аでリスタート、Бで終了です。
当時のゲームらしく、速度を得るためのテクニックを駆使していました。
(ユーザ定義文字の書き換えによる敵移動、表示・移動にPEEK・POKEを使うなど)
コンソールの文字色を得られないことと、文字の背景色を変えられないので、
小細工で対応しました(どちらもプチコンへの要望に記載した)。
プチコンmkII 向けの QR コードです。
- CLEAR:VISIBLE 1,1,0,0,0,1
- BGPAGE 0:COLOR 0:CLS:H=0
- GPAGE 0:GCOLOR 0:GCLS
- DIM L(30),N(5,20),P$(2)
- DIM COL(8),BC(21,24)
- COL(0)=1:COL(1)=11
- COL(2)=13:COL(3)=10
- COL(4)=4:COL(5)=9
- COL(6)=3:COL(7)=0
- GOSUB @USERMOJI
- GOSUB @SETSUMEI
- GOTO @MAIN
- @RESTART
- S=0:G=0
- @NEXTGAME
- G=G+1:GOSUB @SCREEN
- @MAIN
- ON K GOTO @JIKI,@OVER,@DEMO
- @JIKI
- T=T−1:COLOR COL(7)
- LOCATE 24,6:PRINT T;” ”
- IF T<1 THEN @OUT
- GOSUB @BTN
- COLOR COL(7):LOCATE QX,19:PRINT ”┣”
- IF P AND 8 THEN QX=QX+(QX<20):LOCATE QX−1,19:PRINT ” ┣”:GOTO @TEKI
- IF P AND 4 THEN QX=QX−(QX>0):LOCATE QX,19:PRINT ”┣ ”:GOTO @TEKI
- IF P AND 16 THEN BEEP 10:GOTO @FIRE
- @TEKI
- IF RND(2)==0 THEN F=F+(F<6):Y=F−1:GOTO @TEKIMOVE
- F=F−(F>3):Y=F+1
- @TEKIMOVE
- CHRSET ”BGF0”,F+&H80,TEKI$
- CHRSET ”BGF0”,Y+&H80,CLR$
- IF CY>=0 THEN @MISSILE
- X=FLOOR(QX/7):Y=N(X,0)
- @MLOOP
- IF Y==4 THEN @MAIN
- IF N(X,Y)==99 THEN Y=Y−2:N(X,0)=Y:GOTO @MLOOP
- IF N(X,Y+1)==1 THEN CX=6−F+N(X,Y):CY=Y+1:GOTO @MNEXT
- CX=N(X,Y)+F−3:CY=Y+1
- @MNEXT
- D=CHKCHR(CX,CY):E=BC(CX,CY)
- COLOR COL(2):LOCATE CX,CY:PRINT ”┳”:GOTO @MAIN
- @MISSILE
- A=CHKCHR(CX,CY+1)
- IF A==&H8B THEN COLOR E:LOCATE CX,CY:PRINT CHR$(D):CY=−1:GOTO @MAIN
- IF A==&H87 THEN LOCATE CX,CY:PRINT ”◇”:CY=−1:GOTO @OUT
- B=BC(CX,CY+1):CY=CY+1:COLOR COL(2):LOCATE CX,CY:PRINT ”┳”
- COLOR E:LOCATE CX,CY−1:PRINT CHR$(D):D=A:E=B:GOTO @MAIN
- @FIRE
- MX=QX:MY=18:A=CHKCHR(MX,MY):COLOR COL(7):LOCATE MX,MY:PRINT ”┫”:L=1:L(L)=A
- @FIRELOOP
- A=CHKCHR(MX,MY−1):IF A==F+&H80 OR A==&H8A THEN @HIT
- IF A==&H8B THEN L=0:GOTO @FIREEND
- MY=MY−1:L=L+1:COLOR COL(7):LOCATE MX,MY:PRINT ”┫”:L(L)=A:GOTO @FIRELOOP
- @FIREEND
- VSYNC 3
- FOR I=18 TO MY STEP −1
- L=L+1:LOCATE QX,I:PRINT CHR$(L(L))
- NEXT I
- COLOR COL(7):T=T−20:IF T<1 THEN LOCATE 24,6:PRINT ” ”:GOTO @OUT
- GOTO @TEKI
- @HIT
- COLOR COL(7):LOCATE MX,MY−1:PRINT ”◇”:L=0
- IF A==&H8A THEN @FIREEND
- Y=MY−1:X=FLOOR(MX/7)
- COLOR COL(7):LOCATE N(X,Y),Y:PRINT N$
- BEEP 11
- N(X,Y)=99:S=S+10:GOSUB @SCORE
- U=U−1:IF U>0 THEN @FIREEND
- COLOR COL(7):LOCATE 1,22:PRINT ”NEXT−GAME!”:S=S+G*100
- GFILL 0,176,167,183,2
- BGMPLAY 5:VSYNC 120
- GOTO @NEXTGAME
- @OUT
- COLOR COL(2):BC(QX,19)=COL(2):LOCATE QX,19:PRINT ”м”
- BEEP 13:VSYNC 30
- IF H<S THEN H=S:GOSUB @HISCORE
- COLOR COL(7):LOCATE 1,22:PRINT ”マタヤルカ ? (Y=А/N=Б)”
- GFILL 0,176,167,183,4
- K=1:GOTO @TEKI
- @OVER
- GOSUB @BTN
- IF P AND 16 THEN BEEP 3:VSYNC 15:GOTO @RESTART
- IF P AND 32 THEN COLOR COL(7):CLS:GCLS:CHRINIT ”BGF0”:END
- GOTO @TEKI
- @DEMO
- GOSUB @BTN
- IF P AND 16 THEN BEEP 3:VSYNC 15:GOTO @RESTART
- GOTO @TEKI
- @HISCORE
- COLOR COL(7):LOCATE 22,8:PRINT ”ハイスコア”
- LOCATE 24,9:PRINT H
- LOCATE 22,11:PRINT ”スコア”
- @SCORE
- COLOR COL(7):LOCATE 24,12:PRINT S:RETURN
- @SCREEN
- COLOR COL(7):CLS:GCLS:GOSUB @USERTEKI
- CX=0:CY=−1:U=15:K=0:F=3:QX=10:T=1100−G*100:IF T<400 THEN T=400
- COLOR COL(7):LOCATE 0,0:PRINT ”アステロイト゛ ワールト゛”
- LOCATE 22,0:PRINT G;” ケ゛ーム”
- LOCATE 22,5:PRINT ”エネルキ゛ー”
- LOCATE 24,6:PRINT T:GOSUB @HISCORE
- LOCATE 23,22:PRINT ”PETIT”
- FOR I=5 TO 15 STEP 2
- FOR J=0 TO 4
- I0=RND(21):BC(I0,I)=COL(RND(6)+1):COLOR BC(I0,I)
- LOCATE I0,I:PRINT ”┻”
- NEXT J
- NEXT I
- FOR I=6 TO 14 STEP 2
- FOR J=0 TO 14 STEP 7
- A=RND(4):B=RND(2)
- N(FLOOR(J/7),I)=J+A:N(FLOOR(J/7),I+1)=B:COLOR COL(7)
- LOCATE J+A,I:PRINT P$(B)
- N(FLOOR(J/7),0)=I
- NEXT J
- NEXT I
- FOR I=0 TO 22
- LOCATE I,3:PRINT ”╋”
- LOCATE I,21:PRINT ”╋”
- NEXT I
- COLOR COL(7):LOCATE QX,19:PRINT ”┣”
- FOR I=0 TO 20
- BC(I,19)=COL(7)
- NEXT I
- BEEP 7:VSYNC 30
- RETURN
- @SETSUMEI
- G=1:GOSUB @SCREEN
- LOCATE QX,19:PRINT ”◇”
- COLOR COL(7):LOCATE 22,14:PRINT ”イト゛ーキー”
- GFILL 176,112,239,119,4
- LOCATE 22,16:PRINT ”[←] ┣[→]”
- GFILL 176,128,239,135,4
- LOCATE 22,18:PRINT ”[А]ヒ゛ーム”
- GFILL 176,144,239,151,4
- LOCATE 1,22:PRINT ”スタート[А]キー”
- GFILL 0,176,79,183,2
- K=2:RETURN
- @BTN
- P=0
- FOR I=0 TO 6
- VSYNC 1:P0=BUTTON():P=P OR P0
- NEXT I
- RETURN
- @USERMOJI
- FOR I0=&H87 TO &H8B
- GOSUB @FONTSET
- NEXT I0
- CLR$=C$
- @USERTEKI
- P$(0)=”┏┓┛┗”:P$(1)=”┗┛┓┏”:N$=”◇◇◇◇”
- FOR I0=&H80 TO &H86
- CHRSET ”BGF0”,I0,CLR$
- NEXT I0
- RESTORE @DATTEKI
- I0=&H83
- GOSUB @FONTSET
- TEKI$=C$
- RETURN
- @FONTSET
- READ F$:C$=””
- FOR I=0 TO 7
- FT=VAL(”&H”+MID$(F$,I*2,2))
- BIT=&H80
- FOR J=0 TO 7
- IF (FT AND BIT)>0 THEN C$=C$+”F”
- IF (FT AND BIT)<1 THEN C$=C$+”0”
- BIT=BIT/2
- NEXT J
- NEXT I
- CHRSET ”BGF0”,I0,C$
- RETURN
- DATA 10101092BAFEBA82
- DATA 0A0A040E0E040000
- DATA 0010101010101000
- DATA 1E7FFFDFDFC67E3C
- DATA 0000000000000000
- @DATTEKI
- DATA 00BD7EDBDB7EC300
この作品に対するコメントがあれば一言どうぞ。(作品に直接関係ない質問や雑談は掲示板へ)
表示モード : [ スマホ・3DS対応表示 | クラシック表示 ]
PukiWiki 1.4.7 Copyright © 2001-2006 PukiWiki Developers Team. License is GPL. Based on "PukiWiki" 1.3 by yu-ji
ページの処理時間 : 0.147 秒 | このページの最終更新 : 2022/09/20 (火) 12:44:14 (565d) | ログイン
Copyright(C) 2011-2014 プチコンまとめWiki ◆1sxkymI8ji30