新しく発言する EXIT インデックスへ
キー入力GetKeyStateのテストプログラム。L...

  キー入力 GetKeyState のテストプログラム。Linux で動きますか? SECOND 2007/09/13 00:07:40 
  !続く SECOND 2007/09/13 00:08:55  (修正1回)
  GetKeyStateはWin32APIなので,Linuxでは使... 白石 和夫 2007/09/13 10:55:15 
   ├http://hp.vector.co.jp/authors/VA008683/... 白石 和夫 2007/09/13 10:56:56 
   ├有り難うございます。是非御願いします。 SECOND 2007/09/13 18:34:38 
   └Ver6.4.3でASSIGN文のテストを行えるように... 白石 和夫 2007/09/17 13:51:28 
    └LinuxにGetKeyState相当のAPIがあるかどうか... 白石 和夫 2007/09/17 14:11:02 

  キー入力 GetKeyState のテストプログラム。Linux で動きますか? SECOND 2007/09/13 00:07:40  ツリーへ

キー入力 GetKeyState のテストプログラム。Linux で動きますか? 返事を書く ノートメニュー
SECOND <cszcthjjdj> 2007/09/13 00:07:40
!キー入力 GetKeyState のテストプログラム。Linux で動きますか?

!グラフ操作の、キー入力に、
! GetKeyState を使用しています。Linux で動きますか?

! 9種類のフラクタル画像・追跡ツール2

OPTION ARITHMETIC COMPLEX
DIM z0(0 TO 2^16) ! 最大N=16
LET i=complex(0,1) ! i= 虚数
SET LINE STYLE 1
SET TEXT FONT "",18
SET TEXT BACKGROUND "OPAQUE" ! 文字の背景を、背景色(色指標が0の色)で塗る。
LET item=1
LET N=1
!----------
DO
SELECT CASE item
CASE 1
LET a=0
LET b=(3+SQR(3)*i)/6
LET r=0
LET d=conj(b)
CALL Afine("1.コッホの曲線", 0.5, 0.1, 0.6)
CASE 2
LET a=(1+i)/2
LET b=0
LET r=conj(a)
LET d=0
CALL Afine("2.レヴィのC曲線", 0.5, 0.3, 1.1)
CASE 3
LET a=(1+i)/2
LET b=0
LET r=a
LET d=0
CALL Afine("3.ドラゴン", 0.5, -0.05, 1)
CASE 4
LET a=0
LET b=(1+i)/2
LET r=0
LET d=conj(b)
CALL Afine("4.ペアノの曲線", 0.5, 0.2, 0.6)
CASE 5
LET a=0
LET b=EXP(i*PI/7)/SQR(3)
LET r=0
LET d=2/3
CALL Afine("5.葉脈曲線", 0.5, 0, 0.6) ! (題名, 中心X, 中心Y, 半幅)
CASE 6
LET a=(1+i)/2
LET b=0
LET r=0
LET d=conj(a)
CALL Afine("6.カニの行列", 0.34, 0.2, 0.7)
CASE 7
LET a=0
LET b=1-EXP(-PI/5*i)
LET r=0
LET d=conj(b)
CALL Afine("7.クリヌキ正五角形", 0.5, 0.25, 0.6)
CASE 8
LET a=(1+i)/2
LET b=0
LET r=0
LET d=-a
CALL Afine("8.ブロッコリー", 0.58, 0.4, 1.3)
CASE 9
LET a=(2+i)/4
LET b=i/4
LET r=(2-i)/4
LET d=-i/4
CALL Afine("9.高木関数のグラフ", 0.5, 0.3, 0.6)
END SELECT
LOOP

!----------
SUB Afine(t$, xm, ym, h) ! (題名, 中心X, 中心Y, 半幅)
SET WINDOW xm-h,xm+h, ym-h,ym+h
DO
CLEAR
DRAW grid
PLOT TEXT,AT xm-h*0.9,ym+h*0.8:"描画中"
PLOT TEXT,AT xm-h*0.5,ym+h*0.8:t$
PLOT TEXT,AT xm+h*0.6,ym+h*0.8, USING "N= %%":N
PLOT TEXT,AT xm-h*0.93,ym-h*0.8:"ESC:終了"
PLOT TEXT,AT xm-h*0.88,ym-h*0.9:"←:曲線選択"
PLOT TEXT,AT xm-h*0.23,ym-h*0.8:"↑:N+1"
PLOT TEXT,AT xm-h*0.23,ym-h*0.9:"↓:N−1"
PLOT TEXT,AT xm+h*0.35,ym-h*0.8:"HM:N= 00"
PLOT TEXT,AT xm+h*0.35,ym-h*0.9:"→:曲線選択"
LET cx=0
CALL f0f1s(N, 0) ! z=0 の写像。 記憶のみ。
LET cx=0
CALL f0f1(N, 1) ! z=1 の写像。 z=0 の記憶と線で結ぶ。
PLOT TEXT,AT xm-h*0.9,ym+h*0.8:"   "
IF N=16 THEN beep
!続く

  !続く SECOND 2007/09/13 00:08:55  (修正1回) ツリーへ

Re: キー入力 GetKeyState のテストプログラム。Linux で動きますか? 返事を書く ノートメニュー
SECOND <cszcthjjdj> 2007/09/13 00:08:55 ** この記事は1回修正されてます
!続く
CALL keyin
SELECT CASE ky
CASE 27
STOP !Esc
CASE 37
IF item=1 THEN LET item=9 ELSE LET item=item-1 !←
EXIT DO
CASE 39
IF item=9 THEN LET item=1 ELSE LET item=item+1 !→
EXIT DO
CASE 36
LET N=0 !Home
CASE 38
IF N<16 THEN LET N=N+1 !↑
CASE 40
IF 0<N THEN LET N=N-1 !↓
CASE ELSE ! ←抜けていた。(2007.09.13)
END SELECT
LOOP
END SUB

!---------- セルフ・アファイン集合
DEF f0(z)=a*z+b*conj(z)
DEF f1(z)=r*(z-1)+d*conj(z-1) +1

!------ 全て z=0 の写像。 記憶のみ。
SUB f0f1s(k, z)
IF 0<k THEN
CALL f0f1s(k-1, f0(z))
CALL f0f1s(k-1, f1(z))
ELSE
LET z0(cx)=z
LET cx=cx+1
END IF
END SUB

!------ 全て z=1 の写像。 z=0 の記憶z0() と線で結ぶ。
SUB f0f1(k, z)
IF 0<k THEN
CALL f0f1(k-1, f0(z))
CALL f0f1(k-1, f1(z))
ELSE
DRAW lin_z0(z)
LET cx=cx+1
END IF
END SUB

!------ z0()~z の写像の直線を描き、z 側の85%位置に、* のマークを付ける。
PICTURE lin_z0(z)
SET LINE COLOR MOD(cx,16)+1
PLOT LINES: re(z0(cx)),im(z0(cx)); re(z),im(z)
IF N<7 THEN PLOT POINTS: re(z0(cx))*0.15+re(z)*0.85, im(z0(cx))*0.15+im(z)*0.85
END PICTURE

!------
!仮想キーコード、GetKeyState(12) is always ON (Win98SE)
!Enter  13 =0dh
!Shift  16 =10h
!Ctrl  17 =11h
!Alt   18 =12h
!Esc   27 =1bh
!空白  32 =20h (半角/全角) 同じ
!PgUp  33 =21h 「!」ではない
!PgDn  34 =22h 「"」ではない
!End   35 =23h 「#」ではない
!Home  36 =24h 「$」ではない
!←   37 =25h 「%」ではない
!↑   38 =26h 「&」ではない
!→   39 =27h 「'」ではない
!↓   40 =28h 「(」ではない
!0〜9  48〜57 =30h~39h
!A〜Z  65〜90 =41h~5ah
!テンキーの0〜9 96〜105 =60h~69h
!------
SUB keyin
DO
LOOP UNTIL 0<=GetKeyState(ky)
DO
FOR ky=27 TO 40
IF GetKeyState(ky)<0 THEN EXIT FOR
NEXT ky
WAIT DELAY 0.05
LOOP UNTIL ky<40+1
END SUB

END

  GetKeyStateはWin32APIなので,Linuxでは使... 白石 和夫 2007/09/13 10:55:15  ツリーへ

Re: キー入力 GetKeyState のテストプログラム。Linux で動きますか? 返事を書く ノートメニュー
白石 和夫 <fbdfvqwhki> 2007/09/13 10:55:15
GetKeyStateはWin32 APIなので,Linuxでは使えません。
Windows版のASSIGNに相当する機能をLinux版にも追加しようと考えているので,それが実現できれば,GetKeyState相当のこともできるようになるかも知れません。

   ├http://hp.vector.co.jp/authors/VA008683/... 白石 和夫 2007/09/13 10:56:56  ツリーへ

Re: GetKeyStateはWin32APIなので,Linuxでは使... 返事を書く ノートメニュー
白石 和夫 <fbdfvqwhki> 2007/09/13 10:56:56
http://hp.vector.co.jp/authors/VA008683/basi0000.htm
は不備なので修正します。

   ├有り難うございます。是非御願いします。 SECOND 2007/09/13 18:34:38  ツリーへ

Re: GetKeyStateはWin32APIなので,Linuxでは使... 返事を書く ノートメニュー
SECOND <cszcthjjdj> 2007/09/13 18:34:38
有り難うございます。是非御願いします。

   └Ver6.4.3でASSIGN文のテストを行えるように... 白石 和夫 2007/09/17 13:51:28  ツリーへ

Re: GetKeyStateはWin32APIなので,Linuxでは使... 返事を書く ノートメニュー
白石 和夫 <fbdfvqwhki> 2007/09/17 13:51:28
Ver 6.4.3でASSIGN文のテストを行えるようにしました(隠し命令です)。
文法はWindows版と同じですが,呼び出し規約はCDECLに変更しています。
Windows版ヘルプは
http://www.geocities.jp/thinking_math_education/BASICHelp/html/basi40z0.htm
です。

    └LinuxにGetKeyState相当のAPIがあるかどうか... 白石 和夫 2007/09/17 14:11:02  ツリーへ

Re: Ver6.4.3でASSIGN文のテストを行えるように... 返事を書く ノートメニュー
白石 和夫 <fbdfvqwhki> 2007/09/17 14:11:02
LinuxにGetKeyState相当のAPIがあるかどうかが問題なのですが,どなたかご存知の方はいませんか?


インデックスへ EXIT
新規発言を反映させるにはブラウザの更新ボタンを押してください。