|
目次に戻る
※バックアップミスによりタッチパネル処理を含まないプログラムになっており、説明文と食い違うので公開終了とします。
- 3DSのDL専用ソフト「プチコンmkII」でとりあえず作ってみたプログラムを公開してみたページです。
- 2012年03月頃(ver2.1?)のファイルなので、最新アップデート適用機で想定通りに動くかどうか分かりません。
- 特に効果音は無理やりそれっぽく聞こえるようにしたので処理速度が変わると再現できません。
- タッチパネルをアナログ的に使ってみたくて作ったものなので、ゲーム的な要素は皆無です。
- PTCファイルのTXT化には "prg2txt.exe" を利用させていただきました。
主な操作方法
- タッチパネルの右下角を起点とした90度のエリアをハンドル操作に使えます。(爪を立てる感じで…)
- その他のボタン類は画面表示を解読してください。
主な遊び方
- 壁にぶつからずにどれだけスピードを出せるか?とかかなぁ…
スクリプトとQRコード。
'T5
CLEAR:ACLS
'SYSBEEP=FALSE:LOAD"SPU0:CAR",FALSE
SYSBEEP=TRUE
'@SYOKIKA
'EGS=13,131,175,185,197,198
BGM=13
BGV=127
BP=4096/12
BPV=BGV/1.5
EGS=197
EGX=7
EGV=BGV/2
BRS=15
BRX=6
BRV=BGV/1.5
SPX=100
SPY=160
SWI=8
SHI=8
SPA=10
ASW=1
SPH=SHI/2*1.5
SPH2=SHI*0.9
HDL=0
HDS=0.2
HDM=4
PST=3
SPD=0
SPM=3
PWR=SPM+1
ACC=0.01
BRK=0.03
MTG=5
SFT=SPM/MTG
MTP=1
TLI=&B11
TWI=1.5
TCL=254
DMG=1
DIM TXY(10,4)
'
FOR J=0 TO 7
READ DAT$:CHD$=CHD$+DAT$:NEXT
CHRSET "SPU0",I,CHD$
'
'GFILL 0,0,255,191,7
GBOX 0,0,255,191,15
SPSET 0,0,0,0,0,1,SWI,SHI
SPHOME 0,4,SPH
'
@MAIN
FLG=0
'@IROIRO
CLS':SPREAD(0),X,Y,A,S,C
LOCATE 1,1:PRINT "П:";BTN;" ┼:"SHF,"Ы:";FLOOR(SPD/3*100),"◎:";FLOOR(HDL*68)
LOCATE 1,2:PRINT "X:";FLOOR(SPX),"Y:";FLOOR(SPY),"↑:";FLOOR(SPA),"Й:";ASW
LOCATE 1,3:PRINT "В:";(1-DMG)*100;"%","△:";FLOOR(SPF/3*100),"▽:";FLOOR(DSP/3*100)
LOCATE 1,4:PRINT "♪:";BMF,"E:";EGP,"B:";BRS
LOCATE 1,5:PRINT "M:";MTP,"C:";SFT*MTP,"S:";SPD
LOCATE 1,21:PRINT "К:BGMトメ","н:BGMカエ"
LOCATE 1,22:PRINT "●П:ハンドル Ф:アクセル Х:ブレ-キ Б:バック"
'@HYOUJI
IF SPD>0 THEN SHF=SPH*1.5-SPH*ABS(SPD/SPM)/2 ELSE SHF=SHI/2*1.5
VSYNC 1
SPHOME 0,SWI/2,SHF
SPANGLE 0,SPA,1,ASW
SPOFS 0,SPX,SPY,1
'@SHIPPO
SPHOME 0,SWI/2,SPH2
SAF1=SPA+90
SAF2=SPA-90
IF SAF1<0 THEN SAF1=SAF1+360
IF SAF2<0 THEN SAF2=SAF2+360
IF SAF1>360 THEN SAF1=SAF1-360
IF SAF2>360 THEN SAF2=SAF2-360
SXF1=SIN(RAD(SAF1))*TWI
SXF2=SIN(RAD(SAF2))*TWI
SYF1=COS(RAD(SAF1))*TWI
SYF2=COS(RAD(SAF2))*TWI
I=(I+1) AND TLI
IF I==0 THEN SXF1=SPX+SXF1:SYF1=SPY-SYF1
IF I==0 THEN SXF2=SPX+SXF2:SYF2=SPY-SYF2
IF I==0 THEN TXY(N,0)=SXF1:TXY(N,1)=SYF1
IF I==0 THEN TXY(N,2)=SXF2:TXY(N,3)=SYF2
IF I==0 THEN N=(N+1) AND TLI*2+1
GDRAWMD TRUE
IF I==0 THEN GPSET SXF1,SYF1,TCL
IF I==0 THEN GPSET SXF2,SYF2,TCL
IF I==0 THEN GPSET TXY(N,0),TXY(N,1),TCL
IF I==0 THEN GPSET TXY(N,2),TXY(N,3),TCL
GDRAWMD FALSE
'ONGAKU
BTN=BUTTON(2)
IF BTN AND 256 THEN BGM=BGM-1:BMF=-1:VSYNC 1:BGMSTOP 1,1
IF BTN AND 512 THEN IF BGM>28 THEN BMF=-1 ELSE VSYNC 1:BGMPLAY 1,BGM,BGV:BMF=BGM:BGM=BGM+1
'
SPC=ABS(SPD/SPM)
BTN=BUTTON()
IF BTN AND 4 THEN ASW=-1:IF HDL>-1*HDM THEN HDL=HDL-(HDS-HDS*ABS(HDL/HDM)/PST) ELSE HDL=-1*HDM
IF BTN AND 8 THEN ASW= 1:IF HDL<HDM THEN HDL=HDL+(HDS-HDS*ABS(HDL/HDM)/PST) ELSE HDL=HDM
IF BTN AND 12 THEN IF ABS(SPD)>SPM/2 THEN SPD=SPD-(ACC*SPC/PWR)*SGN(SPD):GOSUB @BEEP1
IF (BTN AND 64) * (SPD>=0) THEN FLG=1:IF SPD<SPM THEN SPD=SPD+(ACC-ACC*SPC)*(PWR/SPM)
IF (BTN AND 32) * (SPD<=0) THEN FLG=2:IF SPD>-1*SPM/2 THEN SPD=SPD-(ACC-ACC*SPC)*(PWR/SPM)
IF BTN AND 128 THEN IF ABS(SPD)>=BRK THEN SPD=SPD-BRK*SGN(SPD/SPM):GOSUB @BEEP2 ELSE SPD=0
IF !(FLG AND 3) THEN IF ABS(SPD)>=BRK THEN SPD=SPD-(BRK-BRK*ABS(SPD/SPM))/2*SGN(SPD) ELSE SPD=0
IF !(BTN AND 12) * (ABS(HDL)>0) THEN IF ABS(HDL)>=HDS THEN HDL=HDL-HDS*SGN(HDL) ELSE HDL=0
IF SPD!=0 OR BPF0!=0 THEN GOSUB @BEEP0
'@HOUKOU
IF SPD!=0 THEN SPA=SPA+HDL*SGN(SPD) ELSE HDL=0
IF SPA<0 THEN SPA=SPA+360
IF SPA>360 THEN SPA=SPA-360
X=SIN(RAD(SPA))*SPD
Y=COS(RAD(SPA))*SPD
SPX=SPX+X
SPY=SPY-Y
'@KABE
FLG=0:SAF=SPA
IF SPX<=2 OR SPX>253 THEN FLG=1:SPA=360-SPA:SPX=SPX-X:IF SGN(X)+SGN(Y) THEN ASW=-1 ELSE ASW=1
IF SPY<=2 OR SPY>189 THEN FLG=2:SPA=180-SPA:SPY=SPY+Y:IF SGN(X)+SGN(Y) THEN ASW=1 ELSE ASW=-1
IF FLG!=0 THEN DMG=SAF%90/100:FLG$=SUBST$("&B0000",(FLOOR(SAF/90) AND 3)+2,1,"1")
IF FLG==1 THEN IF VAL(FLG$) AND 10 THEN DMG=1-DMG
IF FLG==2 THEN IF VAL(FLG$) AND 5 THEN DMG=1-DMG
IF FLG!=0 AND ABS(SPD)>0 THEN SPF=SPD:SPD=SPD*DMG:DSP=SPD-SPF
IF FLG!=0 THEN BEEP 11,,BPV,64
'@SHIFT
IF SPD>SFT*MTP THEN EGP=EGX+MTG/(11-EGX)*MTP:MTP=MTP+1
IF SPD<SFT*(MTP-1) THEN EGP=EGP-MTG/(11-EGX):MTP=MTP-1
IF SPD<=0 THEN MTP=1:EGP=EGX:MTF=SPD ELSE MTF=SPD%SFT*MTG
GOTO @MAIN
END
'
@BEEP0
P1=EGP/2+EGP/2*ABS(MTF/SPM):V1=EGV/2+EGV/2*ABS(MTF/SPM)
IF BPF0!=7 THEN BPF0=7:TMF0=MAINCNTL:BEEP EGS,BP*P1,V1,64
IF MAINCNTL-TMF0>1-1*ABS(SPD/SPM) THEN BPF0=1
RETURN
'
@BEEP1
P=BRX/2+BRX/2*ABS(SPD/SPM):V=BRV/2+BRV/2*ABS(HDL/HDM)
IF BPF!=8 THEN BPF=8:TMF=MAINCNTL:BEEP BRS,BP*P,V,64
IF MAINCNTL-TMF>6 THEN BPF=0
'GOSUB @BEEP3
RETURN
'
@BEEP2
P=BRX-BRX*ABS(SPD/SPM)/4:V=BRV-BRV*ABS(SPD/SPM)/2
IF BPF!=8 THEN BPF=8:TMF=MAINCNTL:BEEP BRS,BP*P,V,64
IF MAINCNTL-TMF>6 THEN BPF=0
'GOSUB @BEEP3
RETURN
'
'@BEEP3
'B=BUTTON(3)
'IF B AND 140 THEN FOR I=0 TO 7:BEEP ,,0:NEXT:BPF=0
'RETURN
'
DATA "00F22F00"
DATA "00222200"
DATA "00244200"
DATA "00166100"
DATA "00122100"
DATA "00111100"
DATA "00211200"
DATA "00222200"
|
1/3
2/3
3/3
|
その後の展開
- 試作がある程度形になった時点で、ゲームっぽく(デストラクションダービー的な)しようとした。
- とりあえず流用しつつ無駄を省き、変数の名前を変え、サブルーチン化を行った。
- 処理速度が上がり、操作感が変わり、効果音が上手く誤魔化せなくなった。
- 当たり判定も上手く行かず(上下方向で大きくズレる)、だんだんヤル気が無くなって来る。
- そして時だけが過ぎていった。
|