C# で MyClock Ver 1.00 を作る

プログラム電卓のためのC#プログラミング
e-Gadget

<MyClock トップへ戻る>


2017/02/10

初めて作る C# プログラム - MyClock


今回は、前作の MyClock Ver 0.10 を元にして、フォームのキャプションバーと枠が無い、よりシンプルでスクリーン上で邪魔にならないデジタル時計を作ります。これを Ver 1.00 とします。



MyClock Ver 1.00 の目標仕様

「邪魔にならないデジタル時計」にするために、

MyCLock4 

こんな感じにしてみます。なお前回で既に半透明、最前面表示にしています。

追加の目標仕様
  1. クライアント領域だけの外観に変更
  2. クライアント領域を左ダブルクリックで終了可能にする
  3. クライアント領域をマウスで掴んで移動可能にする
  4. マウス右クリックで最小化できるようにする
前回作ったのは、

 MyClock2  MyClock 

こんな外観ですが、
  • プログラムを終了するには、右上の [X] ボタンを押すしかありません
  • 時計を移動するには、キャプションバー (タイトルバー) をマウスで掴んで動かす必要があります。
ここでキャプションバーを無くすと、プログラムの終了とフォームの移動ができなくなるので問題です。

さて、フォーム(ウィンドウ)のタイトルバーとウィンドウ枠以外の部分をクライアント領域といいます。キャプションバーを無くして残るクライアント領域だけを使って、マウス操作でプログラムの終了と移動ができるようにするのが、今回の主なテーマです。



1. プログラムアップデートの準備

簡単なバージョン管理方法

確実に動作することが分かっている前作のソースコードを直接変更すると、何か原因不明のバグがあった時に、元に戻すのに苦労しそうです。バージョン管理が必要です。Visual Studio COmmunity 2015 では、ソースコードのバージョン管理のために Git を使えるようになっています。Git については、ネット検索すると分かると思うので、ここでは触れません。

ご自分のバージョン管理の方法があれば、それが一番良いと思います。

ここでは、PC内とホームページ用サーバーの両方にバックアップを残して、こまめにバージョン管理を行う私の方法を紹介します。


前作では、以下のフォルダ構造にしてから、新規にプロジェクトを作りました。

 <MyClock>
  <MyClock0100> ← [場所(L):」に入力したフォルダ

プロジェクトの作成が終わると、プロジェクト名のフォルダ (作業フォルダ) が追加されて、次のようになりました。

 <MyClock>
  <MyClock0100> ← [場所(L):」に入力したフォルダ
   <MyClock> ← 追加された作業フォルダ

そこで、今回は バージョンが分かるフォルダが並列になるように手で追加して、次のようなフォルダ構造にします。

 <MyClock>
  <MyClock0100> ← [場所(L):」に入力したフォルダ
  <MyClock1000> ← 今回新たに作るフォルダ

MyClock1000 フォルダを上のように新たに作り
MyClock0100 の中身を全て新たに作った MyClock1000 フォルダに丸ごとコピーします。

 <MyClock>
  <MyClock0100>
  <MyCLock1000>
   
<MyClock> ← これ以下は丸ごとコピーしたもの
    ・
    ・
    ・

念のためのバックアップも作ります。前回使った MyClock0100 フォルダを丸ごと圧縮して MyClock0100.zip を作ります。その上で今バックアップした MyClock0100 フォルダを削除して、MyClock1000 フォルダだけにしておきます。

このような方法で、バージョンを小分けにして管理&バックアップしておくと、何かあっても1つ前のバージョンに簡単に戻って仕切り直しができます。実はこれで何度も救われました!

最終的なフォルダ構造は、こんな感じです。

 <MyClock>
  MyClock0100.zip
  <MyClock1000> ← 今回新たに作ったォルダ
   <MyClock> ← 今回の作業フォルダ
    MyClock.sln
    <MyClock>
    <obj>
    <bin>

これで、準備完了!

MyClock.sln を起動すれば、開発環境が立ち上がります。

<原始的なクラウドバックアップ>
配布ファイルと称して、上の作業フォルダとは少し構成を変えたフォルダを準備し、フォルダごとzipファイルにしたものを業者のホームページサーバーにバックアップをしています。これで、自分のPCが不調になっても大丈夫です。


 先ずはリビルドしてみる

メニューバーの下に「Debug」「Any CPU」とあり、この状態で、メニューで、[ビルド(B)] - [ソリューションのリビルド(R)] を選び、ビルドを実行します。すると、出力ウィンドウで

1>------ ビルド開始: プロジェクト:MyClock, 構成:Debug Any CPU ------

と表示され、その後すぐに

1>------ ビルド開始: プロジェクト:MyCloxk, 構成:Debug Any CPU ------
1> MyClock -> C:\MyData\MySource\VS2015\Projects\C#\MyClock\MyClock1000\MyClock\MyClock\bin\Debug\MyClock.exe

と1行追加表示されます。デバッグモードでビルドした実行ファイル名とパスが表示されます。

ここで、
1> MyClock -> C:\MyData\MySource\VS2015\Projects\C#\MyClock\MyClock1000\
は、新たに追加したフォルダで、

その下の MyClock フォルダがソリューション MyClock のフォルダ、
さらにその下にある 同じ名前の MyClock フォルダが プロジェクト MyClock のフォルダです。

そして、実行ファイル MyClock.exe は プロジェクトフォルダの下の bin\Debug フォルダに作成されていることが分かります。リリースモードでビルドすると、bin\Release フォルダ内にファイルが出力されます。

ビルドが終わると、出力は以下のようになります。

1>------ ビルド開始: プロジェクト:MyCloxk, 構成:Debug Any CPU ------
1> MyClock -> C:\MyData\MySource\VS2015\Projects\C#\MyClock\MyClock1000\MyClock\MyClock\bin\Debug\MyCloxk.exe
========== ビルド: 1 正常終了、0 失敗、0 更新不要、0 スキップ ==========


1 正常終了 となっているのでビルドエラーが無かったことが分かります。


デバッグモードで実行してみる

前回述べたようにデバッグモードで実行するための複数の方法から [F5] キーを押すだけが楽です。
問題ないことが確認できればOKです。



2. クライアント領域のマウス操作だけで、アプリの終了とフォームの移動を行う

クライアント領域のダブルクリックでプログラムを終了させる

方針

ダブルクリックのイベントを捕らえ、そのイベントハンドラに終了処理を書けば良いので、簡単そうです。

MyClock2 

MyClock の場合は、ラベル currentTime がクライアント領域全体を覆っています。従ってダブルクリックのイベントはラベル currentTime が捕らえるようにします。

手でコーディングしても良いですが、イベントハンドラのテンプレートを作るのは IDE で自動化するのが楽です。VC++の経験があれば自動作成のやり方は分かるので、先ずはこれで作ってから、出来たコードを眺めると良い勉強になります。


イベントハンドラの半自動作成

ソリューションエクスプローラーで、Display.cs をダブルクリックするとフォームデザイナーが現れます。ここで右の方を見ると、プロパティが示されています。

フォームのキャプションバー (タイトルバー) あたりをクリックすると Display フォームのプロパティlが表示されます。
時計の時間表示あたり、つまりラベルコントロールをクリックすると currentTime ラベルのプロパティが表示されます。

currentTime ラベルのプロパティ画面で、イナズマの形をしたツールボタンを押すとイベントの一覧が現れます。
アクション の下に DoubleClock があるのでこれをダブルクリックすると、currentTime ラベルをダブるクリックした時のイベントハンドラのテンプレートが自動作成され、作成されたコードが表示されます。

ダブルクリックのイベントハンドラ1

ここに、プログラムの終了コマンドを書き込めばOK。

終了させるコマンドはいくつもありますが、取り敢えず Dispose(); とします。1行書くだけでイベントハンドラの実装は終わりです。

ダブルクリックのイベントハンドラ2 


イベントハンドラの定義

ここで、ソリューションエクスプローラーで、Display.cs の左にある小さな ▷ をクリックすると下に展開して、Display.Designer.cs が出てくるので、これをダブルクリックしてファイルを眺めてみます。

「Windows フォームデザイナーで作成されたコード」の左にある小さな [+] ボタンをクリックして展開します。

フォームデザイナで追加されたコード

反転した1行が自動的に追加された記述で、イベントハンドラを定義しています。この行を手で削除すると フォームデザイナーが正常に開けなくなるので、ここは触らないのが無難です。

デバッグモードになっていることを確認し、

デバッグビルド 

[F5] を押して、実行します。クライアント領域 (時刻表示のラベル currentTime の上) をダブルクリックして、正常に終了したらOKです。


クライアント領域をマウスで掴んで移動させる

 方針
  1. クライアント領域でマウスボタンが押されている状態のイベントを捕らえる
  2. マウスボタンが押されているイベントハンドラで、クリックしたのが左ボタンかどうかをチェックする
  3. マウスの移動をイベントハンドラで捕らえる
  4. マウス移動のイベントハンドラで、マウスの座標を取得する
  5. マウス移動のイベントハンドラで、取得した座標にフォームを移動させる
このようにして、プログラムを作ります。


 マウスが押されているイベントとマウス移動のイベントのハンドラ作成

クライアント領域のラベル (currentTime) をクリックし、プロパティ画面でイナズマ形のツールボタンを押すと、このラベルで受け取れるイベント一覧が現れます。

マウスイベント一覧  

マウスイベントの一覧を見ると、MouseDown イベントがあります。下に説明があります。補足すると、これはクリックのイベントではなく、マウスボタンが押された時に発生するイベントです。ボタンを離せばイベントが発生しません。

Windowsの特性として、MouseDown イベントはボタンを押し続けている間は、パルスが繰り返し発生するような感じでイベントメセージが繰り返し送り続けられます。つまり、MouseDownイベントハンドラが繰り返し呼び出されます。

MouseDown をダブルクリックすると、このイベントハンドラの定義が Display.Designer.cs に、実装のテンプレートが Display.cs に作成されます。

同様にして MouseMove イベントのハンドラも作ります。

作ったマウスイベント 

プロパティ画面では、今作ったマウスのイベントハンドラ名が確認できます。
  • currentTime_MouseDown
  • currentTime_MouseMove


自動作成された部分を確認してみます。

作ったマウスイベントのテンプレート

Display.cs には、今作った2つのイベントハンドラのテンプレートが出来ています。


使ったマウスイベントの定義

Display.Designercs には、2つのマウスイベントの定義が出来ています。


MouseDown イベントハンドラの実装を完成させる

Display.cs にコードを追加して、以下のように完成させます。

 // マウス位置の記録変数の宣言
 private Point mousePoint;

 // マウスが押された時のイベントハンドラ
 private void currentTime_MouseDown(object sender, MouseEventArgs e)
 {
  // 左ボタンの場合
  if ((e.Button & MouseButtons.Left) == MouseButtons.Left)
  {
   //位置を取得する
   mousePoint = new Point(e.X, e.Y);
  }
 }

 // マウス移動のイベントハンドラ
 private void currentTime_MouseMove(object sender, MouseEventArgs e)
 {
  // 左ボタンの場合
  if ((e.Button & MouseButtons.Left) == MouseButtons.Left)
  {
   //フォームを移動する
   this.Left += e.X - mousePoint.X;
   this.Top += e.Y - mousePoint.Y;
  }
 }

初めて使うC#でプログラムを作るにあたって、なんとか少しづつ理解を深めています。

ネットにはC#に関する情報が多くあるので、とても参考になります。その上で、色々と実験プログラムを書いて自分の理解を確認しています。

変数宣言した後に実際に使うために、new キーワードでその変数の実体 (インスタンス) を作る必要があります。上の例で言えば、

private Point mousePoint;
mousePoint = new Point(e.X, e.Y);

C#の解説が目的でないので (というか、まだ無理なので)、このように書けば目的の動作になる一例としてご覧ください。

では、動作確認のために [F5]を押して、デバッグモードで実行します。クライアント領域のマウス操作だけで、アプリの終了とフォームの移動ができることが確認できますね。


3. マウス右クリックでフォームを最小化する

MouseDown イベントハンドラで、右ボタンの場合にフォーム最小化のコードを書きます。

 // マウスが押された時のイベントハンドラ
 private void currentTime_MouseDown(object sender, MouseEventArgs e)
 {
  // 左ボタンの場合
  if ((e.Button & MouseButtons.Left) == MouseButtons.Left)
  {
   //位置を取得する
   mousePoint = new Point(e.X, e.Y);
  }

  // 右ボタンの場合
  if ((e.Button & MouseButtons.Right) == MouseButtons.Right)
  {
   // 最小化する
   this.WindowState = FormWindowState.Minimized;
  }
 }


ここで、チョット味付けをしてみます。

マウス左ボタンで掴んで移動なので、クライアント領域で左ボタンを押した時にマウスカーソルを手の形 (Hand) に変更し、左ボタンが離されたら元の形に戻すようにしてみます。

 // マウス位置の記録変数の宣言
 private Point mousePoint ;

 // マウスが押された時のイベントハンドラ
 private void currentTime_MouseDown(object sender, MouseEventArgs e)
 {
  // 左ボタンの場合
  if ((e.Button & MouseButtons.Left) == MouseButtons.Left)
  {
   // 位置を取得する
   mousePoint = new Point(e.X, e.Y);
   // カーソルをHandに変更
   this.Cursor = Cursors.Hand;
  }
  else
  {
   // カーソルを元に戻す
   this.Cursor = Cursors.Default;
  }

  // 右ボタンの場合
  if ((e.Button & MouseButtons.Right) == MouseButtons.Right)
  {
   // 最小化する
   this.WindowState = FormWindowState.Minimized;
  }
 }

 // マウス移動のイベントハンドラ
 private void currentTime_MouseMove(object sender, MouseEventArgs e)
 {
  // 左ボタンの場合
  if ((e.Button & MouseButtons.Left) == MouseButtons.Left)
  {
   //フォームを移動する
   this.Left += e.X - mousePoint.X;
   this.Top += e.Y - mousePoint.Y;
   // カーソルをHandに変更
   this.Cursor = Cursors.Hand;
  }
  else
  {
   // カーソルを元に戻す
   this.Cursor = Cursors.Default;
  }
 }


4. クライアント領域だけにする

クライアント領域のマウス操作だけでアプリの数量やフォームの移動ができるようになったので、フォームの枠とキャプションバーを外すことにします。これは、Display フォームのプロパティで設定できます。

フォーム変更前 

フォームのキャプションバーあたりをクリックして、フォームのプロパティを表示します。

フォームのプロパティ変更前 

FormBorderStyle は、FixedToolWindow に設定しています。

これを、None に変更します。

フォームのプロパティ変更後 

すると、ラベルだけのフォームになります。

フォーム変更後 

では、[F5]を押して、デバッグモードで実行してみます。

枠無し半透明フォーム 

最前面表示、枠無しで半透明、マウス操作だけで終了、移動、最小化が可能なデジタル時計ができました。


5. 配色を変える

このままだとチョット地味なので、背景色を黄色にしてみます。

フォームのプロパティで、BackColor は、デフォルトのまま Control になっています。

背景色変更前 


これを、Control から Info に変更してみます。

背景色変更後 


フォームデザイナ上で、背景色が変更されます。

背景色変更後のフォーム 

ここで、[F5]を押して、デバッグモードで実行して動作確認します。

枠無し黄色半透明フォーム 

最前面表示、黄色半透明で枠無し、マウス操作だけで終了、移動、最小化が可能なデジタル時計ができました。


6. アセンブリ情報の更新

前作でアセンブリ情報を作成したので、今回は内容を更新、そして一部変更します。

前回と同様に、ソリューションエクスプローラで MyClock プロジェクトを右クリックして、アセンブリ情報の画面を開きます。

こんな感じに入力しました。

アセンブリ情報 


7. リリースビルド

最後に、リリースモードでビルドします。

リリースビルド 


MyClock\bin\Release\MyClock.exe がリリースビルドされた実行ファイルです。

これを MyClock Ver 1.00 とします。


邪魔にならないデジタル時計
MyClock Ver 1.00
(VS Community 2015 ソース付き)
ダウンロード


ダウンロードファイルの内容
<MyClock100>
 <MyClock>  ← ソースのあるフォルダ
 MyClock.exe  ← 実行ファイル
 ReadMe.text  ← 説明ファイル




 MyClock Ver 0.10 を作る (2/2)







応援クリックをお願いします。励みになるので...


人気ブログランキングへ


FC2ブログランキングへ



    

keywords: プログラム関数電卓、Windowsプログラミング

リンク集 | ブログ内マップ
関連記事

テーマ : プログラム関数電卓
ジャンル : コンピュータ

自作プログラムがPC保護機能に引っかかる

プログラム電卓のためのWindowsプログラミング - トップページ
e-Gadget


2017/03/05



せっかく作った Windows プログラムを実行すると、PC保護の機能に引っかかることがあります。

自分の意思で「実行する!」と設定すれば良いのですが、嫌な気分になります。

自分のPCでウィルスやワームなどのセキュリティーをキチンとやっていても関係ありません。安全だと分かっていてもお構いなしです。

例えば、以下をご覧ください。
Windows 8 / 10 上で、起動出来ないソフトがある!

この記事では Windows SmartScreen の機能をオフにするのは推奨しないと書かれていますが、私も万が一を考えてオフにしないています。

Norton Internet Security を利用していますが、これも同じように警告を出します。

これらは、ユーザーが使うソフトの情報を吸い上げて自社のデータベースを更新していて、使用数が少ないと警告が出る仕組みのようです。多数決の暴力とも言えます。

以前自作したソフトや最近作ったものを Win 8 / 8.1 / 10 で初めて実行すると、ほぼ確実に警告が出ます。一旦「実行する!」としても、起動フォルダが変われば、また警告が出ることがあります。

Windows 10 の場合は、以下のような警告が出ます。

Win10のPC保護警告1 

自作プログラムや、信用している人やサイトから入手したプログラムの場合は、左上にある 詳細情報 をクリックします。すると画面が変わって、

Win10のPC保護警告2 

[実行]ボタンが出てきました。ここで [実行] をクリックすればOKです。改めてプログラムを起動すれば動くはずです。


そのあと、セキュリティーソフトが同じことをやります。Norton Internet Security の場合は、

NortonのPC保護警告

[このプログラムを実行する] をクリックすれば、言われ無き疑いが晴れて、保護を解除できます。

 常にこのファイルを許可する

にもチェックを入れてから、[このプログラムを実行する] をクリックしましょう。










応援クリックをお願いします。励みになるので...


人気ブログランキングへ


FC2ブログランキングへ



    

keywords: プログラム関数電卓、Windowsプログラミング

リンク集 | ブログ内マップ
関連記事

テーマ : プログラム関数電卓
ジャンル : コンピュータ

プログラム電卓のためのWindowsプログラミング

プログラム電卓のためのWindowsプログラミング - トップページ
e-Gadget


2017/01/31
更新 2017/02/02


無償で入手できる開発環境 Visual Studio Community 2015 を使い始めたところです。

プログラム電卓のための便利なWindowsプログラムが無ければ自分で作ってみよう、そこでWindowsプログラミングです。



はじめに

最近は Casio Basic プログラミングばかりで、Windowsプログラミングをしなくなって10年以上たちます。以前は Quick C やVisual Studio 6 の Visual C++ やたまに Visual Basic で Windows プログラムを作っていたので、全くの初心者というわけではありません。しかし当時は Windows 95, 98, XP といった環境でしたので、Windows そのものも大きく変わっていて、新たに勉強することも結構あります。

そこで、Windows 10 の環境で、使ったことが全く無かった C# の学習や、最新の VC++ にキャッチアップしようと思い、その過程を半ば自分のために残しておこうという趣旨で、プログラム電卓のためのWindowsプログラミング のカテゴリーを始めます。

Casio Basic 使いこなしと同様に、自分で調べたこと、実際に行ったこと、ネットで入手しにくい情報などを書き留める予定です。但し、メインは Casio Basic 使いこなしのプログなので、このカテゴリは途中で立ち消えになるかも知れませんが、先ずは始めてみます (他にも記事の予定がたくさんあるのに...)。新しい言語に触れるのは楽しいですね。



当カテゴリの立ち位置

主に、C# と VC++ MFC ドキュメント/ビューアーキテクチャ の話題になると思います。

C# については、最初のうちは、初めて C# で何かアプリを作る過程で、学習したこと、問題とその解決方法などを記録に残します。従って最初のうちは、バカみたいに丁寧な記述になるかも知れませんが、私の頭に定着すれば割愛するようになると思います。




目 次

1. Visual Studio Community 2015
 1.1 Visual Studio Community 2015 のダウンロード
 1.2 Visual Studio Community 2015 って?

2. 参考になる情報元

3. C# のトピックス

 3.1 C#プログラミング TIPS
 3.2 初めて作るC#プログラム - MyClock
 3.3 追加するかも...

4. VC++ のトピックス
 4.1 ドキュメントビューアーキテクチャを使ってみる
  4.1.1 複数の拡張子を使う方法 - ファイルを開く/名前を付けて保存
  4.1.2 追加するかも...



Visual Studio Community 2015 のダウウンロード

私の場合は、以下のサイトで、

Visual Studio Download

画面の一番左の "Visual Studio Community" からダウンロードしました。

インストール環境は、Windows 10 (64bit) Home で、Windows Update で最新の状態になったものです。

実際にインストールが始まると、必要なコンポーネントのダウンロードとインストールにはとても時間がかかります。私の遅いPCでは、取り敢えずのインストールに2時間くらいかかりました。

Visual Studio を開いてみると、C# と VB での開発に必要な殆どのコンポーネントはインストール済みなのに、それ以外を使うにはさらにダウンロード&インストールに1時間程度必要だったので、上で取り敢えずと書きました。

なお、ヘルプは必要だと思ったので、テーマ別にローカルにダウンロードして使えるヘルプシステム向けに、VS2015、C#, VB、CV++ に関する文書をダウンロードしてオフラインでもヘルプが使えるようにしました。日本語と英語の両方をインストールしましたが、日本語訳の品質はWeb版と同じように、まぁアレな感じで、英語を見直すことが多いです。

DELL の Inspiron 11 3148 (CPU: i3、メモリ: 4GB、HDD: 500GB) で走らせていますので、結構動作が重いです。逆にこれで動くアプリなら他のマシンでもOKと言えます。



Visual Studio 2015 Community って?
 
ネットで探すと山ほどの記事に出会うので、敢えて何かをここで書く必要もないでしょう。
...というか、最近はネットでいくらでも情報が得られますので、便利です。但しプログラミングに関しても、ネット情報は S/N が大きいので、自分で取捨選択してゆく必要があって、それがまた勉強になったりします。

実際にインストールしてみて分かったのですが、以下の環境が使えるようになっています;
  • C#
  • Visual Basic
  • Visual F#
  • Visual C++
  • SQL Server
  • Python
  • JavaScript
  • TypeScript
てんこ盛りですね。



参考になる情報元

C#についてお世話になっているのは、
  • DOBON.NET .NET Tips : 信頼性の高いスグに使える情報があって重宝しています
  • ++C++;// 未確認飛行 C:基本の説明が分かり易いので悩んだときに役立ちます
  • MSDN .NET クラスライブラリ など:そもそもどうなってるの?をじっくり知るには良いかも...
  • その他検索で出てくるもの:S/Nが高くないので取捨選択が必要

VC++ (ドキュメント/ビュー アーキテクチャー) についてお世話になっているのは、
(特に これといったものに出会っていないが、強いて挙げるなら)





応援クリックをお願いします。励みになるので...


人気ブログランキングへ


FC2ブログランキングへ



    

keywords: プログラム関数電卓、Windowsプログラミング

リンク集 | ブログ内マップ
関連記事

テーマ : プログラム関数電卓
ジャンル : コンピュータ

アドイン Casio Basic - トップページ

C:Basic - アドイン Casio Basic
<Top Page>

内容の更新や修正を随時行います.

初版 2015/12/18
C.Basic バージョンアップ 2017/02/02


[2017/02/02] Ver 1.00 beta7 リリース。

<目 次>
 - C:Basicとは?
 - 最新バージョン
 - オーバークロック・アドイン
 - C.BasicC:Basic の潜在能力
 - C.Basicの使い方とコマンドリファレンス
 - C.Basic 英語版Webマニュアル



C:Basic とは?


C:Basic は Casio Basic の上位互換で、Casio fx-9860GII USB POWER GRAPHIC 2 (SH4A CPU model) のアドインとして開発しているものです。C:Basic は 最終的には高速インタープリタとコンパイラを提供する予定ですが、今のところインタープリタのアルファ版(テスト版) を開発中です。インタープリター版を C.Basic (ドットが1個) と呼んでいます。

CasioオリジナルのCasio Basic は限られたハードウェアの電卓で動作するプログラミング言語で、「構造化プログラミング」が可能な実用的なものです。Casio Basic は簡単に使えて、電卓のみでプログラムを作成したり編集ができ、パソコンが不要です。なお、Casio Basic以外には、パソコン上でC言語でアドインプログラムを開発して、fx-9860GII に転送して使うこともできます。

Casio Basic は楽に開発できるものの、計算量の大きな複雑な処理を行ったり、ビットマップをグラフィックスで描くのは非常に時間がかかります。このような 純正Casio Basic の弱点を補う目的で開発が始まった C.Basic (インタープリタ版) は、Casio Basicとソースレベルで互換でありながら、10~20倍のスピードがあり、今のところ C:Basic (コンパイラ版) はさらに C.Basic (インタープリタ) の10倍の程度の処理速度になりそうなことが確認できています。

この C:Basic プロジェクトを進めているのは、sentaro21 氏(本アドインの作者), Krtyski (当ブログの管理人、テスト実施、サンプルプログラム作成、ユーザーズガイドとコマンドリファレンス作成)、さらに有志のユーザーの方です。

C:Basic プロジェクト



▋ C.Basic 最新のテストバージョン(ベータ・バージョン)
注意: 純正 Casio Basic をそのまま動かす場合は問題がほとんど無いと思われますが、拡張コマンドやオリジナルコマンドについてはまだバグがある可能性大です。それでもどこかにバグが潜んでいる可能性は有り、場合によってはあなたの電卓のデータが壊れる可能性が有ります。従って試す前には、データのバックアップを取ることをお勧めします。

C.Basicの使い方とコマンドリファレンス
ダウンロードしたZIPファイルに含まれている、Manual_J.txt と Readme_j.txt を参照してください。

C.Basicの独自拡張機能とCasio Basic互換コマンド
Manual_J.txt にまとめられているので、参照してください。


 オーバークロック アドイン: Ftune2

さらなる高速動作を楽しには、オーバークロック アドイン Ftuen2 を C.Basic と一緒に使うことをお勧めします。
このプログラムの評判については、下記参照ください;
- @ Unversal Casio Forum
- @ CEMETECH
- @ TI-Planet

私は1年以上使っていますが、今のところ問題は起きていません。Ftuen2 は安全対策がよく考えられていて、おそらく電卓を壊すことは無いでしょう。但し、念のため電卓のデータバックアップは行って下さい。

Ftune2 は、Casio fx-9860GII POWER GRAPHIC 2 (SH4A model),用をダウンロードし、他の機種用をダウンロードしないでください。



C.Basic と C:Basic の潜在能力

サンプルプログラムを使って、C.BasicC:Basic の潜在能力を見てみましょう。.

 ライフゲーム (Conway's Game of Life)

C.Basic は純正 Casio Basic の上位互換であり、拡張コマンドや言語機能があります。

高速なビットマッププログラムを純正Casio Basic で作ろうと考えるのは無謀なことだと言えます。しかし C.Basic を使えば、例えばライフゲームを楽しめます。



- ダウンロード: ライフゲーム Ver 0.74

これには、C.Basic Ver 0.63 以降のバージョンが必要です。.


以下の動画では、Ftune2 を使って クロックを 236MHz にチューンしています。

- ダウンロード: Ftune2
   Casio fx-9860GII USB POWER GRAPHIC 2 (SH4 model) 用をダウンロードしてください。
.
=====

コンパイラ版の C:Basic をシミュレートするため、ライフゲーム の繰り返し処理部分を、ネイティブコードの特別なコマンド "DotLife" に置き換えて実行したのが以下の動画です。 

・ダウンロード: ライフゲーム Ver 0.84



ご覧のように非常に高速で、517世代までの時間を測ると約10倍高速化しています。将来のコンパイラ版 C:Basic では、これよりも速くなるはずです。

ライフゲームの詳しい説明


2D迷路

以下のような画面全体のグラフィックス描画は、純正Casio Basicではとても時間がかかります。これを C.Basic で走らせると極めて短時間で描画が完了します。

Maze1 

2D迷路プログラムの詳しい説明


3D迷路ゲーム

3D_Maze 

左側の迷路マップの描画は、C.Basic を使うことで極めて高速化できます。右側の3D表示はポリライン処理により純正Casio Basic でも3D描画が軽くなるよう工夫されています。このプログラムでは、C.Basic の独自拡張機能を使いながら 純正 Casio Basicでも動作可能なようになっているのが特徴です。

3D迷路ゲームの詳しい説明


アクションゲーム - DRAGON



これは、C.Basic 独自拡張機能を活用したサンプルプログラムで、高速で多彩なビットマップ処理機能をうまく活用しています。
ゲームとしても飽きないチューニングがされています。このプログラムのソースは、C.Basic 独自拡張機能の理解に役立ちます。

アクションゲーム - DRAGON の詳しい説明



C.Basic の使い方とコマンドリファレンス

  C.Basic のインストール

  C.Basicマニュアルとコマンドリファレンス - Manual_J.txt

  C.Basic の紹介と更新履歴 - Readme_J.txt







Top に戻る




応援クリックをお願いします。励みになるので...

人気ブログランキングへ


FC2ブログランキングへ







keywords: fx-9860GIICasioBasic、プログラミング入門グラフィックスプログラム関数電卓

リンク集 | ブログ内マップ



関連記事

テーマ : プログラム関数電卓
ジャンル : コンピュータ

最新記事
最新コメント
カテゴリ
C# (3)
検索フォーム
Visitors
Online Counter
現在の閲覧者数:
プロフィール

やす (Krtyski)

Author:やす (Krtyski)
since Oct 30, 2013


プログラム関数電卓は、プログラムを作り・使ってナンボ!

実際に触って気づいたこと、自作プログラム、電卓プログラミングについて書いています

おもしろい・役に立つならクリックしてください。励みになります。

人気ブログランキングへ


FC2ブログランキングへ


写真: 「4駆で泥んこ遊び@オックスフォード郊外」

リンク
月別アーカイブ
Sitemap

全ての記事を表示する

RSSリンクの表示
最新トラックバック
ブロとも申請フォーム

この人とブロともになる

QRコード
QR