ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

復活!ゲームプログラム!コミュのoso-E/MSX/三毛乱ジェロ

  • mixiチェック
  • このエントリーをはてなブックマークに追加
自作プログラムです。
プログラムコード(テキスト)は>>1に、プログラム解説・変数一覧等は>>2以降に掲載します。


「oso-E」
■はじめに
 複数のスプライトを同時に動かし、あまり重くならないようにするのにはどうすればいいのかを考えて作りました。


■ゲーム内容
 「パスタのゆで時間を計測する自走式タイマーロボット」"oso-E"を操作して
 「捕まったら問答無用で1ミスという理不尽なキャラ」"ペプチドン"から逃げて
 ゴールまで向かって下さい。
 尚、黄色いペプチドンは動かない上に取る事が出来ます。無害です。
 また、「鍵」が落ちている面では鍵を全て回収しないとゴールに入っても無効となります。
 面には「リモコン」が落ちている場合がありまして、リモコンを使用すると「縦方向に進むペプチドンと横方向に進むペプチドンを入れ替え」ます。
 ただし、黄色ペプチドンがいる場合は縦→黄色、黄色→横へと変化します。


■操作方法
 タイトル画面でスペースキーまたはトリガー1を押すとゲームスタートです。
 ゲーム中は(十字キー、ジョイスティック共)上下左右で移動、スペースキー又はトリガー1でリモコンを使用します。
 ※タイトル画面で十字キーの方向キーどれかを押しながらゲームスタートすると・・・


■最後に
 はじめにキャラの名前を考えて、次にシステムを考えて、そこからあーだこーだと悩んで作り上げました。
 今回、面作成としてnc30tori様にご協力頂き、納得の行く面が出来ました。
この場をお借りして御礼申し上げます。


 今後拡張と言うより最初の案なのですが、
・全100面にしてドアも2つ以上作って色んな面にワープする
 というのを考えておりましたが、かなりのメモリを食うのとそこまで作る気力が無いので面クリアタイプのみとなりました。

コメント(19)

10 ' OSO-E BY MICHELAN-GELO.
20 SCREEN1,2,0:KEYOFF:COLOR15,0,0:WIDTH32:DEFINTA-Z
30 DIMS$(20),PX(9),PY(9),PZ(9),T(22,20):AZ=15:P$=" "+" "
40 GOTO760
50 ' PLAYER MOVE -----
60 S=STICK(0)+STICK(1)
70 IFT(X,Y)=2ANDKE=0THEN550
80 IFS=1AND(T(X,Y-1)<>1ANDT(X+1,Y-1)<>1)THENY=Y-1:PUTSPRITE0,(X*8,Y*8-1),14,YMOD2+6
90 IFS=5AND(T(X,Y+2)<>1ANDT(X+1,Y+2)<>1)THENY=Y+1:PUTSPRITE0,(X*8,Y*8-1),14,YMOD2+4
100 IFS=3AND(T(X+2,Y)<>1ANDT(X+2,Y+1)<>1)THENX=X+1:PUTSPRITE0,(X*8,Y*8-1),14,XMOD2
110 IFS=7AND(T(X-1,Y)<>1ANDT(X-1,Y+1)<>1)THENX=X-1:PUTSPRITE0,(X*8,Y*8-1),14,XMOD2+2
120 IF(STRIG(0)ORSTRIG(1))ANDRM<>0THENGOSUB470
130 IFT(X,Y)=7THENRM=RM+1:GOSUB1210:LOCATE29,11:PRINTUSING"##";RM:T(X,Y)=0:LOCATEX,Y:PRINTP$:LOCATEX,Y+1:PRINTP$
140 IFT(X,Y)=9THENKE=KE-1:GOSUB1240:GOSUB1460:T(X,Y)=0:LOCATEX,Y:PRINTP$:LOCATE30-KE,13:PRINT"p":IFKE=0THENVPOKE8205,208:GOSUB1250:GOSUB1460
150 ' COMPUTER ALGORITHM -----
160 FORI=0TOM-1:J=PX(I):H=PY(I):K=PZ(I)
170 IFJ=XANDH=YTHENPC=15:GOSUB360
180 ONK+1GOTO190,220,250,280,310,330
190 PC=9:IFT(J+2,H)=1ORT(J+2,H+1)=1THENK=1:PM=JMOD2+10:GOTO230ELSEJ=J+1:PM=JMOD2+8
200 IF(J+1=XANDH=Y)OR(J+1=XANDH=Y+1)OR(J+1=XANDH+1=Y)THEN360
210 GOTO300
220 PC=9:IFT(J-1,H)=1ORT(J-1,H+1)=1THENK=0:PM=JMOD2+8:GOTO200ELSEJ=J-1:PM=JMOD2+10
230 IF(J=X+1ANDH=Y)OR(J=X+1ANDH=Y+1)OR(J=X+1ANDH+1=Y)THEN360
240 GOTO300
250 PC=5:IFT(J,H-1)=1ORT(J+1,H-1)=1THENK=3:PM=HMOD2+12:GOTO290ELSEH=H-1:PM=HMOD2+14
260 IF(J=X+1ANDH=Y+1)OR(J=XANDH=Y+1)OR(J+1=XANDH=Y+1)THEN360
270 GOTO300
280 PC=5:IFT(J,H+2)=1ORT(J+1,H+2)=1THENK=2:PM=HMOD2+14:GOTO260ELSEH=H+1:PM=HMOD2+12
290 IF(J=X+1ANDH+1=Y)OR(J=XANDH+1=Y)OR(J+1=XANDH=Y-1)THEN360
300 PUTSPRITEI+1,(J*8,H*8-1),PC,PM
310 IFJ=XANDH=YTHENGOSUB360
320 PX(I)=J:PY(I)=H:PZ(I)=K
330 NEXT
340 GOTO60
350 ' CRUSH SUB -----
360 IFK=5THENRETURN
370 IFK=4THENK=5:PZ(I)=5:PK=PK-1:GOSUB1220:PUTSPRITEI+1,(0,212),0:RETURN
380 ' MISS -----
390 IFPC<>15THENPUTSPRITEI+1,(J*8,H*8-1),PC,PM
400 GOSUB1260:LF=LF-1
410 LOCATE12,13:PRINT"MISS !!"
420 FORI=0TO4500:NEXT:IFLF=-1THEN440ELSE1030
430 ' GAME OVER -----
440 LOCATE12,13:PRINT"GAME OVER"
450 GOSUB1290:GOSUB1460:GOSUB1450:GOTO840
460 ' SUB SWAP -----
470 FORI=0TO2:PUTSPRITE0,(X*8,Y*8-1),14,I+17:A=TAN(2):NEXT
480 GOSUB1230:GOSUB1460:FORI=0TOM-1:IFPZ(I)=0ORPZ(I)=1THENPZ(I)=3:GOTO520
490 IF(PZ(I)=2ORPZ(I)=3)ANDPK<>0THENPZ(I)=4:PUTSPRITEI+1,(PX(I)*8,PY(I)*8-1),11,16:GOTO520
500 IF(PZ(I)=2ORPZ(I)=3)ANDPK=0THENPZ(I)=1:GOTO520
510 IFPZ(I)=4THENPZ(I)=1
520 NEXT:RM=RM-1:LOCATE29,11:PRINTUSING"##";RM
530 RETURN
540 ' CLEAR -----
550 LOCATE12,13:PRINT"CLEAR!!"
560 GOSUB1270
570 FORI=0TO4500:NEXT:ST=ST+1:IFST>AZTHEN600
580 IFSTMOD5=1THENFORI=0TO9:LOCATE12,22-I:PRINT"1 U P !":LOCATE12,23-I:PRINTSPC(7):NEXT:LF=LF+1:GOSUB1280:GOSUB1460
590 GOTO950
600 ' ENDING ---
610 GOSUB1450:CLS:RESTORE1890:ML=0
620 READA$:K=3:IFA$="x"THEN670ELSEIFLEFT$(A$,1)="z"THENK=15
630 LOCATEK,22:PRINTA$:FORI=0TO53:IFML<5ANDPLAY(0)=0THENML=ML+1:ONMLGOSUB1360,1380,1400,1420
640 NEXT:PRINT:PRINT
650 GOTO620
660 ' ENDING DEMO -----
670 GOSUB1450:CLS:LOCATE0,18:PRINT"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa":LOCATE7,16:PRINT"tv":LOCATE7,17:PRINT"uw":SOUND0,128:SOUND1,1
680 FORI=0TO24:SOUND8,15:PUTSPRITE0,(248-I*8,127),14,IMOD2+2:SOUND8,0:A=TAN(2):NEXT:LOCATE7,16:PRINTP$:LOCATE7,17:PRINTP$:GOSUB1210
690 PUTSPRITE0,,14,0:FORI=0TO9:PUTSPRITE1,(248-I*8,127),9,IMOD2+10:A=TAN(2):NEXT
700 FORI=0TO2:PUTSPRITE0,(56,127),14,I+17:A=TAN(2):NEXT:GOSUB1230:GOSUB1460
710 FORI=0TO4:FORJ=0TO1299:NEXT:VPOKE8196,VAL(MID$("0608091115",I*2+1,2)):NEXT:PUTSPRITE0,,15:PUTSPRITE1,,15:FORI=0TO499:NEXT
720 A=0:B=9:IFLF>=7THENA=14:B=0ELSEIFLF<=6ANDLF=>3THENA=0:B=0
730 VPOKE8196,240:PUTSPRITE0,,A:PUTSPRITE1,,B
740 LOCATE9,8:PRINT"T H E ";P$;"E N D":GOSUB1270:FORI=0TO4500:NEXT:GOSUB1450:GOTO840
750 ' INIT. -----
760 LOCATE10,12:PRINT"WAIT PLEASE.."
770 FORI=256TO727:A=VPEEK(I):VPOKEI,A\VAL(MID$("22221111",IMOD8+1,1)):NEXT
780 FORI=0TOAZ-1:READS$(I):NEXT
790 VPOKE8204,192:VPOKE8205,208:VPOKE8206,160
800 FORI=1TO14:A=ASC(MID$("atuvwlmnopqrsz",I,1))*8:READA$:FORJ=0TO7:VPOKEA+J,VAL("&H"+MID$(A$,J*2+1,2)):NEXTJ,I
810 FORI=0TO19:B$="":READA$
820 FORJ=0TO31:B$=B$+CHR$(VAL("&H"+MID$(A$,J*2+1,2))):NEXT:SPRITE$(I)=B$:NEXT
830 ' TITLE -----
840 CLS:GOSUB1460:GOSUB1300
850 LOCATE3,6:PRINT"aaaaa aaaa aaaaa"
860 FORI=0TO3:LOCATE3,I+7:PRINT"aa aa aaaa aa aa":NEXT
870 LOCATE3,11:PRINT"aaaaa aaaa aaaaa":LOCATE11,7:PRINTP$:FORI=0TO1:LOCATE9,9+I:PRINTP$:NEXT:GOSUB1320
880 LOCATE20,8:PRINT"aaa":FORI=0TO8:LOCATE24,I+3:PRINTLEFT$("aaaaa",VAL(MID$("522242225",I+1,1))):NEXT:GOSUB1340
890 LOCATE4,4:PRINT"PUZZLE ACTION":LOCATE11,20:PRINT"MICHELAN-GELO.2009"
900 GOSUB1460
910 LOCATE6,17:PRINT"PUSH SPACE OR TRIG(1)"
920 FORI=0TO1:I=-(STRIG(0)ORSTRIG(1)):NEXT
930 LF=5:ST=STICK(0)+1
940 ' BEGINING DEMO -----
950 GOSUB1450:CLS:LOCATE0,18:PRINT"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa":SOUND0,128:SOUND1,1
960 FORI=0TO14:SOUND8,15:PUTSPRITE0,(I*8,127),14,IMOD2
970 SOUND8,0:A=TAN(2):NEXT
980 FORI=9TO13:LOCATE9,I:PRINT"aaaaaaaaaaaaa":NEXT:FORI=10TO12:LOCATE10,I:PRINTSPC(11):NEXT
990 LOCATE11,11:PRINTUSING"STAGE####";ST
1000 FORI=0TO2999:NEXT
1010 FORI=15TO31:SOUND8,15:PUTSPRITE0,(I*8,127),14,IMOD2:SOUND8,0:NEXT
1020 ' MAKE SCREEN -----
1030 J=0:H=0:M=0:RM=0:PK=0:KE=0:VPOKE8205,208
1040 GOSUB1450:CLS
1050 K=LEN(S$(ST-1)):FORI=0TOK
1060 L=VAL(MID$(S$(ST-1),I+1,1)):T(J,H)=L:ONL+1GOTO1160,1070,1080,1090,1100,1110,1120,1130,1140,1150
1070 LOCATEJ,H:PRINT"a":GOTO1160
1080 LOCATEJ,H:PRINT"ln":LOCATEJ,H+1:PRINT"mo":GOTO1160
1090 PUTSPRITE0,(J*8,H*8-1),14,0:X=J:Y=H:GOTO1160
1100 PUTSPRITEM+1,(J*8,H*8-1),9,8:PX(M)=J:PY(M)=H:PZ(M)=1:M=M+1:GOTO1160
1110 PUTSPRITEM+1,(J*8,H*8-1),5,12:PX(M)=J:PY(M)=H:PZ(M)=3:M=M+1:GOTO1160
1120 PUTSPRITEM+1,(J*8,H*8-1),11,16:PX(M)=J:PY(M)=H:PZ(M)=4:M=M+1:PK=PK+1:GOTO1160
1130 LOCATEJ,H:PRINT"tv":LOCATEJ,H+1:PRINT"uw":GOTO1160
1140 H=H+1:J=-1:GOTO1160
1150 LOCATEJ,H:PRINT"pr":LOCATEJ,H+1:PRINT"qs":KE=KE+1
1160 J=J+1:NEXT:IFKE<>0THENVPOKE8205,224
1170 LOCATE24,1:PRINT"aOSO-Ea":LOCATE23,5:PRINTUSING"STAGE:##";ST:LOCATE24,8:PRINTUSING"LIFE:##";LF
1180 LOCATE24,11:PRINTUSING"REMO:##";RM
1190 GOTO60
1200 ' SOUND SUB -----
1210 PLAY"T220O6L16V14FDGEB-A":RETURN
1220 PLAY"T220O6L16V14FDB-2":RETURN
1230 PLAY"T220O6L16V14AR16AR16A":RETURN
1240 PLAY"T220O6L16V14FR16CFAR16":RETURN
1250 PLAY"T220O6L16V14CO5B-4":RETURN
1260 PLAY"T192O4L8V15GB-AFER8CR8DR8":RETURN
1270 PLAY"T136O5L16V15B-R16AR16GR16EAFR16CR16O6FR8.":RETURN
1280 PLAY"T136O6L16V15B-AB-O7DR16O6AB-4R2":RETURN
1290 PLAY"T88O4L8V15DO3B-O4CDECDET72F1","T88O3L8V13D4D16R16DE4E16R16ET72FCDCF2":RETURN
1300 PLAY"T136O5L16V15B-R16AR16GR16EAFR16CR16O6CR16O5AR16","T136O3L16V13FR16AR16GR16AR16FR16AR16FR16O4CR16"
1310 PLAY"O5B-R16AR16GR16EAFR16O6CR16O5B-R16GR16","O3FR16AR16GR16AR16FR16AR16GR16CR16":RETURN
1320 PLAY"O6DR16DR16DR16O5B-O6DFR16DR16AR16DR16","O3DR16FR16DR16FR16DR16FR16DR16FR16"
1330 PLAY"CR16CR16CR16O5AB-O6FR16CR16AR16CR16","O3CR16FR16CR16FR16CR16FR16CR16FR16":RETURN
1340 PLAY"O5B-R16B-R16B-R16GB-O6CR16O5B-R16GR16AR16","O2B-R16O3DR16O2B-R16O3DR16CR16ER16CR16ER16"
1350 PLAY"F","O3FR16DR16CR16CEFR16DR16FR16R8":RETURN
1360 PLAY"T88O6L16V15O6DR16O5B-R16B-R16B-O6DFR16DR16AR8.","T88L16V13"
1370 PLAY"CR16O5AR16AR16AO6CFR8.R4":RETURN
1380 PLAY"O5GR16GR16GR16GAB-R16GR16O6CR16O5B-R16"
1390 PLAY"AR16AR16AGAB-O6CR8.R4","O2R2R8AR16O3CR16FR16":RETURN
1400 PLAY"O6DR16O5B-R16B-R16B-O6DFR16DR16AR8.","DR16FR16DR16FR16DR16FR16DR16FR16"
1410 PLAY"CR16O5AR16AR16AO6CFR8.R4","CR16FR16CR16FR16CR16FR16CR16FR16":RETURN
1420 PLAY"O5GR16GR16GR16GAB-R16GR16O6CR16O5B-R16","O2B-R16O3DR16O2BR16O3DR16CR16ER16CR16ER16"
1430 PLAY"FR8.R8O6CR16F","FR16DR16CO2B-O3CEFR16CR16F":RETURN
1440 ' ETC SUB -----
1450 FORI=0TO9:PUTSPRITEI,(0,212),0:NEXT:RETURN
1460 FORI=-1TO0:I=PLAY(0):NEXT:RETURN
1470 ' MAP DATA -----
1480 DATA 0111111111118011110000201800011000000180001100111118111110011111810000000040181000000000018111110011111800001001800001301800001001800001111
1490 DATA 111100111181201001001810011110011111118190000000000090181000000000000001811111110011110011118000000150140000000180000001001000000001800000011111110011118000000000000100180000000000001001800000000000013018000000000000100180000000000001111
1500 DATA 1111000111181301000150181001111100111111810000070000002018100000000000000181111111111111111
1510 DATA 1111812018100111111810000060181000000011111111811111160000703018000001000000000180000011111111111
1520 DATA 00000111180000015018000001001800000100180000110011811111000001111181300000040000018100000010000001811111010001111181200000000181000000001181111111001800000015018000000100180000001111
1530 DATA 0111111111118111110000701812011000000181001100111118100110011111810000409011181000000001118111110011111800001001800001301800001001800001111
1540 DATA 11111111111111817000000000001810000000000001811114011111001812000000100601810000050100001811111000111001813007000700001810000000000001811111111111111
1550 DATA 0000000111111118000000010040201800000001000000180000111100111118000010000018000010000018111110011118190000011118100000017018111001110011813070707070181000000000018111111111111
1560 DATA 111111111111817007000000181000000000018170111111001810000020170181000000010018100111111001819013007050181001000000018111111111111
1570 DATA 000111180001201800110011180010004018001000001801110011180111001118014000001801000000180111001118111100111810000040181000000018111100111800013018000100180001111
1580 DATA 11111111111111812005000000001810000000000001811119010011901819010015000001810013019000001810010010011001810000000000501810000000000001811111111111111
1590 DATA1111111111181000000020181000000000181005011100111810000100400018100111000000181001111100111810001000400018100010000000181000111100111810000000301810000000001811111111111
1600 DATA 111111111111181300000000001810000000000018111401501100181000010011001812000111110018100001000000181111110000001817000000115018100000001100181111111111111
1610 DATA 00111111111111800190040000901800100000000001800100000001001118001500000005090181110010000000001810000003020001118100000000000018190111111111118100181111
1620 DATA11111111111181700060002018100000001001810000000100181005010000018100000040001810010000000181000001000018100000015001813000000090181000000100018111111111111
1630 ' CHARA AND SPRITE DATA -----
1640 DATA DFDFDF00FBFBFB00
1650 DATA 0000000003040810,264F4F4620110E00,0102040890602010,1010204080000000
1660 DATA 030C003800708060,806080608063806F,C030001C000E0106,013601F601F601F6
1670 DATA 1C221C080E080C08,14343D1FC73F0000,002040FE40200000,00E08000CFF8C07C
1680 DATA 0000000000000000
1690 DATA 070E0F171A2D341A7F1F40AC221221010080808000906000FE1F41AC22122101
1700 DATA 070E0F171A2D341A7FF104CA222112100080808000906000FEF104CA22211210
1710 DATA 00010101000906007FF8823544488480E070F0E858B42C58FEF8023544488480
1720 DATA 00010101000906007F8F205344844808E070F0E858B42C58FE8F205344844808
1730 DATA 2053848B24534747275583882252404004CA21D124CAE2E2E4AAC111444A0202
1740 DATA 2053444B24538787275543482252808004CA22D224CAE1E1E4AAC212444A0101
1750 DATA 4040522288835527474753248B84532002024A4411C1AAE4E2E2CA24D121CA04
1760 DATA 8080522248435527878753244B44532001014A4412C2AAE4E1E1CA24D222CA04
1770 DATA 01C3C323232D7B6B5B6B5B65360F1E3880C04040C0C0FCFE06CFEFF670383838
1780 DATA 00011B1B23232D7B6B5B6B5B6B370E1C0080C04040C0C0FCFE068FCFA6607070
1790 DATA 0103020203033F7F60F3F76F0E1C1C1C80C3C3C4C4B4DED6DAD6DAA66CF0781C
1800 DATA 000103020203033F7F60F1F365060E0E0080D8D8C4C4B4DED6DAD6DAD6EC7038
1810 DATA 0307050507030F3F7BF3F46E0E060000C0E6A6A8F0E0F0FCDEEFEFF6F0F0F060
1820 DATA 036765150F070F3F7BF7F76F0F0F0F06C0E0A0A0E0C0F0FCDECF2F7670600000
1830 DATA 030707070703083776F5F6650B040000C0E6E6E8D020D0ECAE6FAF56D030F060
1840 DATA 036767170B040B3776F5F6650B0C0F06C0E0E0E0E0C010ECAE6FAF66D0200000
1850 DATA 0000000E171F0F337F7E211E3F7FF3610C0C101078B4DAD6DAEDEBEE74F0F0E0
1860 DATA 070F0E171A2D341A7F1F40AC2212210104848C8C0C986000FE1F41AC22122101
1870 DATA 070F0E171A2D341A7F1F40AC2212210104848CAC2C986000FE1F41AC22122101
1880 DATA 070F0E171A2D341A7F1F40AC2212210104848CBC2C986000FE1F41AC22122101
1890 DATA ,,CONGRATURATIONS!,,,YOU ARE,A TRIVAL THING,WAS FINISHED.,,,,
1900 DATA GAME IDEA,PROGRAM,MUSIC&SOUND,CHARACTER,,zMICHELAN-GELO.,,,
1910 DATA MAP DESIGN,,zMICHELAN-GELO.,zNC30TORI,,SPECIAL THANKS,zNC30TORI,,
1920 DATA THANKS FOR,MIXI COMM MEMBER!,,,,,,,,,,,,,x
1930 ' THANK YOU FOR PROGRAMING
1940 ' AND PLAYING!
1950 ' 2009 MAY MICHELAN-GELO.
各変数


S$(n) ステージのデータ(パラメータは後述)
PX(n),PY(n) 敵キャラのX座標、Y座標
PZ(n) 敵キャラの向いている方向(0-3:各方向、4:不動、5:消滅)
T(n,o) ステージの座標ごとのデータ(パラメータはS$(n)と同じ)

S スティックの入力用
X,Y 自キャラの座標
LF 自キャラの残数
KE 鍵の数
RM リモコンの数
ST ステージ
AZ ステージの総数(これより多ければエンディング)

M 敵キャラの数(ゲーム上の総数)
J,H,K 敵キャラのパラメータ(代入用。プログラム短縮化の為)
PC 敵キャラの色
PM 敵キャラのスプライト表示用番号
PK 「不動」敵キャラの数

I FOR-NEXT汎用
ML エンディング時の音楽パラメータ
A,B エンディング汎用(Aは他にタイムラグ発生用にも使用)

P$ スペース2個(mixiでは半角スペースを2つ以上連続表示できないので分けて記述)


プログラム解説(行)

10-40 初期設定
50-110 自キャラ移動
120 トリガー判定(リモコン使用)
130 リモコン取得判定
140 鍵取得、ドアオープン判定
150-300,320-340 敵キャラ移動
310 敵キャラ衝突判定
350-370 衝突によるミス判定(不動キャラとの衝突判定あり)
380-420 ミス処理
430-450 ゲームオーバー処理
460-530 リモコン使用サブルーチン
540-590 クリア処理
600-740 スタッフロール、エンド用デモ処理
750-820 初期設定(マップ、キャラ作成)
830-930 タイトル処理
940-1190 開始デモ、面作成
1200-1430 音楽演奏サブルーチン
1440-1460 その他サブルーチン
1470-1920 各種データ
S$(n)のパラメータ
0:空白
1:壁
2:出口
3:自キャラ
4:敵キャラ1(横方向)
5:敵キャラ2(縦方向)
6:敵キャラ3(不動)
7:リモコン
8:改行用
9:鍵
------
今回何が一番難しかったと言いますと面構成でして。あとキャラ作成。
方眼紙のルーズリーフを100均で買いまして、ペン片手にアレコレ書いて
試行錯誤して出来上がりました。
自分もこんな膨大なプログラムになったのは初めてだと思ってます。

バグ報告(特に表示がうまく行かない部分)、感想、
面のアイデア等幅広くお待ちしておりますm(_ _)m


上にも書きましたが、改めて今回ご協力を頂いたnc30tori様、
スプライトキャラエディタを提供してくださったぼう様、
またこのプログラムの為に雑談スレで意見交換をして頂いた方々全てに感謝いたします。
一人ですとここまでアイデアも出ないものでして。
「長くて面倒だ」「パパっとプレイしたい」方の為に
料理番組でお馴染みの「こちらが煮込んだモノでございます」的なモノを。

http://www.ma.mctv.ne.jp/~miche/zatsu/osoe_dsk.zip
おぉ!
早速、煮物をいただきました(笑)

難易度簡単すぎず難しすぎず、良い感じだと思います (^-^)/
ここまで作り込んであると、昔のBマガやMファンを思い出します。

あえて粗探しをすると・・・・敵の数によって動作速度が変化するので、
純粋なゲーム性とは異なる部分で タイミングが掴みにくい と感じてしまう
のが、ちょっぴり理不尽のような気もします・・・BASICで作ってるから
仕方がないのですが (^_^;


xxx IF〜THEN aaa
yyy GOTO bbb
↓こっちの方が微妙に速いかもです。微妙ですが。
xxx IF〜THEN aaa ELSE bbb
>HRA!さん
ありがとうございます。

タイミングの問題は難しいですね。
例えば敵4人ですと自分→敵1→敵2→敵3→敵4→自分・・・というループを行ってますので
どうしてもどんどん重くなってしまいまして。
マシン語で制御すれば少々のラグは気にならなくなりそうですが・・・これはマシン語を理解出来てない私にはちょっと。

あとGOTO文ですが、なるほど・・・ELSE文が多くなると長くなるかなと思い改行で無理矢理まとめてましたが
ELSEの方が速いんですね。初耳です。
> なるほど・・・ELSE文が多くなると長くなるかなと思い改行で無理矢理まとめて

ネストする場合は分けた方が速い場合があります。

200 IF条件THEN360
210 GOTO300

この場合だと、条件が不成立の場合、「360を読み飛ばす」「210という新しい行を認識する」「GOTO命令を評価する」「300へ飛ぶ」といった流れになります。

200 IF条件THEN360ELSE300

この場合だと、条件が不成立の場合、「360を読み飛ばす」「ELSEを評価する」「300へ飛ぶ」といった流れになります。
新しい行を認識する処理が無い分だけ速いというわけです。
ELSE があるかどうかは、ELSE の位置まで到達するまで分からないからですね。
ELSE付きかどうかをプログラム入力時に判別していれば、また違うのでしょうけど、MSX-BASICは
そこまでインテリジェントではないようですから (^_^;


っと、脱線しましたね。
ところで、このゲーム、現状では全何面あるのでしょうか?
AZ=15 だから、全15面?
>HRA!さん
なるほど。目から鱗です。
次回以降の参考とさせて頂きます。

>ところで、このゲーム、現状では全何面あるのでしょうか?
15面です。
「似たような攻略」は避けようと思ったら15面が限度でした。
15面のうちnc30toriさんにデザインして頂いたのが1つあります。
>nc30toriさん
今回ご協力ありがとうございます。
MSXの性能の限界まで挑戦しようとは思っていませんでしたが、
なるべく不快にならないバランスが出来たと思ってます。
あの多過ぎな面は無理ですよ・・・解けませんでした。

>ぼうさん
ありがとうございます。
5面で敵キャラとの衝突判定がわかると思います。
ここを抜ければ後半楽になりますよ。
音楽は拘りました。鍵盤キーボードでペナペナと曲を弾いてPCの作曲用ソフトで作ってMSXに下ろしてました。
2音だけで表現しています。
>nc30toriさん
いえいえ。色々とアドバイスありがとうございます。

>ぼうさん
私の場合ですが、
Disk-Manager
http://www.msxnet.org/gtinter/diskmgrj.htm
これでディスクイメージを作りまして、zip圧縮してます。
私の場合は自分のHPにファイルを置いて直リンさせてますので。

ログインすると、残り5件のコメントが見れるよ

mixiユーザー
ログインしてコメントしよう!

復活!ゲームプログラム! 更新情報

復活!ゲームプログラム!のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング