Takunojiのプログラミング・プレイグラウンド(遊び場)

Javaプログラミングを基本にして、ゲーム作成に必要なことの調査結果、やったら面白そうなことなどを記載します。プログラミングのススメ的なことも記載します。プログラミングで楽しく遊ぶために色々と記載して行きます。

Windows Cygwin インストール

Qtをインストールしたものの、コンパイラの設定が必要になり
コンパイラをいろいろと探したが、結局gcc++がよいであろうとなりました。

Windowsgcc++などを使用するには「Cygwin」を使用するみたいだ。
※インストールガイドはこちら

f:id:Takunoji:20170312105453p:plain

ちょいと小さいですが、32ビット、64ビットそれぞれのインストーラがあるようです。
さっそく実行。

f:id:Takunoji:20170312105846p:plain

f:id:Takunoji:20170312105912p:plain

f:id:Takunoji:20170312105928p:plain

間をちょいと割愛しますが、「Select Connection Type」ってのがありました。

f:id:Takunoji:20170312110146p:plain

IEのプロキシを使用しますか?ってことですが、プロキシサーバーなんぞ使っていませんので。。。一番上を選択
f:id:Takunoji:20170312110442p:plain
接続先を聞いてきますが、これも一番上(調べるのがおっくうになりました(笑)
あとはインストール処理が走ります。(セレクトボックス部分でFullを選択)

f:id:Takunoji:20170312110923p:plain

すべて、デフォルトで。。。内容などを理解してから細かいことをやります。。。

f:id:Takunoji:20170312111043p:plain

あとは、そのまま次へを押下。。。でインストール完了

そしてパスを追加

f:id:Takunoji:20170312114558p:plain

f:id:Takunoji:20170312114610p:plain

編集ボタンを押下して「C:\cygwin64\bin」(C直下にインストールした場合)を入力します。
最後にコマンドの実行確認
「ls -l」を実行します。

f:id:Takunoji:20170312115352p:plain

Cygwinインストール完了でございます。。。と思いきや。。。

初めのインストールディレクトリ(フォルダ)に各種コマンド(アプリ)があります。

f:id:Takunoji:20170312134640p:plain

ここのファイルを「Cygwinのコンソール」f:id:Takunoji:20170312134928p:plainを起動して
「/usr/local/contrib/」ディレクトリを切って

libgcc1-5.4.0-1.tar.xzを解凍して、、、

f:id:Takunoji:20170312135315p:plain

それでもできない・・・なんでぢゃ~。。。
インストールするものを選択する画面で、gcc++などを選択してやればOKみたいだ
。。。またインストールに時間がかかる

インストールできました。gccコマンドの確認完了!! 1日使ってしまった。。。

f:id:Takunoji:20170312200438p:plain

結局、インストールするGCCを選択してやらないとだめだった・・・
「Default」の状態だとインストールされないみたいだ

 

Qt Creator プロジェクトの初期設定

前回は、プロジェクトを作成しましたがビルドエラーで中断。。。
改めて、セットアップを行いたいと思います。

ダウンロードしたインストーラを起動
初期画面→Next

f:id:Takunoji:20170314214914p:plain

ユーザー登録はあと → Next

f:id:Takunoji:20170314215000p:plain

取り合えずNext

f:id:Takunoji:20170314215027p:plain
インストールはとりあえずC直下 → Next

f:id:Takunoji:20170314215222p:plain

ここで、気をつけないと...(ここでミスったと思われる...)
f:id:Takunoji:20170314215422p:plain
すべてチェックを入れてNext
ここも要チェックやーー!Next
※LPGL→大雑把に公開すれば使ってよい契約ライセンス

f:id:Takunoji:20170314215616p:plain

フォルダー名を作成する見たい Next

f:id:Takunoji:20170314220030p:plain

インストーーーる!!!!

f:id:Takunoji:20170314220128p:plain

再インストール完了
でも、結局変化なし。。。

f:id:Takunoji:20170314224352p:plain

めげずに、Kitを追加して、コンパイラを設定

f:id:Takunoji:20170314224653p:plain

一歩前進!

f:id:Takunoji:20170314224851p:plain

今度は「Makeがみつからない」です。。。

Makeを調べるかな?

 

Qtクリエイターの使い方 作成

前回は、Qtプロジェクトの内容を眺めました
今回は実際に作成に入ろうと思います。Qt5.8を使用しています。

プロジェクトの作成から見直します。※筆者はコンパイルエラーでやり直しました。

f:id:Takunoji:20170311092823p:plain

「新しいプロジェクト」しプロジェクトのタイプ?を選択します。

f:id:Takunoji:20170311093231p:plain

クラス情報を入力します。基底クラスにはQMainWindowを選択しています。
※そのほかにもあります「QWidget, QDialog
QMainWindowは大雑把に以下のような使い方ができるようです。

f:id:Takunoji:20170311093842p:plain

JavaFxにも似たようなものがあります。

docs.oracle.com
引き続き....クラス名に「HanyoGamenAp」を入力し「次へ」~
画面が開いた状態から「ビルド」をかけます。※起動確認というやつです。
やっぱり出ました。ビルドエラー

f:id:Takunoji:20170311094349p:plain

この設定をしていないようなのでこれを直します。
青い文字の通り問題ペインを開きます

f:id:Takunoji:20170311095346p:plain

ここからは、ちょいと長くなりそうなので次回!
Qt初期設定をやっていきます。※下記サイトを参考にします。

Configuring Qt Creator | Qt Creator Manual



 

C++ 標準ライブラリ コンソール出力 Stringクラス1

標準ライブラリの使い方〜コンソール出力と文字列操作1〜

f:id:Takunoji:20170310214224p:plain

(1) std::printfは改行がつかないコンソール出力、std::putsも同様
※ただし、関数などをかましてやるとエラーになった...原因はわかっていません。。。

(2)  Stringクラスの使用、Javaと同じ様に「replace()」を使ってみる
→ replaceの引数が違う、C++ドキュメントを参照する。

なんか、C++の基本的な部分に触れた様な気がする

目標達成アプリ スケジュールの仕方

これは、目標達成アプリ(アナログ版)の説明です。
継続する事で効果が出るものに関するスケジュールの方法です。

あくまで、例なので自分に合ったやり方が良いと思います。

 

①「継続する項目のスケジュール」
1日の生活リズムを見直して行動するタイミングを見つけます。
夕食前に筋トレ⇒夕食、風呂⇒パソコン作業…と行動パターンを作ります

3日実際に試してみてうまく行かない所を直す。⇒3日試して反省してまた3日試して…とPDCAみたいにやります。

日記など記録を付けてやると良い部分と悪い部分を客観的に見直す事が可能になります。

兎にも角にも、継続する為に楽しめる事がキーポイントになります。

②「一歩ずつ進めるもののスケジュール」

とりあえずで、手順ややる順序を決めます。

実際にやってみて良い部分と悪い部分をみて、やり方を改良、カスタマイズしてより良い方法へアップデートして行きます。

これも、日記などで記録を付けてやるとカスタマイズがやりやすいと思います。

 

①と②を同時に進めるには、1週間とか適当な期間を設けて、その期間で継続するのが良いのではないでしょうか。

<例>

①:筋トレ、ウォーキング

②:読書、勉強

とある場合、筋トレと勉強、読書とウォーキングのセットを1日おきにやるなど…

 

人それぞれにベストなやり方があると思います。

Qtデザイナーの使い方

前回に引き続き、Qtでの実装(正確にはソースを見るだけ...)をやります。

まずは、QtCreatorを立ち上げてください(※インストール方法はこちら)

f:id:Takunoji:20170309200630p:plain
上のような画面が表示されます。
少し見ずらいですが、C++のお約束で、「ヘッダファイル」「ソースファイル」と別れています。
フォームはVB.Netと同じ画面(UIフォーム)です。

f:id:Takunoji:20170309201813p:plain

そして、ヘッダファイル

f:id:Takunoji:20170309201631p:plain

ソースファイル

f:id:Takunoji:20170309201650p:plain

起動するためのメインメソッド

f:id:Takunoji:20170309201712p:plain
※クラス名のリンクにはQtのドキュメントページへのリンクがあります
 が、、、全部英語です。。。日本語がほしいですが、いつものことなので(笑)

「ヘッダファイル」
名前空間の「Ui」に「MainWindowクラスを定義」
QMainWindowクラスを継承している「MainWindowクラス」の内容を定義しています。

コンストラクタの定義部分にある「explicit」に関しては
こちらのサイトを参考に勉強さしてもらいました。
→管理者様へ「勉強になりました。」

そして、プライベートで保持しているのが自分自身(MainWindow)

「ソースファイル」
コンストラクタで、引数にあるQwidgetのポインタより自分自身のインスタンスを作成
setupUi()で画面を作成しています。→一番上のフォームで作成した画面が作成される

まとめると、
1.フォームで画面のデザインを作成して
2.MainWindowで画面作成(デザインで表示)のほかデータ取得などの処理を実装

3.コンパイルして起動ファイルを作成して実行

そんな感じで画面の作成をしていきます。
コンパイル後の実行ファイルはクロスプラットフォームに対応しているようです。
(Windowsコンパイル(ビルド)すればWindowsで起動できるしLinuxなら....)

大雑把に作成手順でした。
次は、フォームの作成に着手します。

目標達成アプリ ガイド

目標達成アプリ(アナログ版)のガイドです。

メインページ

https://zenryokuservice.github.io/GoalAchievement/

手順1

「大目標〜実現項目までを入力する」

これの手順、考え方をご説明申し上げたいと思います。

 

「大目標」

キホン的にはなんでも良い、が、単純な事や簡単に出来る事には余り意味が無いと思います。

継続して初めて効果が出る様な事や達成までに道のりが長いものに効果を発揮する想定です。
以下の例には目標達成アプリ作成時の目標を設定した時の場合も記載してます。


 <大目標の例>

目標達成アプリを作る、10キロ痩せるetc…

 

 「準目標」

大目標の達成の為に必要な事を3つ挙げます。 


<準目標の例>

「目標達成アプリ」{
汎用画面APを作る、

目標達成までの道のりをまとめる(ロードマップ作成)ツールを作る、

自分のやった事でどれだけ目標に近づいたか分かる(進捗管理)ツールを作る

}
「10キロ痩せる」 {
運動する、食事を調整する、新習慣を付ける

}
その他…

目標の為に必要な事柄、作り上げるもの

習慣や記録など…

 

「実現項目」

上にあるそれぞれの準目標を達成する為に必要な「やるべき事」を3つずつ挙げます


<実現項目の例>

「汎用画面AP:c++ 、Qt、UMLの勉強」
「目標達成までの道のり…:実際にアナログでやってみる、ロードマップ作成ツール作成、情報整理ツール作成」
進捗管理ツール:日記を書く為のツール、ブログなどへの連携、進捗メーターなど描画技術」

「運動をする:食前に腕立て伏せ、腹筋を10回やる、ウォーキングetc」
「食事を調整する:油分のない食事(食事制限)、和食中心にする、朝のパン食をやめる」
「新習慣をつける:日記を付ける、一日5分の座禅をする、一日のスケジュールを見直す」

 

Gitにまとめてみました。

https://zenryokuservice.github.io/GoalAchievement/

C++ 環境変数の名前を取得する

早速実装に入ります。
今回実装するのは、「環境変数の名前を取得する」処理です。
"Human.h"は使用していません。。。失礼
extern char** environ; →「extern」はファイルを超えて使用できるという意味らしい

 結論的に char** environ;は環境変数の名前と値を保持しているであろうと思う。

※確定まで行きませんでした。。。
<実装>

f:id:Takunoji:20170305203322p:plain
<出力結果>

f:id:Takunoji:20170305204039p:plain

上記の"="より左が環境変数の名前、右が値になります。
でも、他にも定義している"JAVA_HOME", "DERBY_HOME"が出力されないのはなんでだろう?

環境変数に設定していませんでした。。。

余談ですが。。。

c++はゲーム〜スマホアプリ、OSまで、殆どのアプリを作成する事が出来ます。Javaも追いつけ追い越せと頑張っています。

手近な所では以下の様な物もあるので是非一度やってみてはどうでしょうか?

PGボックス〜ゲームとプロジェクトとプログラミング基礎〜


とりあえずは、ここまでということで。。。

目標達成アプリ(アナログ版)

表題の様なアプリを作ろうといています。

以下に手順を示します。

図の上から順に大目標~実現項目まで四角の中を埋めて

概要ロードマップと詳細ロードマップに従いやり続けるだけです。

続けるのが大変ですが(笑)

【手順】
1.各項目をリストアップ:大目標~実現項目を下図のように書き出す

2.概要ロードマップ:各実現項目を実行する順番に並べる(準備、成果物、人脈も)

3.詳細ロードマップ:実現項目の実行順序をロードマップにする

4.進捗日記  ※達成感が感じられればなんでも良い

 【図にするとこんな感じ】目標達成アプリ ガイドを作りました。

f:id:Takunoji:20170307220653p:plain

 上の図、黄色部分が概要ロードマップになります。
概要ロードマップの各実行項目の実行順を『詳細ロードマップ』と呼ぶことにします。

詳細ロードマップの書き方

1.準備する為にやる事を書き出します

2.人脈を広げる、作る為にやる事を書き出します(不要であれば何も書きません)

3.概要ロードマップで記載した成果物を作る手順を書き出します

※補足

ロードマップを進む時の行動サイクルを作るとやりやすい

<例>

前調査⇒設計⇒テストコード⇒ブログにアップ⇒実装⇒設計確認⇒前調査…


進捗に関しては、日記形式で以下のように記載する。
・「今日やった事」 → 現状に対する考え(現状の良い所と悪い所)
・「次回やること」 → 今後に対する考え(今後に対してどの様に行動するか?)
・「ロードマップのどこまで進んでいるか?」

週に一度、やった事(日記参照)を省みてブラッシュアップ(出来れば…)次の週に臨む…

 

ここら辺の細かい部分は人工知能に頼っても良いのでは?と思いました。

 

<実行項目の仕分>

毎日続けるものと一歩ずつ進んで行くものに仕分ます。

そしてスケジューリングします。

 

未確定事項の決定次第、内容を更新していきます。