仮眠プログラマーのつぶやき

自分がプログラムやっていて、思いついたことをつぶやいていきます。

自作ゲームやツール、ソースなどを公開しております。
①ポンコツ自動車シュライシュラー
DOWNLOAD
②流体力学ソース付き
汚いほうDOWNLOAD
綺麗なほうDOWNLOAD
③ミニスタヲズ
DOWNLOAD
④地下鉄でGO
DOWNLOAD
⑤ババドン
DOWNLOAD
⑥圧縮拳(ツール)
DOWNLOAD
⑦複写拳
DOWNLOAD
⑧布シミュレーション
DOWNLOAD
⑨minecraft巨大電卓地形データ
DOWNLOAD
⑩フリュードランダー
デジゲー博頒布α版
DOWNLOAD
⑪パズドラルート解析GPGPU版
DOWNLOAD
⑫ゲーム「流体de月面着陸」
DOWNLOAD

技術解説「地下鉄でGO!」

技術解説「地下鉄でGO!」その3 式に補正する

今までのをまとめると


s=1500000
repeat -1

await 30

v+=a

s-=v

stick key

if key=8:a+

if key=2:a-

title "残り"+s+"mm 速度"+v+" 加速度"+a+"" ;変数の数値確認用

loop



こうなります。


しかし、このままでは↓キーを5回くらい押したところでものすごい速度になってあっという間に1500m到達してしまいます。


これはフレーム数にもよりますが、ただ単純にs-=vの回数が多いのが原因です。


解決するには、vの値を小さくするか、sの値を大きくするしかないです。


前者の場合ではs-=v/10とこうします。10でなくてもその場に応じて適当な値にしてください。


あまり大きな値で割ると精度が悪くなるので注意

また後者の場合は最初の代入命令のときs=1500000*10と適当な値で掛けて

s-=v

この式はこのままにすれば、いいです。


しかし注意が必要なのは単位がmmではなくなったので、表示するときにはmes s/10 などして

補正してください。

技術解説「地下鉄でGO!」その2 駅まであと何m、の部分

駅までの距離をsとします。


だいたいmm刻みで計算すれば精度的にはokなはずなので、次の駅まで1500mだとすると


s=1500000


と代入してください。

一応もっと精度を上げたい場合はその10倍と、いくらでもできます。

(精度については次回詳しく説明します)


そしてルーチン内にsからvを引く式を書けば、距離が縮まっていくプログラムが完成します。


あとは条件式 if を使って、マスコン(ブレーキ)の最大値を制限したり、速度がマイナスにならないようすれば

基本システムは完成したも同然!


次は、実際にプログラムを書いて順々に解説していきたいと思います。

技術解説「地下鉄でGO!」その1 変数をどう使う?

同じプログラマーで「電車でGO!」が好きな人なら、一度は自分で電GOもどき作りたいなと思うものです。


「地下鉄でGO!」は明らかに「電車でGO!」を意識しているのは明らかなので、地下GOを解説することによって電GO作りたい人にも参考になるってカンジでやってこうと思います



まずゲームを作るにあたり、最低必要な変数を考えます。


それには、このゲームはこれが無いと始まらないってところを考えます。


電車でGOの場合だと、タイトル画面でもなく車種の数などでもなく、加速減速の操作が一番重要なとこですよね?


なので最初は加速減速をキーで操作できるルーチンを作るのです。


では速度をvという変数にしたとき、↓キーを一回押すと加速するようなプログラムはどう作りましょう?


加速するには加速度という概念がないといけないのでaという新たな変数を作ります。


↓キーを押すとaが加算され、vには毎ルーチンごとにaを足す式を作れば可能です。


一応


repeat -1

await 30

v+=a

stick key

if key=8:a+

loop


こんなふうになるはずです。


マスコンは入れれば入れるほど強く加速していくので、aはそのままマスコンの位置変数として使えます。


またaがマイナスの値になればvはへって行くのでブレーキ時の減速するプログラムも同時に完成です。



さて、次回は距離の概念を付け加えます。

プロフィール

toropippi

記事検索
アクセスカウンター

    QRコード
    QRコード
    • ライブドアブログ