idealHub
Monthly Runking Best 3
今回は、前回諸事情で載せられなかったコードを、編集したので、載せます。それだけです。
#include <iostream>
#include <string>
using namespace std;
int main(){
int num, num1, num2, amari, power, ans;
string what = "0";
string yn = "n";
amari = 0;
for (int fin = 10; fin >= 10; fin++){
cout << " 電卓" << endl;
//数字を入力。3桁制限。
for (int i = 10; i >= 10; i++) {
cout << " 数字を入力してください。" << endl;
cin >> num;
if (num >= -999 && num <= 999){
i = 0;
} else {
cout << "エラー:3桁を超えています。" << endl;
}
num1 = num;
num = 1000;
}
//演算方法を選択
cout << " 計算方法を選択してください。" << endl;
cout << " 足し算なら、add" << endl;
cout << " 引き算なら、sub" << endl;
cout << " 掛け算なら、mul" << endl;
cout << " 割り算なら、div" << endl;
cout << " 累乗なら、 pow" << endl;
cout << " を入力してください。" << endl;
//分岐計算方法を確認。
for (int i = 10; i >= 10; i++) {
cin >> what;
if (what == "0") {
cout << "未入力です。" << endl;
cout << " 入力してください。" <<endl;
} else if (what == "add") {
i = 0;
cout << " 足し算が選択されました。" << endl;
} else if (what == "sub") {
i =0;
cout << " 引き算が選択されました。" << endl;
} else if (what == "mul") {
i = 0;
cout << " 掛け算が選択されました。" << endl;
} else if (what == "div") {
i = 0;
cout << " 割り算が選択されました。" << endl;
} else if (what == "pow") {
i = 0;
cout << " 累乗が選択されました。" << endl;
cout << " 何乗しますか。" << endl;
} else {
cout << "エラー:無効な値です。" << endl;
cout << " 入力してください。" <<endl;
}
}
//数字を入力3桁制限
for (int i = 10; i >= 10; i++) {
cout << " 数字を入力してください。" << endl;
cin >> num;
if (num >= -999 && num <= 999) {
i = 0;
} else {
cout << "エラー:3桁を超えています。" << endl;
}
num2 = num;
num = 1000;
}
//実際に計算する。
if (what == "add") {
num = num1 + num2;
} else if (what == "sub") {
num = num1 - num2;
} else if (what == "mul") {
num = num1 * num2;
} else if (what == "div") {
num = num1 / num2;
amari = num1 % num2;
} else if (what == "pow") {
power = num1;
for (int i = num2; i > 0; i--) {
power = power * num1;
}
num = power;
}
//答えの3桁制限
if (num >= -999 && num <= 999) {
ans = num;
cout << " 計算結果:" << ans << "です。" << endl;
if (amari > 0) {
cout << " 余りが出ました。" << endl;
cout << " " << amari - 1 << "以上" << amari
<< "以下です。" << endl;
}
} else {
cout << "答えが3桁を超えました。" << endl;
}
//続けるかの確認。
for (int i = 10; i >= 10; i++) {
cout << " 計算を続けますか。[y/n]" << endl;
cin >> yn;
if (yn == "y") {
i = 0;
cout << " 計算を続けます。" << endl;
} else if (yn == "n") {
i = 0;
fin = 0;
cout << " 計算を終了します。" <<endl;
} else {
cout << "エラー:y か n を入力してください" << endl;
}
}
}
return 0;
}
僕の師匠に<計算機を実装せよ>との課題を頂いたので、実際に今の全力で作って見ました。
今回はそれを紹介します。
師匠の課題の詳細は、こちら。
計算機を実装せよ。
仕様は、
3桁まで扱えるようにすること。
四則演算ができること。
四則演算に加え、 +α の機能を実装すること。
この3つが仕様として出されますた。
では、それにそって、コードを組んでいく。(言いたいだけ)
まず、壁として立ちふさがったのが、3桁の数字の認識と弾き返し。
とはいったものの、そんなに難しいわけでもなく、新しい文法事項を1つ覚えれば済んだ。
if ( 条件A && 条件B ) {
文
}
そう、条件を && でつなぐことで、追加できるらしい。
&& は、条件A:TRUE かつ 条件B:TRUE のときTRUE
逆に、条件A:TRUE かつ 条件B:FELSE のときFELSEになります。
これで、
if ( num >= -999 && num <= 990 ) {
文
}
な感じで、行けました。
-999 ≦ num ≦ 999 に条件を設定し、for文に入れることで、3桁以内なら他の変数に代入、3桁を超えて居たら再入力させることで、3桁問題を解決しました。良かった。
で、プラス α の機能なんですが、今回は累乗することにしました。
a^n ( a の n 乗 ) をする。
ここでも問題が発生して、どうやって何度も同じ数を掛けるかです。for を使うってのはわかってたんだけど、 n の部分を同処理するか、ということです。
考え抜いた結果(そこまで考えてない)、
int num, num1, num2, power;
num1 = num; ( num には、何か数字が入ってるものとする。 )
num2 = num; ( num には、何か数字が入ってるものとする。 )
power = num1;
for ( int i = num2; num2 > 0; i -= 1 ) {
power *= num1;
}
こんな感じで、行きました。
これで、課題の中の2つの主要な問題点が解決されました。
それで、今回学んだのは、if for の使い方や、ここには書きませんでしたが、フローチャートを使っての情報の整理で、この2つができるようになりました。フローチャートはかならず書くべきですね。紙媒体ってのも功を奏してるかも。今回は、ここまで、。
なんか中途半端な感じがものすごくて、申し訳ない感があるけど、こんなもんでしょ。紹介であって、How to じゃないって宣言してあるしね。(言い訳)おつかれ様でした。
気が向いたら、完全なコードをのせますね。
広告をワンクリックお願いします。
今回紹介するのはスカルプトモードです。
このモードを使うと、おそらくBlenderが格段に楽しくなると思います。
スカルプトとは「彫刻する」という意味で、その名のとおり、掘り込みを入れたり、また膨らませたりと直感的な操作ができるようになります。
オブジェクトモードや編集モードと同じ場所にスカルプトモードあります。
ただ、あれ?ブラシの絵のようなものが反映されていません…
Dyntopoという項目にチェックをいれるとブラシが自ら細分化してくれるようになり細かい彫刻が可能になります。
編集モードで見るとこうなっています。正直なんかきもい感じに仕上がりました。
最後に広告をワンクリックおねがいします。
今回は、いそがしいので、やっつけ仕事的にいきます。(すいません)(誤字りに行くつもりはないけどごじったら、ごめん。)
今回は、今までの集大成。一つのアプリで2つのことを達成します。
その名も、両手にビューコントローラーです。(ちがうか。笑)
これだけ言われてもわからないという人のために、説明します。いままで、 Hello.text = "Hello" とか、 var a = 0 とか書いてきた、文字いっぱいにしたくなるようなあの画面をビューコントローラというのです。それを今回は2つへいようするので、両手にビューコントローラーというわけなんです。(よくわかんない?まぁ大丈夫、今回はむずいことしないから。)
まず、今回で一番重要なことをします。
Create a new Xcode project の次に出てくるこの画面で、 Tabbed Application を選ぶことです。
これさえできれば、この先べつに読む必要なんかありません。(嘘です。もちろん読んで)
これを押して、いつも通り進んで Main.storyboard を開くと
こんな感じになってるはず。そうしたら、それぞれに、ボタンだったり、ラベルだったり、その他もろもろを配置する。
はい。ぽんっ!(こんな感じ)
いつも通りコネクトといきたいところなんでげすが、ここで一つの注意点。
さっきも言ったように今回は2つのビューコントローラーを使っていますその為、コネクトするビューコントローラーを間違えてしまうと意図しない結果が出てしまいますので、注意しましょう。
いつも通り、アシスタントエディターからこの画面をひらき~の、ファーストなビューコントローラで有ることを確認シーの、コネクトしてください。
できたら、いつも通り、コードを書く。かけたら次のビューコントローラーに移動する。
セカンドな方へは、上のところをこのように開いて行きーの移動します。
移動できたら、次もコネクト。
はい、こんな感じ、時間なくて、凝れませんでした。申し訳ない。
でも大丈夫、次回はがんばる。笑
動作確認は、⌘ R か左上の再生ボタンからどうぞ。
最後に、広告を人ポチお願いしたいな。頼んます。
あ、こんなタイトルですけど別にBlenderが起動しなくなったわけじゃないですよ。
今回は自分の作ったオブジェクトを動かしてみました。まあ、今までよりだいぶ難しかったです。それに、現時点で自分が解説できるのは「動かせる」ことだけです。なにか制御したり、ということはまだ分かんないです。ただし、その分中々簡潔に教えられると思います。
では早速、オブジェクトの動かし方を解説していきます!
まぁ、まずは自分のオブジェクトが必要ですね。その辺はガンバってください。
次に、動かすにはアーマチュアというものが必要になります。左メニュー「作成」にあります。オブジェクトの表示が違うのは気にしないでください。
アーマチュアはオブジェクト内に入ると見えなくなってしまうので、右メニュー人型のマークから、「表示」のレントゲンにチェックを入れましょう。これでオブジェクトと重なっていても見えるようになります。
そのまま腰あたりを中心に、伸ばしていきます。(Eキーで一区切りずつ、関節のようになります)
腕などの対称なパーツは、編集モードで「オプション」→「アーマチュアオプション」の「X軸ミラー」にチェックを入れた後、Shift+Eで左右対称に伸ばせます。
ここまできたらもうポーズモードでうごかせてもいいんじゃないか、と。そうはいきません。右メニューにあるレンチのマークから「アーマチュア」をえらんで「オブジェクト」のところで「アーマチュア」を選択してください。(いや何言ってるのか分かりませんね。画像を参照して位置を確認してください。)
あと一息です。オブジェクトモードで自分のオブジェを選択した後に、Shiftを押しながらあーマチュアを右クリックして選択すると、オブジェがオレンジでアーマチュアが黄色の線で囲まれた状態になります。その状態のままCtrl+Pを押し「ペアレント対象」→「自動のウェイトで」を選択します。
これでやっと動きます。モードを「ポーズモード」に切り替え(Ctrl+Tab)、アーマチュアをどこかひとつ選んでグルングルンするだけ。
どうでしたか。あとは自分の好きなポーズをとらせて遊んでみてください。
広告をワンクリおねしゃす!!
色々なプログラマーに聞いてもやっぱり C, C++ をやっとけと言われたので、やります。これからも、たまに、 C++ をいじっていけたらなと思います。はい。
今回は、とりま、Hello World 行きましょう。
#include<iostream>
using namespace std;
int main(){
cout << "Hello World" << endl;
return 0;
}
こんな感じでしょうか。
これでできるはず。簡単でしょ。
では次、何いく?
計算しちゃう?しちゃうか。
#include<iostream>
using namespace std;
int main(){
int a, b, c;
a = 50;
b = 70;
c = a + b;
cout << "A=" << a << endl;
cout << "B=" << b << endl;
cout << "A+B=" << c << endl;
return 0;
}
こんな感じ?できてるよね?これ実行できるよね。多分。
間違えた。なんかスクショをスクショしてる。いっけね。笑
まぁ、いいさ。見えるでしょ。読めればいいでしょ。笑
今回は、こんな感じで終わりにしときますか。
眠いんでね。てか、寒い。早く、春になってくれ。
おやすみなされ、の前に、広告タップお願いします。
今回はやっと、立体の人型に挑戦してみました!とはいうものの、かなり不恰好になってしまったのですが、まあ、とりあえず見ていってください。
今回は、一から点をおいて作ったのではなく、デフォルトの立方体をいじる形で作成しました。まずは底面を選択し、Eキーを押します。そうすると、最初の点の位置は保持され面のまま、伸ばすことができます。
そして、Sキーを押すことで面を広げたり縮めたりできます。(↓下図、Sキーを押したときに出るカーソル)
次はナイフツールを使います。左側のメニューか、Kキーで選べます。
このツールは面上に点と辺を追加できるもの、と思えばいいです。
使い方としてはまず面上のどこかで左クリック、ここが最初の点となります。そのままカーソルを動かすと紫色の線が出ます。これが辺になります。そこからは、面上で左クリックしたところが点になるので、自分の任意の位置と数を定めたら、Enterで適用されます。
ちなみに適用する前に右クリで解除となります。
まあ、そうやってできたのが、これです。実はこだわらなければわりと簡単で、ほとんど伸ばす作業だけでできます。顔っぽい部分だけ妙に細かいですが、Wキーで出てくる「細分化(スムーズ)」というのを選んだだけです。
お好みで細分割曲面をかけると、表面が滑らかになります。右メニュー、六角レンチのマークから「追加」の中にあると思います。(レンチのマークが見当たらないときはメニューを左に伸ばしてみてください。
そうしてできたのがコレ!...なんかものすごく微妙なカンジです。ま、まあ、まだ始めたばっかりですし、今回はこのくらいで勘弁してください。
では、このへんで、またどうぞ。
明けましておめでとうございます。
UISlider を使ってスライダーをスリスリしてスリスリします。
前回までは、UIButton を使ってボタンを連打して回数を表示しました。スライダーをスリスリしてそのパーセンテージを表示させます。
では、参りましょう。
毎度のごとく、Xcode を開きます。
single view application で今回も作っていきます。
まず、 Label を配置。
設定は、中心寄せのフォントを 30.0 にする。
Slider を配置する。
この時、右の詳細設定欄で、 Value を 50 、 Minimum を 0 、 Maximum を 100 に設定することをお忘れなく。1
配置完了!コネクティンッグ!!笑
まず、 View << Assistant Editor << Show Assistant Editor をクリック
では、コネクト。
Label を選択して control キーを押しながらあおいラインの所にドラッグ and ドロップする。
Slider も同様に control キーを押しながらあおいラインの所にドラッグ and ドロップする。
Label の設定はそのままでおけ。
Slider の設定は、
このような感じに設定してください。
次は、コードを書いていきます。
とりあえず写してください。
説明をします。
整数用の変数を宣言。
宣言した変数に、整数にしたスライダーの値を入れる。(スライダーの値は小数の値を出してくるので、整数の形に変換して変数に代入する 。)
Label に反映させる。
この 3 つでできています。
もちろん、左上の再生ボタンから、シュミレーターを起動して動作確認ができます。スリスリしちゃってください。笑
今回はこの辺で。
次回は、なにをしましょうか。
とりあえず、広告をわんタップお願いします。
画像をミラーで反転しても、まだ
線でつながってなかったり、あるいは、点が重複していたりと、まだ処理しないといけないことがあります。
二つの点を選択(Ctrl+右クリック)してから左メニューのツール欄にある、結合を選択します。その中から、先に選んだ点の位置にあわせるのか、後にあわせるのかなどを項目から選べば、それで重なっていた点をひとつにすることができます!
ただ、たまに上の画像のように、2点しか選んでないのに点がすべて選択されてしまった!なんてときがあります(ないですか?)そういうときは、
Ctrl+右クリックのままドラッグすることで白い点線が引けます。その線で対象を囲めば範囲内の点だけが選べます。
次は線でつなげましょう。といっても例のごとく2点選択してから、あとは「辺/面作成」を選ぶだけ。それでおしまいです。ちなみに、この機能は名前が表してる通り、3点以上選んで「辺/面作成」を選択すると面ができますよ。
画像をしっかり見てくださった方はいろんな機能にショートカットキーが設定されているのに気づくと思います。いろんなサイト様では、スマートにショートカットキーで教えている場合が多いと思います。
でも設定されているキーが果てしなく多いので、覚えるのも一苦労。だったら最初のうちはメニューから選択して、そして自分でいろんなキーを試しに押して楽しみながら、なら案外すんなり覚えられるかも知れませんよ?
今日から idealHub 本格始動ということで、2017 年はゴリゴリ記事を書きまくって、キモズムな皆さまにこれからも意見交流をさせてください。
私たちは、とりあえず記事を書きまくります。
今日はボタンを押すだけでなく。
連打しに行きます!!
いつも通り、Xcode を開いて、Create a new Xcodeproject << Single View Application を開く。そうすると、こうなるはず。
開けたら、Main.storyboard に上から順に Label Button Label の順に置く。
今回は、右側の設定欄から詳細な設定もしてみました。
< 1番上の Label の設定 >
フォントの大きさを 30.0 に変更。
Alignment を中心寄せに変更。
Label の文字を表示部分に変更。
< 2番目の Button の設定 >
フォントを 30.0 に変更。
Button の文字を押すとこに変更。
< 3番目のLabel の設定 >
フォントの大きさを 25.0 に変更。
Alignment を中心寄せに変更。
Label の文字を押した回数に変更。
設定完了!!次は、Storyboard と ViewController のコネクト作業
control キーを押した状態で表示部分 << 押した回数 << 押すとこの順番に ViewControllor の Class に 向かってドラッグ and ドロップ。
でも、ボタンだけ一つ注意点があります!!
< 注意点 >
Connection を Outlet から Action に変更。
Type を UIButton に変更。
Label は初期設定で大丈夫!
こんな感じになるはず。
ここまで来たら後は、後は書き込むだけ。楽しい時間が始まります。
動作を ViewControllor に書き込む
とりあえず、丸写ししちゃって大丈夫です。
左上の再生ボタンからシュミレータを起動して連打しちゃっても大丈夫ですよ。
中身を知る。
今回は、ボタンが押されたら、毎回ラベルの文字を変えています。
その為には、
回数を数える必要があります。
今押されたのが奇数回目なのか偶数回目なのかを判断する必要があります。
< 押された回数を知りたい >
回数を記録するために、 counter という変数を宣言しました。 ( 変数名はなんでもいいです。 )
そこに、ボタンが押されるごとに1を加えていきます。
counter = counter + 1
counter は最初に 0 と宣言していたので、一回目にボタンを押すと、 +1 で counter の値は 1 になります 。それを繰り返すことで、 1 + 1 = 2 , 2 + 1 = 3 というように数を知ることができます。
そこで知った回数を、そのまま kaisuu のラベルに表示しています。
< 奇数回目なのか偶数回目なのか知りたい >
counter で数えた回数を 2 で割ることで、余りが出たら奇数、割り切れたら偶数、というように判断できます。
それを今回のプログラムでは、 if 文を使うことで判断しています。
if 文は、下のように表す。
if 条件 {
分岐1
} else {
分岐2
}
分岐を3つ以上設定する場合。
if 条件 {
分岐1
} else if 条件 {
分岐2
} else {
分岐3
}
条件の設定方法。
== 右と左が等しいとき
!= 右と左が等しくないとき
> 右が左より大きいとき
< 左が右より大きいとき
>= 右が左以上の時
<= 左が右以上の時
if 文の例
var a = 0var b = 0a = 30b = 1if a > b {
print ( "a は b より大きい" )
} else {
print ( "b は a より大きい" )
}
表示結果
a は b より大きい
このような感じで設定します。
今回はこんな感じで、また次回。
最後に広告をイチポチおねがいします。
今回は、自分の衝動に正直にボタンを押すという目的を達成します!
プログラムを組む
とりあえず、Xcodeを開く。
そうしたら、この画面まで頑張る。
(諸事情で環境はiOS10.1です。)
(プロジェクトを作り、View Controllerを開いた状態)
そうしたら、目的のボタンとフィードバックのためのLabelをView Controllerに貼り付ける。
貼り付けるための対象物は、右下角の選択欄的なところから、ドラッグ and ドロップしてこんな感じにする。
ファイル名を変更するときの用に右クリとかでこねくり回すことで、このようにテキストを変えることもできる。
で、かぎられた画面の中で効率よく仕事をするべく、無駄なUIパネルは削ぎ落とす。
紫のまるで囲まれたところにあるやーつをイジると邪魔なところを隠すことができる。
こんな感じでView Controllerだけを表示できる。そうしたら、プログラムを打つ画面を表示する。
View << Assistant Editor << Show Assistant Editor をクリックすると、、、。
このような画面になるはず。うん。この画面で、contlrolキーを押しながら、Labelをドラッグ and ドロップで水色のライン上に置く。
こんな感じになるはず。そうしたら、このような設定でconnectする。そうするとコードも自動で書かれるはず。
ボタンも同様にして、このような設定でconnectする。
ボタンをconnectすると中括弧が書かれる。
その中に、{ HyoujiBubun.text = "押しちゃった" } と書く。これだけで、完成。実に簡単。
今回のコード内容の説明をする。
まず、今回のプログラムで重要だった3つの要素は、宣言、命令(コマンド)、コマンドを書く場所。その3つ。
まず、宣言。
@IBoutlet weak var HyoujiBubun: UILabel!
無駄な部分を省きつつ訳すと、『HyoujiBubunはLabelなんじゃ!覚えとけ!』な感じでしょうか。これをすることで、次からHyoujiBubunをコマンドとして扱えるようになるわけですな。
次に、コマンド。
HyoujiBubun.text = "押しちゃった"
これは、HyoujiBubunのtextを変更(代入)するコマンドです。
『 文字が書けるもの.text = "なんちゃら。" 』で他のモノでも文字を変えれるかと思います。(当然変えれないものもあり)
最後は、コマンドを書く場所
ボタンをconnectすることで書かれたコード、
@IBAction func Osutoko( _ sender: UIButton) {
}
この中括弧内にコマンドを書くことでボタンが押された時にこうするっていう命令が可能になるわけです。素晴らしい。
今回に限らず、宣言、コマンド、コマンドを書く場所、この3つは重要です。
プログラムを実行する。
では、実行して確認してみましょう。やっと押せる。(俺のボタン魂)
実行するためのシュミレーターを起動するには、左上の再生ボタン的なところをクリックです。そうすると、できるはず。
こんな感じの窓が出てくるはず。
押すと、押すと、押すと。
笑。。。。
オホホッホホホh。今回はこんな感じでいいかな。ボタン押せて満足。なんてね。