目次に戻る

※バックアップミスによりタッチパネル処理を含まないプログラムになっており、説明文と食い違うので公開終了とします。

  • 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
    1/3

    2/3
    2/3

    3/3
    3/3

その後の展開

    1. 試作がある程度形になった時点で、ゲームっぽく(デストラクションダービー的な)しようとした。
    2. とりあえず流用しつつ無駄を省き、変数の名前を変え、サブルーチン化を行った。
    3. 処理速度が上がり、操作感が変わり、効果音が上手く誤魔化せなくなった。
    4. 当たり判定も上手く行かず(上下方向で大きくズレる)、だんだんヤル気が無くなって来る。
    5. そして時だけが過ぎていった。

 

inserted by FC2 system