MSX ASSOCIATION MSX
Home > 連絡・活動報告 > MSXショートプログラムコンテスト > オシバト
Home

プログラムコンテスト結果発表

大賞
 だるま屋空気職人

田口賞
 たけのこにょきにょき

特別賞
 こわーい橋

こたぐち賞
 Jump Up!!

最終選考ノミネート作品
 タシザンマン
 オシバト
 ボルショット
 ピリオメモリーズ
 Rabbit's in Tank GHOST BUSTER

Updated: 2003.12.03

オシバト
BSC(北海道)



ダウンロード → OSI-BATO.BAS
標準モード推奨

■プログラムの遊び方
  • 主人公(白)をカーソルキーで動かし全10階のダンジョンをクリアする、パズル要素を含んだRPGです。
  • アルファベットは敵です。「A」がもっとも弱く、B→C→D…とだんだん強くなっていきます。体当たりをすると戦闘になります。敵を倒すとGOLDがもらえます。
  • 緑の人は味方です。ぶつかると、GOLDと引き換えにHP(体力)・MP(魔力)・AP(攻撃力)のいずれかが増えます。
  • SPは、その階における敵の強さを示す数値です。次の階に移るたびにランダムで変化します。
  • 扉を開けるにはMPが1ポイント必要です。また、スペースキーを押すと周囲の敵にダメージを与えることができます。これもMPが1ポイント必要です。

■審査委員会より

 ダンジョン型のRPGを3画面で作ってしまおうという意気込みだけでも充分に評価できる作品です。内容もそれなりにまとまっており、次回以降コンテストが開催されるとすればお手本とされる作品でしょう。

■プログラムリスト(40字×72行)
10 COLOR15,0,0:SCREEN1,0:KEYOFF:WIDTH32:
B(0)=0:R=RND(-TIME-.1):FORI=1TO10:READE1
(I),E2(I),E3(I),E4(I):NEXT
20 READ H$:FORI=0TO7:VPOKE14336+I,VAL("&
H"+MID$(H$,I*2+1,2)):VPOKE768+I,-(I>0AND
I<7)*126:NEXT:FORI=0TO63:VPOKE896+I,VAL(
"&H"+MID$(H$,(IMOD8)*2+1,2)):NEXT
30 FORJ=0TO1:READH$:FORI=0TO7:VPOKE832+J
*8+I,VAL("&H"+MID$(H$,I*2+1,2)):NEXT:NEX
T:FORI=0TO2:READC:VPOKE8204+I,C*16:NEXT:
DEFFNR(R)=INT(RND(1)*R)
40 DEFFNS=STICK(0)+STICK(1):DEFFNG=STRIG
(0)+STRIG(1):Y(1)=-1:X(3)=1:Y(5)=1:X(7)=
-1:HP=100:MP=2:AP=1:SP=0:GO=100
50 FO=FO+1:IF FO=11 THEN LOCATE8,19:PRIN
T"CLEAR!!!":GOTO 240 ELSE FORI=0TO1:LOCA
TE2,14-I*12:PRINTSTRING$(13,96):NEXT:FOR
I=3TO13:PRINT"  `   `   `   `":NEXT:FORI
=2TO6:LOCATE2,I*2:PRINTMID$("`          
 ``` ``` ``` ``",(IMOD2)*13+1,13):NEXT
60 ERASE B:DIM B(12,12):FORI=1TOFO*2
70 Y=FNR(5)+2:X=FNR(3)*2+2-(YMOD2=0):IFX
=7THEN 70 ELSE LOCATEX*2,Y*2:PRINT"h"
80 NEXT:N$="HP### MP### AP### SP##":FORI
=2TO12:FORJ=2TO12:AD=6144+I+J*32:IFVPEEK
(AD)=32 AND FNR(10)>5+(FO=10)*4THEN A=FN
R(FO):B=FNR(FO):VPOKEAD,65+A-(B>A)*(B-A)
90 NEXT:NEXT:FORI=1TO5:FORJ=0TO3:X=FNR(6
)*2+3:Y=FNR(6)*2+3:IF VPEEK(6144+X+Y*32)
<>32 THEN J=J+(I=4) ELSE J=3
100 NEXT:LOCATEX,Y:PRINTMID$("prqi",I,1)
110 NEXT:BEEP:PLAY"V15O4V15S1M10000L64"
120 X=FNR(11)+3:Y=FNR(11)+3:IFVPEEK(6144
+X+Y*32)>=96THEN120ELSEFF=3+FNR(5):SP=FN
R(5):ML=INT(RND(1)*2+.5)-(FO>3)-(FO>7)
130 GOSUB260:PUTSPRITE0,(X*8,Y*8-1),15,0
:S=FNS:G1=G:G=FNG:IFG0THEN180
140 XX=X+X(S):YY=Y+Y(S):AD=6144+XX+YY*32
:V=VPEEK(AD):IF V=104 AND MP>0 THEN MP=M
P-1:X=XX:Y=YY:VPOKE AD,32:PLAY"DD":GOTO1
30 ELSE IF V=32 THEN X=XX:Y=YY:GOTO130
150 IF V=105 THEN 50 ELSE IF V\16=4 THEN
 ELSE IF V\8=14 THEN 200 ELSE 130
160 EL=V-64:D=B(XX,YY)+AP:E2=E2(EL):D2=D
-E1(EL):PLAY"L64E":IFD2>=0 THEN VPOKEAD,
32:GO=GO+E4(EL):IFSP>E3(EL)THEN E2=0
170 HP=HP-E2:B(XX,YY)=D:GOSUB260:IF HP>0
 THEN 130 ELSE 250
180 FL=0:FORI=0TO8:XX=X-1+IMOD3:YY=Y-1+I
\3:V=VPEEK(6144+XX+YY*32):IFV>=65 AND V<
=79THEN FL=1:EL=V-64:B=B(XX,YY)+INT(RND(
1)*2+1):B(XX,YY)=B:IF B>=E1(EL) THEN LOC
ATEXX,YY:PRINT" ":GO=GO+E4(EL)
190 NEXT:MP=MP-FL:GOSUB260:GOTO130
200 VV=V-112:MU=-(VV=0)*20-(VV=1)*10-(VV
=2)*15*(ML+1)^2:MU=MU*FF\5
210 IF(VV=0 AND HP=100)OR(VV=2 AND AP>=M
L+1)THEN PLAY"C+":GOTO 130 ELSE IFGO<MUT
HENPLAY"D+":GOTO130 ELSE GO=GO-MU
220 HP=HP-(VV=0)*30:HP=HP-(HP>100)*(100-
HP):MP=MP-(VV=1):IF VV=2 THEN AP=ML+1
230 PLAY"E":GOSUB260:GOTO130
240 IF FNG THEN 240 ELSE LOCATE8,20:PRIN
T"PUSH KEY":FORI=0TO1:I=-FNG:NEXT:RUN
250 LOCATE8,19:PRINT"GAME OVER":GOTO240
260 LOCATE2,16:PRINTUSINGN$;HP;MP;AP;SP:
PRINTUSING"  GOLD #### ##F";GO;FO:RETURN
270 DATA2,1,0,1,3,2,1,3,3,3,0,6
280 DATA2,3,3,9,7,1,0,4,4,4,1,16
290 DATA3,3,4,20,12,2,2,25,1,9,0,30
300 DATA15,3,4,40,3838127C90382844,3C5A9
999999999FF,0F0F003F3F00FFFF,8,7,12
          

12345678901234567890123456789012345678901234567890123456789012345678901234567890

TOP 
Copyright 2002-08 MSX Association. All rights Reserved.