ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年4月27日(土) 22:18

全ての表示時間は UTC+09:00 です




新しいトピックを投稿する  トピックへ返信する  [ 5 件の記事 ] 
作成者 メッセージ
投稿記事Posted: 2008年5月23日(金) 15:23 
初めての投稿です。ActiveBasic初心者のトモカズと申します。
以下の線中は読み飛ばしていただいて構いません。
-------------------------------------------------------------------------------
私が高校生の時(20数年前!)に作成したプログラムソース(対戦オセロソフト)が押入れの奥から出てきました。
懐かしさのあまり、どうしても実行してみたくなったのですが、残念ながら当時のマシンはありません。
そこでActive Basicの存在を知り、どうにか N88BASICモードにて移植が出来ました。
さほど手を入れる事が無く移植が出来ましたが、どうせWindows版ならば、それらしくしたいと考えるようになりました。
しかし、私自身プログラムを組むのも20年ぶりですし、最近の言語による作り方は何と様変わりしたのだろうと感じております。
こちらのフォーラムの記事を見ても(頭が固いのか)良く理解出来ず、四苦八苦しております。
------------------------------------------------------------------------------
さて、ここから本題です。
現在のN88BASICモードで作成したソースをノーマルウィンドゥモードに変更したいと思います。
そこで、マウス位置のキャプチャー及びマウスボタンの判定、ビットマップ表示、テキスト文字の表示をするそれぞれのサブルーチン(・・とは最近言わないのでしょうか?)を、どの様に組み込んだら良いのかをご教授いただきたいのです。
どうぞ、よろしくお願いいたします。

なお、N88モードで作成したものが以下のファイルです。石をビットマップにして見栄えを良くし、マウス操作による動作にしたいと思っております。
http://homepage3.nifty.com/ae85fcmxs/re ... ab-21a.lzh


通報する
ページトップ
   
 記事の件名:
投稿記事Posted: 2008年5月23日(金) 17:42 
オフライン

登録日時: 2005年7月25日(月) 13:27
記事: 893
お住まい: 埼玉県東松山市
マウス位置の取得にはGetCursorPosとScreenToClientが使えます。
判定にはイベントを使ってください。 テキストの表示にはTextOutやDrawTextがあります。GetDCについても調べてください。

_________________
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2008年5月24日(土) 05:28 
早々の返信ありがとうございます。
また、サンプルまで作成いただきまして感謝いたします。

早速、実行してみました。ビットマップの表示に成功しました。
基本的な質問で恐縮ですが、メインルーチン(現在N88モードで作成したコード)は「ここから下は、イベントプロシージャを記述するための領域になります。」と書かれている下に記述すればよろしいのでしょうか?
また、メインルーチンからサブルーチンを呼び出すにはどうしたらよいのでしょうか?


通報する
ページトップ
   
 記事の件名:
投稿記事Posted: 2008年5月24日(土) 12:14 
オフライン

登録日時: 2005年7月25日(月) 13:27
記事: 893
お住まい: 埼玉県東松山市
いいえ、その領域に書いてもあまり意味がありません。

もしコンピュータ側がオセロのコマを置く場所を考えるプログラムが
一瞬で終わるなら、MainWndのLButtonUpイベント内に全部記述してもいいと思います。
もし一瞬で終わらないなら(3秒程度からそれ以上かかるなら)、CreateThread関数を使用するなど、フリーズさせないための仕掛けが必要です。
コード:
Sub MainWnd_MouseMove(flags As Long, x As Integer, y As Integer)
    'マウスが動いた時に呼び出される。
    'オセロのコマの再描画が必要なら行う。
End Sub

Sub MainWnd_LButtonUp(flags As Long, x As Integer, y As Integer)
/*
マウスが左クリックされた瞬間に呼び出される。
引数のxとyにクライアント座標が入ってる。
その座標を元に石が置けるかどうかをチェックして
置けるなら置いて
置けないならExit Sub
SendMessageで自分宛にWM_PAINTを送りつけて、再描画要求をする。
コンピュータが置ける場所を考えて置く
SendMessageで自分宛にWM_PAINTを送りつけて、再描画要求をする。
*/
End Sub

Sub MainWnd_Paint(hDC As HDC)
    '再描画が必要な時に呼び出される
    'コマを書き直す処理を行う。
End Sub
メインルーチンからサブルーチンを呼び出す方法は、FunctionやSubを使ったプログラムで練習してください。
最近のABでは、関数内部でgosubを使えるかどうかが怪しいので。
コード:
#N88BASIC
Sub1()
Sub2()
Sleep(-1)

Sub Sub1()
    Print "呼び出されるサブルーチン1"
End Sub

Sub Sub2()
    Print "呼び出されるサブルーチン2"
End Sub

_________________
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2008年5月31日(土) 18:56 
konisiさん、ありがとうございました。
また、返事が遅くなってしまい申しわけありません。

なかなか一筋縄ではいかないですね。やはり一足飛びに実現は難しいものです。
コツコツと勉強し慣れていくしかなさそうです。
まずは、N88BASICモードでbmpファイルの表示(は出来ました),マウスによる操作(出来るのでしょうか?)を作成してみたいと思います。
その後、ノーマルウィンドゥ化に挑戦してみます。


通報する
ページトップ
   
期間内表示:  ソート  
新しいトピックを投稿する  トピックへ返信する  [ 5 件の記事 ] 

全ての表示時間は UTC+09:00 です


オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[9人]


トピック投稿:  可
返信投稿:  可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

検索:
ページ移動:  
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean