ConsCale (コンソール型電卓)

みなさん、こんにちは、こんばんわ

今回は、C#で作成した ConsCalc を紹介します

~ はじめに ~

物理的な電卓や、Windows付属の電卓でも良いけど、画面上に式や答えを残したいとか、コンソール型のアプリを作りたいといった理由から、制作に至りました。

~ ダウンロード、インストール ~

ダウンロードは ⇨ こちら

ダウンロードしたら、適当な場所に解凍してください。(C:\Program Files\ の下など)

~ 概要 ~

≪著作権および免責事項≫
本ソフトはフリーソフトです。自由にご使用ください。
尚、著作権は作者である “XERO System” が保有しています。
このソフトウェアを使用したことによって生じたすべての障害・損害・不具合等に関しては、私と私の関係者および私の所属するいかなる団体・組織とも、一切の責任を負いません。
各自の責任においてご使用ください。

他にも、
DOBON.NET 様
teratail【テラテイル】|ITエンジニア特化型Q&Aサイト 様
Yahoo!知恵袋 – みんなの知恵共有サービス 様
Quiita 様
など、様々なサイト様の情報を参照させていただきました。

~ 起動 ~

解凍したフォルダの中に、ConsCalc.exe がありますので、それをダブルクリックしてください。

こんなウィンドウが現れます。

~ 計算 ~

このアプリのメインの機能である計算方法を解説します。

このように、コマンドラインに直接式を入力して Enter を押すと、答えが出てきます。

ただこれだけですw

四則演算のルールに従い計算しますので、加減算より乗除算が優先され、カッコ式は更に優先して計算されます。
演算のルールの詳細につきましては、専門のサイトがいくつもありますので、そちらにお任せして、当方では割愛します。

他の計算式をいくつか紹介します。

先頭を ”#(シャープ)” にして文字を入力すると、コメントになります。

カッコ混じりの計算や、関数、定数を定義しています。

~ 関数 ~

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自然対数(ネイピア数)

関数は、通常の計算に組み込んで計算させることができます。

関数は、通常の計算に組み込んで計算させることができます。

~ 便利コマンド ~

独自で「あったら便利かも?」と思うコマンドを作成していますので紹介します。

calendar(y,m,d) … 指定した年月日のカレンダーを表示
※ カッコなしの calendar だけ入力すると、現在のカレンダーを表示
days(y,m,d) … 西暦1年1月1日から指定した年月日までの通算日付を表示
date … 現在の日付を表示
date(n) … カッコ内の通算日付を年月日に換算
idate(y,m,d) … 指定の年月日の詳細情報を表示
tsec(h,m,s) … 指定の時刻までの秒数を表示
time … 現在の時刻を表示
time(n) … カッコ内の指定秒数を時刻に換算
wtime(y,m,d,h,m,s) … 指定の年月日時分秒時点の世界時刻を表示
※ カッコなしで wtime だけ入力すると、現在の時刻を表示
age(y,m,d) … 指定の年月日の年齢を表示
mul … 掛け算九九表
※ 便利かどうか、至極謎ですが…w
stopw … ストップウォッチ

Enter キーを押すと、計測が始まります。
計測中に Enter キーを押すと、Lap を取得し、次の行で引き続き計測が行われます。
計測中に Space バーを押すと、一時停止し、再度押すと再開します。
計測中に ESC キーを押すと終了します。

timer … タイマー

時間、分、秒を入力し、ビープ音の有無 (y → 鳴らす、n → 鳴らさない) を入力すると計測が始まります。
計測中に ESC キーを押すと終了します。
計測が終了すると、そのまま終了します。

ascii … アスキーコード表
biorythm … バイオリズム

生年月日を yyyy/mm/dd の形式で入力するとバイオリズムを表示。

~ メモリ機能 ~

通常計算で使用できるメモリ機能を解説します。

ConsCalc には、一時的に数値を保管(アプリを終了すると消える)できるメモリを10個搭載します。

メモリは、M0 ~ M9 までの10個があります。

例えば、M1 に数値 1234 を記憶させるには M1=1234 と入力します。

記憶させたあとに M1 を入力すると、1234 が記憶されていることを確認できます。

mem コマンドを入力すると、10個のメモリすべての記憶状況を表示できます。

M1 に 1234、M9 に1223 が記憶されています。

メモリを計算式に混ぜて計算することができます。

M2= コマンド(”=” の後ろは何も入れない)を入力すると、直前の答えの数値を記憶することができます。

M2 コマンドで、M2 に 2468 が記憶されたことを確認できました。

mem コマンドでも M2 に 2468 が記憶されたことを確認できました。

mcl コマンドで、すべてのメモリをクリアにします。

~ n進数変換 ~

n進数 (2進数、8進数、10進数、16進数) を相互変換コマンドを紹介します。

コマンドの形式は、x2y となっていて、x → 変換元の進数記号、y → 変換後の進数記号となっています。

記号は、b → 2進数、o → 8進数、d → 10進数、h → 16進数に対応しています。

例えば、16進数から10進数に変換する場合は、h2d コマンドとなります。

~ n進数演算 ~

n進数の演算コマンドを紹介します。

コマンドの形式は、xyyy となっていて、x → n進数記号、yyy → 演算記号となっています。

進数記号については、前述の通りです。

演算記号は、add → 加算、sub → 減算、mul → 乗算、div → 除算、sur → 剰余算、and → 論理積、orr → 論理和、xor → 排他的論理和に対応しています。

例えば、16進数を加算する場合は、hadd コマンドとなります。

~ 設定コマンド ~

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 … タイピング

typing コマンドを入力すると、すぐにゲームが始まります。
落ちてくるワードを、下の赤い○で囲っているラインに落ちる迄に、タイプしてください。
落ちてしまったら、ミスとなります。

タイプしたときに出てくる数字は、ワードの1文字目を打ち始めてからの経過時間です。
Score → すべての文字をタイプできれば加算されます。
Miss → タイプミスで加算されます。
Times → ワードが変わった回数です。
Level → レベルは、クリアワードが20個ごとに 1 ずつ上がります。
レベルが上がれば、クリアワードの点数も上がります。

途中でキラキラ光るスペシャルワードが落ちてきますが、入力できれば倍の点数が加算されます。

100個のワードが出たら終了です。また、途中で ESC キーを押しても終了となります。

ゲームが終了すると、成績と統計がでてきます。

どのワードが成功したのか、どこでミスしたのかを一覧で表示します。

ConsCalc をインストールしたフォルダに word.dat ファイルがありますが、タイピングのワード集です。
テキストエディタで編集できますので、ワードを追加したり、削除したりできます。
ワードの長さは20文字まで。これより長いワードは登録可能ですが、ゲーム内では弾かれます。
保存する際は、文字コードが ”UTF-8 BOMなし”、改行コードは LF で保存してください。
※ よくわからない方は、触れないのが無難です…^^;

roulette … ルーレット (ラスベガス式)

ラスベガス式の 0 と 00 があるルーレットです。

コマンド入力ラインで bet を入力すると、

bet モードとなり、左上の 00 のところでカーソルが点滅します。

矢印キーで bet したい場所にカーソル(例えば RED)を合わせ Enter キーを押してください。

bet 入力ラインで bet 額を入力してください。

bet が確定された箇所がマゼンタに変わります。

マゼンタになっている箇所で Enter キーを押すと、bet が解除されます。

更に bet したい場合は、コマンド入力ラインで bet を入力して、上の手順を繰り返してください。
bet した一覧が、画面右側に出ます。

画像の赤い○は、bet 座標名です。
bet モードでカーソルを移動させていると、ルーレット盤の右下に、現在の座標と座標名が表示されます。
この座標名が、bet 一覧で使用されます。

所持しているコイン以上の bet はできません。

bet が決定したら、コマンド入力ラインで start を入力してください。

ルーレット(画像内①)が回りだし、数字が確定されます。
当たれば、画面右側の Coin が加算され、外れれば減ります。
画面右側に、今までに止まった数字の履歴(画像内②)が出ますので、予想の材料に…w。

コマンド入力ラインで clear を入力すると、今回の bet をクリアします。

コマンド入力ラインで exit を入力すると終了します。また、Coin が 0 になると終了します。

maze … 迷路

ゲームというより、迷路生成アルゴリズムですw

maze コマンドは、今表示されているウィンドウのサイズから、最大サイズを設定します。
プレイしたいウィンドウサイズにした後に maze コマンドを入力してください。
最小サイズは 5×5。

生成する迷路のサイズを入力してください。
Size X → 横のサイズ、Size Y → 縦のサイズ。
Generate Maze Process → 迷路生成方式です。Ext → 壁伸ばし法、Dig → 穴掘り法、Bar → 棒倒し法。

一応、プレイヤー(∧, ∨, <, >)を矢印キーで動かして、ゴール(★)まで到達すればクリアです。

迷ったら、Ctrl + 1 か Ctrl + 2 でゴールまでのルートが表示されます。
ゲームオーバーとかにはならないので、表示されたルートを辿ってゴールすることもできます。
ゲームではないので…w

snake … スネークゲーム

ヘビを矢印キーで操作して、餌を食べるゲームです。

ヘビを、黄色の壁、自分のボディを噛まないように、エサ(緑の$)を食べてください。
エサを食べると、ボディが少し伸びます。
エサの中には、毒(水色の$)が混じっていますので、食べないように注意してください。
たまに、キラキラ光る餌が出ますが、それを食べると、ボディの長さが約半分になり、スコアが 50ポイント加算されます。

スコアが、500、1000、2000 となる毎にヘビのスピードが上がります。

毒のエサを食べてしまったり、壁にぶつかったりするとゲームオーバーとなります。
また、途中で ESC キーを押すと終了します。

mine … マインスイーパー

言わずとしれたマインスイーパーです。

敷き詰められたパネルを、爆弾を避けつつ消していくゲームです。

カーソルを矢印キーで移動して、Enter キーを押すと、その地点のパネルを消します。
消したパネルの周囲に、爆弾がなければ、一斉に爆弾のあるラインまでパネルが消されます。

Enter キーではなくスペースバーで、その位置のパネルをマークすることができます。
マークされているパネルは、Enter キーでは消せませんので、誤爆を防ぐことができます。
サイドスペースバーを押すと、マークを解除できます。

消したパネルの位置に爆弾があれば、ゲームオーバーとなります。

puzzle … 数字パズル

いわゆる、15パズルや8パズルとかですw
最初に、パズルのサイズを決定します。
3 ~ 10 の範囲で入力してください。
ちなみに、3 → 8パズル、4 → 15パズルとなっています。

空白のある列や行の数字の位置まで、カーソルを矢印キーで移動して Enter キーを押すと、数字が移動して、カーソルの位置のパネルは空白となります。

例えば、4 の位置にカーソルを移動して Enter キーを押すと、4 と 8 が、もともとあった空白に向けて詰められます。

左上から順に、数字を揃えればクリアとなります。

途中で ESC キーを押すと終了します。

アルゴリズムについて、ランダムの 2個所の数値の入れ替えを 100回ほど繰り返してシャッフルしていますが、結構な割合でクリア不可のパターンが出現しますので、それも踏まえ、運ゲームとしてお楽しみください ^^;

number … 数字当て

4桁 ~ 9桁の範囲の数値を当てるゲームです。
難易度を決定します。4 ~ 9 を入力すると、その桁数の数値が解答対象の範囲となります。

例えば 4桁にした場合、1,000 ~ 9,999 が対象となります。
”Smaller” と表示されたら、入力した数値が大きいので、もっと小さな数値を入力します。

”Greater” と表示されたら、入力した数値が小さいので、もっと大きな数値を入力します。

見事当てることができれば、クリアとなります。

0 を入力すると終了します。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

前の記事

JS Calendar