反動のヴァナ日記

2015年8月よりプレイ中のFinalFantasyXIのプレイ日記です

【プチコン】手打ちしないでデータを自分のプログラムへ

前回のプログラムで出力したデータを自分のプログラムへ楽に移行する方法を思いつきました。
まず、前回のプログラムに以下のような修正を入れます。

CHRREAD(RN$,I),C$
LOCATE 0,J:? C$
J=J+2

これの上にJ=10があると思いますが
KY=1
と追加します。
J=10:KY=1という感じ。
そして、J=J+2の下に
KEY KY,C$
KY=KY+1
そしてその下のNEXTの下へ
KEY 5,"CLS:GCLS:SPCLR"+CHR$(13)
を入れておくと便利です。

BGキャラ用にも
? C$
の下へ
KEY 5,"CLS:GCLS:SPCLR"+CHR$(13)
KEY 1,C$
と入れておきます。

そして、普通のツールを起動しデータを画面に表示させておきます。
そしたらおもむろに、セレクトキーで停止させ、自分のプログラムをLOADします。
その時、画面がゴチャゴチャ汚いのでF5で一掃させます。
編集画面を開き、DATA文で各ファンクションキーを押せばデータが入力されます。
複数のキャラが欲しい場合は、一旦自分のプログラムをSAVEし、繰り返す必要があります。

ちなみに説明書を開くとKEYが初期化されるので注意。




スポンサーサイト
  1. 2011/03/15(火) 22:10:12|
  2. | トラックバック:0
  3. | コメント:0

【プチコン】リソースtoデータについて

実際自分で試してみたけど、ずらずらっとデータが表示されていると非常に視認性が悪いので
少しは見やすくなるかもしれないってことで下のような感じにしてみました。
ソースは、いらんかな。この程度なら^^;
あとは、圧縮についても実装してみましたが、どうも納得がいかないのでお蔵入りにしました。



  1. 2011/03/15(火) 19:08:23|
  2. | トラックバック:0
  3. | コメント:0

【プチコン】定義データのリソース登録

前回の記事にて出力したデータの登録例とその結果です。
しかし、このデータは1ドット文字なので長い!せめて半分くらいにならんものか。
圧縮する方法を探しています。(複合も簡単にできるもので)


こんな感じ。別になんにも難しいことしてないでそのまんま用意された命令を使っただけです。


一度スプライト初期化しておいてから実行します。


はい、ニタニタが登録されました~~
  1. 2011/03/15(火) 15:48:41|
  2. | トラックバック:0
  3. | コメント:0

【プチコン】リソースtoデータ

45行目に修正があります。下のソースでは修正済です。
前回のプログラムの解釈間違いと、機能の追加を行ったのでソースを残しておきます。
結構長くなってしまったのですが、スプライトとBGキャラの両方に対応しています。



【説明】
リソースのスプライト、BGのキャラクターは16進データで定義できるみたいですが
そのデータを調べるツールです。
スプライトとBGキャラどちらでも使えます。
このデータをソースに入れることで、ソースの中にリソースデータを埋め込めるという訳です。

【使い方】
初めにリソースを保存してあるファイル名を入れます。
変数クリアをしていないので、次回起動時に前回と同じファイル名なら0を入れることで入力を省略できます。
次にスプライトなら1、BGなら2を入力。
次にパレット番号を入れます。パレット番号は出力されるデータには関係ないです。
データを入れ終わると、キャラクターが表示されます。
上下左右で、カーソルを動かせばカーソルのあるキャラクターのデータが下に表示されるので
携帯で写真にとったり、メモを取ったりして自分のプログラムに使ってください。
一度戻りたい時はAボタンで戻れます。

追記:後から見ると無駄な部分が結構あります。各自工夫して使いやすく改造してください。

'***RTD2***
@J
CLS:SPCLR
LOCATE 0,8
FN1$=FN$
INPUT"FILENAME(0-"+FN$+")";FN$
IF FN$=="0" THEN FN$=FN1$
'
INPUT"1)SPU 2)BGU";A
IF A==1 THEN RN$="SPU0":GOTO @J1
IF A==2 THEN RN$="BGU0":GOTO @J1
GOTO @J
'
@J1
INPUT"PALET";PL
IF PL<0 OR PL>15 THEN @J1
'
RN1$=RN$+":"+FN$
LOAD RN1$,FALSE
'
N=0
IF A==2 THEN @LOOP
GOTO @LOOP2
'***SPRITE
@LOOP2
FOR Y=0 TO 3
    FOR X=0 TO 15
        SPSET N,N,PL,0,0,3
SPOFS N,X*16,Y*16
N=N+1
    NEXT
NEXT
X=0:Y=0
'
@J2
CLS
BT=BUTTON()
X=X+(BT == 8)-(BT == 4)
Y=Y+(BT == 2)-(BT == 1)
IF BT AND 16 THEN @J
IF X>15 THEN X=15
IF X<0  THEN X=0
IF Y>3 THEN Y=3
IF Y<0 THEN Y=0
CHRNO=X*4+Y*64 ←32になっている方は修正してください
LOCATE 0,8:? STR$(X)+","+STR$(Y)
J=9
FOR I=CHRNO TO CHRNO+3
CHRREAD(RN$,I),C$
LOCATE 0,J:C$
J=J+2
NEXT
XX=X*2:YY=Y*2
COLOR RND(7)
LOCATE XX,YY:?"**"(注意:網掛け記号)
LOCATE XX,YY+1:?"**"(注意:網掛け記号)
COLOR &HF
VSYNC(5)
GOTO @J2
'***BGCHR
@LOOP
N=0
FOR Y=0 TO 7
    FOR X=0 TO 31
GPUTCHR X*8,Y*8,"BGU0",N,PL,1
N=N+1
    NEXT
NEXT
X=0:Y=0
'
@J3
CLS
BT=BUTTON()
X=X+(BT == 8)-(BT == 4)
Y=Y+(BT == 2)-(BT == 1)
IF BT AND 16 THEN @J
IF X>31 THEN X=31
IF X<0 THEN X=0
IF Y>7 THEN Y=7
IF Y<0 THEN Y=0
'
COLOR RND(7)
LOCATE X,Y:?"*"(注意:網掛け記号)
COLOR &HF
LOCATE 0,8:? STR$(X)+","+STR$(Y)
LOCATE 0,9:CHRREAD(RN$,X+(Y*32)),C$
? C$
VSYNC(5)
GOTO @J3





























































  1. 2011/03/15(火) 11:59:12|
  2. | トラックバック:0
  3. | コメント:0

【プチコン】ニタニタ(もどき)とマリオ(もどき)

前回のプログラムと今回のデータも解釈が間違えていたので次の記事に書きなおします。

前回の記事で書いたプログラムを使って
自分でドット打ったスプライトキャラクターを書いておきます。
【絵を見ながらドット打ったので細かい部分は本物と異なります。】
ニタニタ(もどき)
口開き
0000000000004FF400044FF4004F4F14
00FF4F1404F44FF4F4444444F4444F1F
口閉じ
000000004FF40000F44FF000F1F44400
41F444004FF444404444444FF1F4444F
マリオ(もどき)
歩き1
2444FF1F24F1FF1F04F1FF1F0041FF1F
0044FF1F00044F1F0000444400000000
歩き2
F1FF4442F1FF1F42F1FF1F40F1FF1400
F1FF4400F1F440004444000000000000
歩き3
0000000000004FF400044F14004F4F14
00FF4FF404F44FF4F4444444F4444F1F
ジャンプ
000000004FF40000F1F44000F1F44400
4FF444004FF444404444444FF1F4444F

スプライト、BG共にみて確認できる様に前回の記事のプログラムを修正済みです、後でアップします。


  1. 2011/03/14(月) 18:30:42|
  2. | トラックバック:0
  3. | コメント:0

【プチコン】リソースをソースに入れるために

データの解釈に誤りがあったので削除。
こちらを参考にしてください。

プチコンを手に入れて、ファミべチックなゲームを作ろうと思っています。
それにはファミべチックなキャラが必要、という事でリソースのエディタでドット打ったりしてるんですが
これを他人にやってもらおうとすれば、どうしてもリソース情報を配信せねばなりません。
ネットによる配信はできませんので、ソースにその情報を入れる必要があります。
そんな方法はないのかな~?って思ったらちゃんと命令が用意してありました。

まずは、ユーザーリソース(SPUやBGUなど)のキャラクターを文字データにしなくてはなりません。
まだ、あまりテストしていないのですが(SPUしか)とりあえず文字データを表示させるプログラムを作りました。
この文字データをDATAなどでREADして使えば良いと思われます。(まだ試してないけどw)

そのソースを以下へ。

CLEAR:CLS
@J
FN1$=FN$
INPUT"FILENAME(0-PASS)";FN$
IF FN$=="0" THEN FN$=FN1$
'
INPUT"1)SPU 2)BGU";A
IF A==1 THEN RN$="SPU":GOTO @J1
IF A==2 THEN RN$="BGU":GOTO @J1
GOTO @J
@J1
INPUT"BANK";A
NO$=STR$(A)
RN$=RN$+NO$
LOAD RN$+":"+FN$,FALSE
'
N=0
@LOOP
INPUT"CHR No(999 RESTART)";N
IF N=999 THEN @J
CHRREAD(RN$,N),C$
? C$
GOTO @LOOP

補足
CHRのナンバーで999を入れるとファイル名からやり直しになります。
ファイル名は二回目も同じだったら0を入力すれば前回と同じになります。




  1. 2011/03/14(月) 13:03:13|
  2. | トラックバック:0
  3. | コメント:0

【Luarida】 新作 BaronTrip

3/2 20:10 ソースを読みやすいように修正、一部処理を修正。
某任(ryのゲームのパク(ryオマージュ作品です。
いろいろ追加仕様を考えたりしましたが、シンプルにソース短く簡潔に!っていうのが
Luaridaでの方針なのでシンプルにいきました。
ゲームスタートしたらひたすら右へ強制スクロールしますので、タップして
青い「8」のバロン君を羽ばたかせてください。
バロン君は風船を背中に2つ付けています。
障害物に当たると風船が割れてしまいます。風船がなくなれば下の海(?)へ落ちて死亡です。
単に海へ落ちても死亡です。



動画


------------------------------
--   BaronTrip   反動2011/3 --
------------------------------
w,h = canvas.getviewSize()--画面サイズ取得
fsize = h / 16--キャラクタサイズ
map = {}--画面上の機雷格納用
for i=1 , 16 do
map[i] = {}
end
cnt = 1--スクロール用
x,y = 128,128--バロン君初期位置
yy = 0--落下速度
tflag = 0--押しっぱなし判定用
sc,hsc = 0,0--スコア、ハイスコア
mtk = 0--無敵時間
life = 2--風船の残り
scene = 1--ゲームシーン


function main() --//メイン//
while(true) do
-- Title --
if scene == 1 then 
dialog("BaronTrip","TripStart!",1)
scene = 2
-- Game  --
elseif scene == 2 then
mapmake()
for i=1,fsize,2 do 
cnt = i
canvas.putCls(color(0,0,0)) 
canvas.putRect(0,h-2,fsize*16,h,color(0,0,255),1)
scroll()
man()
canvas.putflush()
end
sc = sc + 1
if sc > hsc then hsc = sc end
if mtk > 0 then
mtk = mtk - 1
end
-- GameOver --
elseif scene == 3 then
canvas.putflush()
yn = dialog("Game Over!!","Continue?",2)
   if yn == 1 then
       sc = 0
       life = 2
       yy = 0
       y = 128
       scene = 2
       mtk = 3
   else
       system.exit()
   end
   end
end
end -- //メイン終わり//

function mapmake() -- //ランダムで*を生成//
for i=1,16 do
   for j=1,15 do
       map[j][i] = map[j+1][i]
   end
end

for i=1,16 do
   if math.random(0,20) == 0 then
       map[16][i] = "*"
   else
       map[16][i] = nil
   end
end
end --

function scroll() -- //画面描画とスクロール//

for i=1,16 do
   for j=1,16 do
       if (map[j][i]  ~= nil)  then
            canvas.putText(map[j][i],j*fsize-cnt,i*fsize,fsize,color(255,255,255))
       end
   end
end     
canvas.putText( "HI-SCORE=" .. hsc , 16* fsize,fsize*3,fsize,color(255,255,255))
canvas.putText( "SCORE=" .. sc , 16* fsize,fsize*4,fsize,color(255,255,255))
canvas.putText( "BaronTrip"  , 16* fsize,fsize,fsize*2,color(255,255,0))
end --

function man() -- //バロン君処理//
    tx,ty,b = touch()
    if (tflag == 0) and (b ~= 1) and (life > 0)then
yy = yy - 1
tflag = 1
    elseif (b == 1)then 
tflag = 0             
    end
    yy = yy + 0.05
    y = y + yy
    if y <= fsize then--天井
y = fsize
yy = 2
    end
-- 当たり判定
   if mtk == 0 then
   for i=1,16 do
       for j=3,5 do
           if map[j][i] == "*" then
               if (x + fsize - 12 > j * fsize - cnt) and (x  < j * fsize + fsize - cnt) and (y + fsize - 12 > i * fsize ) and (y - 12 < i * fsize + fsize) then
                    mtk =  3
                    life = life - 1
                    yy = yy + 2
               end
           end
       end
   end
    end
-- 海に落ちた?
    if (y > h) then
        scene = 3
    end
   -- バロン君と風船描画
    canvas.putText("8",x,y,fsize,color(0,0,255))
    if life == 2 then
        canvas.putText("●●",x-12,y-24,fsize,color(255,0,0))
    elseif life == 1 then
        canvas.putText("●",x,y-24,fsize,color(255,0,0))
    end
end --

main()

  1. 2011/03/02(水) 09:41:54|
  2. | トラックバック:0
  3. | コメント:0

閲覧者数

現在の閲覧者数:

訪問数

プロフィール

ヴァナ時計

最新記事

カテゴリ

FF11 (142)
FF11でJoytokey (7)
FF11自分用φ(`д´)メモメモ... (1)
未分類 (1)
雑談その他 (6)
(137)
EQ2 (1)
FFXIXHB (1)
GPD WIN (0)
FF15 (1)
DQ11 (1)

最新コメント

ランキング

記載されている会社名・製品名・システム名などは、各社の商標、または登録商標です。

検索フォーム

RSSリンクの表示

リンク

このブログをリンクに追加する

ブロとも申請フォーム

この人とブロともになる

QRコード

QR