ConsCale (コンソール型電卓)
みなさん、こんにちは、こんばんわ
今回は、C#で作成した ConsCalc を紹介します
~ はじめに ~
物理的な電卓や、Windows付属の電卓でも良いけど、画面上に式や答えを残したいとか、コンソール型のアプリを作りたいといった理由から、制作に至りました。
~ ダウンロード、インストール ~
ダウンロードは ⇨ こちら
ダウンロードしたら、適当な場所に解凍してください。(C:\Program Files\ の下など)
~ 概要 ~
尚、著作権は作者である “XERO System” が保有しています。
このソフトウェアを使用したことによって生じたすべての障害・損害・不具合等に関しては、私と私の関係者および私の所属するいかなる団体・組織とも、一切の責任を負いません。
各自の責任においてご使用ください。
- ConsCalc は、C# で作成しています。
- .NET Framework 4.5 にて動作
- カレンダー機能は、カレンダー計算クラスを自作。
※ このクラスで使用している祝日テーブルをこちらで説明しています。 - 計算式解析(Evaluate, TextParser)は
A C# Expression Evaluator 様
を参照させていただきました。 - マインスイーパー、スネークゲームは、
C++ → 手を動かしてさくさく理解する C/C++ コンソールアプリ入門 様
を参照させていただきました。
マインスイーパーは、座標入力方式から、カーソル移動方式に改造しました。
スネークゲームは、C++で作成されていますが、C#で書き直し、毒エサなどの要素を追加しました。 - 迷路アルゴリズムは
C# → Algoful – アルゴリズム初心者向けの基礎と入門(C#, Pythonとか) 様
を参照させていただきました。
迷路アルゴリズムに、ルート探索アルゴリズムを追加しました。 - ルート探索アルゴリズムは、
迷路探索プログラムのアルゴリズム – プログラミング交差点 様
を参照させていただきました。 - 数字パズルは
C# → ポンクソフト 様
を参照させていただきました。
GUI で作成されていますが、CUI に改造しました。
他にも、
DOBON.NET 様
teratail【テラテイル】|ITエンジニア特化型Q&Aサイト 様
Yahoo!知恵袋 – みんなの知恵共有サービス 様
Quiita 様
など、様々なサイト様の情報を参照させていただきました。
~ 起動 ~
解凍したフォルダの中に、ConsCalc.exe がありますので、それをダブルクリックしてください。
こんなウィンドウが現れます。
~ 計算 ~
このアプリのメインの機能である計算方法を解説します。
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-10-300x97.png)
このように、コマンドラインに直接式を入力して Enter を押すと、答えが出てきます。
ただこれだけですw
四則演算のルールに従い計算しますので、加減算より乗除算が優先され、カッコ式は更に優先して計算されます。
演算のルールの詳細につきましては、専門のサイトがいくつもありますので、そちらにお任せして、当方では割愛します。
他の計算式をいくつか紹介します。
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-28-300x202.png)
先頭を ”#(シャープ)” にして文字を入力すると、コメントになります。
カッコ混じりの計算や、関数、定数を定義しています。
~ 関数 ~
ConsCalc に搭載している関数一覧です。
abs(n) | 絶対値 |
log(n1,n2) | 対数 |
root(n) | 平方根 |
rad(deg) | 度 → ラジアン変換 |
deg(rad) | ラジアン → 度変換 |
sin(rad), cos(rad), tan(rad) | 三角関数(ラジアン) |
dsin(deg), dcos(deg), dtan(deg) | 三角関数(度) |
!n | 階乗(n → 0 ~ 27 の整数) |
pi | 円周率 |
e | 自然対数(ネイピア数) |
関数は、通常の計算に組み込んで計算させることができます。
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-19.png)
関数は、通常の計算に組み込んで計算させることができます。
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-19.png)
~ 便利コマンド ~
独自で「あったら便利かも?」と思うコマンドを作成していますので紹介します。
calendar(y,m,d) … 指定した年月日のカレンダーを表示
※ カッコなしの calendar だけ入力すると、現在のカレンダーを表示
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-14-300x168.png)
days(y,m,d) … 西暦1年1月1日から指定した年月日までの通算日付を表示
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-17.png)
date … 現在の日付を表示
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-18.png)
date(n) … カッコ内の通算日付を年月日に換算
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-16.png)
idate(y,m,d) … 指定の年月日の詳細情報を表示
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-20-300x167.png)
tsec(h,m,s) … 指定の時刻までの秒数を表示
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-21.png)
time … 現在の時刻を表示
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-27.png)
time(n) … カッコ内の指定秒数を時刻に換算
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-22.png)
wtime(y,m,d,h,m,s) … 指定の年月日時分秒時点の世界時刻を表示
※ カッコなしで wtime だけ入力すると、現在の時刻を表示
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-29-300x182.png)
age(y,m,d) … 指定の年月日の年齢を表示
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-30.png)
mul … 掛け算九九表
※ 便利かどうか、至極謎ですが…w
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-39-244x300.png)
stopw … ストップウォッチ
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-40-300x111.png)
Enter キーを押すと、計測が始まります。
計測中に Enter キーを押すと、Lap を取得し、次の行で引き続き計測が行われます。
計測中に Space バーを押すと、一時停止し、再度押すと再開します。
計測中に ESC キーを押すと終了します。
timer … タイマー
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-41-300x158.png)
時間、分、秒を入力し、ビープ音の有無 (y → 鳴らす、n → 鳴らさない) を入力すると計測が始まります。
計測中に ESC キーを押すと終了します。
計測が終了すると、そのまま終了します。
ascii … アスキーコード表
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-42-300x188.png)
biorythm … バイオリズム
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-43-300x188.png)
生年月日を yyyy/mm/dd の形式で入力するとバイオリズムを表示。
~ メモリ機能 ~
通常計算で使用できるメモリ機能を解説します。
ConsCalc には、一時的に数値を保管(アプリを終了すると消える)できるメモリを10個搭載します。
メモリは、M0 ~ M9 までの10個があります。
例えば、M1 に数値 1234 を記憶させるには M1=1234 と入力します。
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-31.png)
記憶させたあとに M1 を入力すると、1234 が記憶されていることを確認できます。
mem コマンドを入力すると、10個のメモリすべての記憶状況を表示できます。
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-32.png)
M1 に 1234、M9 に1223 が記憶されています。
メモリを計算式に混ぜて計算することができます。
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-33.png)
M2= コマンド(”=” の後ろは何も入れない)を入力すると、直前の答えの数値を記憶することができます。
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-34.png)
M2 コマンドで、M2 に 2468 が記憶されたことを確認できました。
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-35.png)
mem コマンドでも M2 に 2468 が記憶されたことを確認できました。
mcl コマンドで、すべてのメモリをクリアにします。
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-36.png)
~ n進数変換 ~
n進数 (2進数、8進数、10進数、16進数) を相互変換コマンドを紹介します。
コマンドの形式は、x2y となっていて、x → 変換元の進数記号、y → 変換後の進数記号となっています。
記号は、b → 2進数、o → 8進数、d → 10進数、h → 16進数に対応しています。
例えば、16進数から10進数に変換する場合は、h2d コマンドとなります。
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-37.png)
~ n進数演算 ~
n進数の演算コマンドを紹介します。
コマンドの形式は、xyyy となっていて、x → n進数記号、yyy → 演算記号となっています。
進数記号については、前述の通りです。
演算記号は、add → 加算、sub → 減算、mul → 乗算、div → 除算、sur → 剰余算、and → 論理積、orr → 論理和、xor → 排他的論理和に対応しています。
例えば、16進数を加算する場合は、hadd コマンドとなります。
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-44.png)
~ 設定コマンド ~
ConsCalc の表示設定コマンドの紹介です。
digit(n) | 小数点の表示桁数 (n → 0 ~ 9 or 99) ※ n → 小数点以下の表示桁 (99 → 制限なし) |
tax(n) | 税金設定 (10% → 初期値) ※ ショートカットを作成し、”リンク先” の ConsCalc.exe の後ろに ”tax=n” を入力すると、税金の初期値を変更できます。 ![]() |
c | 直前の答えの数値をクリップボードにコピー |
dtax | 計算時に、増税値、減税値を表示 (トグル式で true/false) |
dexp | 計算時に、式を表示 (トグル式で true/false) |
~ ミニゲーム ~
ミニゲームをいくつか搭載していますので紹介します。
typing … タイピング
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-45-300x241.png)
typing コマンドを入力すると、すぐにゲームが始まります。
落ちてくるワードを、下の赤い○で囲っているラインに落ちる迄に、タイプしてください。
落ちてしまったら、ミスとなります。
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-47-300x184.png)
タイプしたときに出てくる数字は、ワードの1文字目を打ち始めてからの経過時間です。
Score → すべての文字をタイプできれば加算されます。
Miss → タイプミスで加算されます。
Times → ワードが変わった回数です。
Level → レベルは、クリアワードが20個ごとに 1 ずつ上がります。
レベルが上がれば、クリアワードの点数も上がります。
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-48.png)
途中でキラキラ光るスペシャルワードが落ちてきますが、入力できれば倍の点数が加算されます。
100個のワードが出たら終了です。また、途中で ESC キーを押しても終了となります。
ゲームが終了すると、成績と統計がでてきます。
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-49-300x124.png)
どのワードが成功したのか、どこでミスしたのかを一覧で表示します。
ConsCalc をインストールしたフォルダに word.dat ファイルがありますが、タイピングのワード集です。
テキストエディタで編集できますので、ワードを追加したり、削除したりできます。
ワードの長さは20文字まで。これより長いワードは登録可能ですが、ゲーム内では弾かれます。
保存する際は、文字コードが ”UTF-8 BOMなし”、改行コードは LF で保存してください。
※ よくわからない方は、触れないのが無難です…^^;
roulette … ルーレット (ラスベガス式)
ラスベガス式の 0 と 00 があるルーレットです。
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-58-300x188.png)
コマンド入力ラインで bet を入力すると、
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-60.png)
bet モードとなり、左上の 00 のところでカーソルが点滅します。
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-59.png)
矢印キーで bet したい場所にカーソル(例えば RED)を合わせ Enter キーを押してください。
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-61.png)
bet 入力ラインで bet 額を入力してください。
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-62.png)
bet が確定された箇所がマゼンタに変わります。
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-65.png)
マゼンタになっている箇所で Enter キーを押すと、bet が解除されます。
更に bet したい場合は、コマンド入力ラインで bet を入力して、上の手順を繰り返してください。
bet した一覧が、画面右側に出ます。
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-68.png)
画像の赤い○は、bet 座標名です。
bet モードでカーソルを移動させていると、ルーレット盤の右下に、現在の座標と座標名が表示されます。
この座標名が、bet 一覧で使用されます。
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-70.png)
所持しているコイン以上の bet はできません。
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-67.png)
bet が決定したら、コマンド入力ラインで start を入力してください。
![](https://xero-system.com/hp/wp-content/uploads/2021/04/スクリーンショット-2021-04-13-184520.png)
ルーレット(画像内①)が回りだし、数字が確定されます。
当たれば、画面右側の Coin が加算され、外れれば減ります。
画面右側に、今までに止まった数字の履歴(画像内②)が出ますので、予想の材料に…w。
![](https://xero-system.com/hp/wp-content/uploads/2021/04/スクリーンショット-2021-04-13-184520-1-181x300.png)
コマンド入力ラインで clear を入力すると、今回の bet をクリアします。
![](https://xero-system.com/hp/wp-content/uploads/2021/04/スクリーンショット-2021-04-13-184520-2.png)
コマンド入力ラインで exit を入力すると終了します。また、Coin が 0 になると終了します。
![](https://xero-system.com/hp/wp-content/uploads/2021/04/スクリーンショット-2021-04-13-184520-3.png)
maze … 迷路
ゲームというより、迷路生成アルゴリズムですw
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-55-300x78.png)
maze コマンドは、今表示されているウィンドウのサイズから、最大サイズを設定します。
プレイしたいウィンドウサイズにした後に maze コマンドを入力してください。
最小サイズは 5×5。
生成する迷路のサイズを入力してください。
Size X → 横のサイズ、Size Y → 縦のサイズ。
Generate Maze Process → 迷路生成方式です。Ext → 壁伸ばし法、Dig → 穴掘り法、Bar → 棒倒し法。
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-56-300x188.png)
一応、プレイヤー(∧, ∨, <, >)を矢印キーで動かして、ゴール(★)まで到達すればクリアです。
迷ったら、Ctrl + 1 か Ctrl + 2 でゴールまでのルートが表示されます。
ゲームオーバーとかにはならないので、表示されたルートを辿ってゴールすることもできます。
ゲームではないので…w
snake … スネークゲーム
ヘビを矢印キーで操作して、餌を食べるゲームです。
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-50-300x188.png)
ヘビを、黄色の壁、自分のボディを噛まないように、エサ(緑の$)を食べてください。
エサを食べると、ボディが少し伸びます。
エサの中には、毒(水色の$)が混じっていますので、食べないように注意してください。
たまに、キラキラ光る餌が出ますが、それを食べると、ボディの長さが約半分になり、スコアが 50ポイント加算されます。
スコアが、500、1000、2000 となる毎にヘビのスピードが上がります。
毒のエサを食べてしまったり、壁にぶつかったりするとゲームオーバーとなります。
また、途中で ESC キーを押すと終了します。
mine … マインスイーパー
言わずとしれたマインスイーパーです。
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-52-300x188.png)
敷き詰められたパネルを、爆弾を避けつつ消していくゲームです。
カーソルを矢印キーで移動して、Enter キーを押すと、その地点のパネルを消します。
消したパネルの周囲に、爆弾がなければ、一斉に爆弾のあるラインまでパネルが消されます。
Enter キーではなくスペースバーで、その位置のパネルをマークすることができます。
マークされているパネルは、Enter キーでは消せませんので、誤爆を防ぐことができます。
サイドスペースバーを押すと、マークを解除できます。
消したパネルの位置に爆弾があれば、ゲームオーバーとなります。
puzzle … 数字パズル
いわゆる、15パズルや8パズルとかですw
最初に、パズルのサイズを決定します。
3 ~ 10 の範囲で入力してください。
ちなみに、3 → 8パズル、4 → 15パズルとなっています。
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-12.png)
空白のある列や行の数字の位置まで、カーソルを矢印キーで移動して Enter キーを押すと、数字が移動して、カーソルの位置のパネルは空白となります。
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-25-300x83.png)
例えば、4 の位置にカーソルを移動して Enter キーを押すと、4 と 8 が、もともとあった空白に向けて詰められます。
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-53.png)
左上から順に、数字を揃えればクリアとなります。
途中で ESC キーを押すと終了します。
アルゴリズムについて、ランダムの 2個所の数値の入れ替えを 100回ほど繰り返してシャッフルしていますが、結構な割合でクリア不可のパターンが出現しますので、それも踏まえ、運ゲームとしてお楽しみください ^^;
number … 数字当て
4桁 ~ 9桁の範囲の数値を当てるゲームです。
難易度を決定します。4 ~ 9 を入力すると、その桁数の数値が解答対象の範囲となります。
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-57.png)
例えば 4桁にした場合、1,000 ~ 9,999 が対象となります。
”Smaller” と表示されたら、入力した数値が大きいので、もっと小さな数値を入力します。
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-64.png)
”Greater” と表示されたら、入力した数値が小さいので、もっと大きな数値を入力します。
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-69.png)
見事当てることができれば、クリアとなります。
![](https://xero-system.com/hp/wp-content/uploads/2021/04/image-71.png)
0 を入力すると終了します。