プログラミングしてみました(笑) 長文注意!!



[ このメッセージへの返事 ] [ 返事を書く ] [ home.html ]



投稿者: けいちょん @ ppp_010.sunbit.or.jp on 97/9/18 04:55:28

In Reply to: こんなにレスがあるとは(笑)

posted by けいちょん @ ppp_200.sunbit.or.jp on 97/9/18 03:01:45

ぜんぜん眠くないので ちぃ〜と プログラム組んでみました(笑)
今日も 会社あるのになぁ・・・

ちなみに BASICはずっと前に忘れたので(^^ C言語が混在してます。
ゆるして〜〜〜

-------------------------------------------------------------
REM パッド入力は 16ビットで返ってきます
KEY_R = &h8000:KEY_L = &h4000:KEY_D = &h2000:KEY_U = &h1000
KEY_S = &h0800:KEY_A = &h0400:KEY_B = &h0200:KEY_C = &h0100
KEY_X = &h0040:KEY_Y = &h0020:KEY_Z = &h0010:

COMMAND_END = &hFFFF

REM SS-BASICはこういう配列の定義できまへん
REM      下   右下      右 パンチ
DIM HADOUKEN = { KEY_D, KEY_D OR KEY_R, KEY_R, KEY_A,COMMAND_END }

REM リングバッファは約0.5秒(32/60秒)用意
DIM RING(31):FOR i = 0 TO 31:RING(i) = 0:NEXT i
RING_INDEX = 0



*MAINLOOP:
VSYNC                 V-SYNC待ちコマンド(ほんとにあるぞ)
RING(RING_INDEX) = PAD(0,1)      パッド入力
RING_INDEX = (RING_INDEX + 1) AND 31 リングバッファの一番古いデータのポインタ


REM HADOUKEN チェック

KEY_CHECK = 0 HADOUKEN配列の何番めのデータをチェックするかを示す
COMMAND_ON = 0 コマンドが成立したら 1になる

for i=0 to 31 リングバッファの数だけループ
if RING((RING_INDEX + i) AND 31) AND HADOUKEN(KEY_CHECK) <> 0
THEN KEY_CHECK = KEY_CHECK +1
if(HADOUKEN(KEY_CHECK) = COMMAND_END )
THEN COMMAND_ON = 1:i = 32     ループ抜け出し
ELSE
ELSE
NEXT i

IF COMMAND_ON = 1 GOSUB *HADOUKEN
GOTO *MAINLOOP
-------------------------------------------------------------


こんな感じかなぁ とは思いつつ、自信なし(^^
こんなにちょこっと プログラムしただけでも
BASICよりは Cの方が簡単に書けるなぁ なんて思ってしまう。
IF THEN ELSE って 1行にかかないといけないんじゃなかったっけ?
配列データは DATA,READで定義しなきゃならないし。
ポインタ使えれば もうちょっと楽なんだけどなー
構造化BASICとやらに期待しよう・・・・。


これ、おもいっきり間抜けなプログラムだったりするかなぁ・・・・?
自分じゃ こういうふうにしか おもいつかなかった。


BASICに反応して いろいろな人が書き込みするってことは
期待してる人が いっぱいいるってことだよね
はやく出してくれないかなぁ・・・・


---------------------------------------------------------------------
NIFTYServe SGY02444                Keiji Fujita
E-Mail kei2@sunbit.or.jp   ヘヘ
WebPage http://www.sunbit.or.jp/kei2/ ミ(・・)ミ