カードの組み合わせによって魔法が発動!
攻撃手段は魔法しかない。
#include <stdafx.h>
using namespace std;
void start_msg();
void setcolor(int n);
int maxdt (int a, int b);
int main()
{
int m;
start_msg();
setcolor(2);
m = maxdt(100, 200);
cout << "max=" << m << '\n';
setcolor(7);
return 0;
}
void start_msg()
{
cout << "program start\n";
}
//文字色変更関数 n=0~7:黒赤緑黄青紫水白
void setcolor(int n)
{
if (n<0 || 7<n)
return;
cout << "\33[3" << n << "m";
}
int maxdt(int a, int b)
{
if (a > b)
return a;
else
return b;
}
*****
文字色変更ができない。
多分
cout << "\33[3" << n << "m";
ここがおかしいんだと思うんだが、どう直せばいいのかわからない。
本にはこう書いてあるんだが、さっぱりだ。
ぐぐってみても、どうすればいいかなんてないみたい。
にやそー、教えてくれー。
うーん、どうも頭身がおかしかったり、胴長になってしまってたりするような。
ぶっちゃければ下手。いやぶっちゃけなくても下手だな。
見る向きによって描けたり描けなかったり、まずはどこからでも描ける様になりたい。
どこに気をつけて描けば改善するだろう。。。
胴の立体感を掴むことか。
あと、胴の反らし方、捻り方とか。
全体を捉えてから描いてみたりしないと上達しなさそうだな。
こうやって線入れすると、線が少なくなるから、ごまかしがきかないってのはよくわかった。
やり続けてみます。
明日もアップロードできるかなぁ。
今度からは、下書きの線は消さずに、線入れは違う色を使ってやってみる。
一昨日とあまり変わらないものの、
自分なりに描きやすい方法がひとつ見つかった。
全身を描くときは、顔から描くのではなく、
胴体から描くという方法だ。
胴体から描いて、そこに腕をつけ脚をつけ顔をつける。
正面か、横か、背面か、俯瞰なのか仰瞰なのか、
まず胴体を描いてからだと、他のパーツも、まだ描きやすい。
まだ雑にも全体を描けないから、雑にどんな全体でも描けるようになりたい。
余裕が出てきたら、身体のラインや手足の指の線を丁寧に描けるようになりたい。
最終的には、ある程度捨象されてはいるが、
ちゃんとしたデッサンになっているのを目指している。
あと、女性の胸を胸らしく描けないのを何とかしたい。
肩幅の広さで男女の区別を付けてるものの、もっとわかりやすくしたいしw
プログラミングで作りたいものを考えておこう。
何かしらの目的がないと、
何も作れないし、
何も学んだことにならない。
具体的なものでなくてもいいから、書いておく。
サイン波生成ソフト。
三角波生成ソフト。
矩形波生成ソフト。
のこぎり波生成ソフト。
とりあえず音を作るソフトか。簡単そうなの。難しいかもだが。
他はいまは思いつかないので、思いついたら書き足す。
iostreamについて
iostreamとは?
<iostream>ライブラリはいくつかの標準オブジェクトを自動的に定義する。
cin
標準入力
cout
標準出力
cerr
標準エラー出力
clog
バッファを使うcerr
抽出子(入出力演算子)
>>
入力演算子
例)cin >> 変数
※>>を使用するのはcinのみっぽい。他は<<でOK。
<<
出力演算子
例)cout << 変数
*****
using namespace std; について
***
namespace
プログラム要素(関数やクラスなど)を一纏めにするためのもの。
「名前空間」と訳されてる。
いまはまだよくわからんが、例
名前としてこの OKWeb /教えて! goo のカテゴリーを参考にすると、
次のようになります。
namespace education {
class economy;
void literature();
}
namespace society {
class economy;
double energy ();
}
すると、名前は上から順に、
education::economy
education::literature
society::economy
society::energy
になります。
効用としては、名前の衝突が避けられます。たとえば、
education::economy
society::economy
は全く別のものてす。
***
std
C++標準ライブラリ用の名前空間名。
名前空間を使うと、正式な名前は長くなり、
プログラムの読みやすさを損なうことがあります。
これを避けるために、using 宣言と using ディレクティブがあります。
***
using
using 宣言をすると、それ以後そのスコープでは
名前空間名を省略することができます。
例えば、using 宣言がなければ、
std::string str;
std::cout << "Hellow, world! << std::endl;
と書かなければ、標準準拠のコンパイラではエラーになりますが、
( endl を実行すると、改行してフラッシュする)
(A)using std::string
(A)using std::cout
(A)using std::endl
と宣言すると、std:: を省略して、
(B)string str;
(B)cout << "Hellow, world! << endl;
と使えるようになります。
using ディレクティブを使うと、その名前空間のプログラム要素は、
全て名前空間名を省略することができるようになります。例えば、
using namespace std;
と宣言すると、いちいち(A)を全て書かなくても(B)が書ける
(コンパイル・エラーにならない)ようになります。
using ディレクティブを使うと名前が衝突する可能性が増えるので、
新たにコーディングする場合は使うべきではないそうです。
名前空間がなかった昔の C++ のソースを標準準拠のコンパイラに
かけるときなどに、限定して使うことが推奨されています。
以上の説明は、概略のものです。
特に、名前空間名をいつ省略できるか、
省略した場合どのように解釈されるかについては注意が必要です。
*****
using namespace std;
これが名前空間のstdを使うって宣言なのはわかった。
でも、stdの名前空間内に入ってるものって何なのかがよくわからない。
まだわからなくてもいいのかな。いいということにしとこう。
間違ってるとことかあったら、教えてください。
基本データ型
関数や変数などを定義する際は、すべてデータ型を指定する必要がある。
既存の関数もすべてデータ型が指定されている。
データ型は大まかには、論理型、整数型、浮動小数点型、文字型などに分類される。
論理型
bool
二者択一の表現をする論理型。boolean type
定数として、true,falseが使える。
前者は値1(真)に相当。後者は値0(偽)に相当。
整数型/文字型
int
整数を表現する型。整数型。integer type
表現範囲はマシン環境に依存。
long int
longと略記できる。32ビット環境ではlong型変数を使う場面は多くない。
なので、そんなに重要じゃない?
char
ASCII文字ひとつを表現できる型。文字型。(整数型)
特別に文字を扱うための便利な機能を持っているわけではない。
int型と機能上は同じ性質を持つ。表現する範囲が異なっているだけ。
文字列の最後には文字コード0が置かれる。
unsigned
整数型の変数の頭に"unsigned"を付けることで、
表現範囲の符号をなくす。
つまり、負の数の表現ができなくなるが、
正の数の表現範囲が倍に増えるということ。
unsigned char/unsigned intなど
浮動小数点型
float,double
小数の表現が可能な型
floatは7桁までの小数に有効。
doubleは15桁までの小数に有効。
*****
string
文字列処理のできる型。
基本データ型ではなくユーザー定義型ということに注意のようだ。
*****
その他の型
ビギナー編には載ってないので後々理解していけばいいのかな?
これより下は後回しで!
***
列挙型
列挙型は、表意的な文字を整数値で表す特殊な型です。enum キーワードを使って宣言し、要素(定数)は{}で囲んで定義します。
書式: enum 型名 { 要素リスト } 変数1, 変数2, ... ;
enum primarycolor {red, green, blue} ; // 宣言の基本形
enum primarycolor {red, green, blue} pricolor1; // 宣言と同時に変数を宣言
enum {red, green, blue} procolor1, pricolor2; // 列挙体名を省略
上記の様にすると、最初の要素から順に、0( = red), 1( = green), 2( = blue) の整数値が当てられます。
*****
複合型
複数のデータ型を持った特殊なデータ型も利用できます。これには、構造体、共用体などがあります。構造体は struct 、共用体は union を使って宣言します。なお、これらの内容については 別章「構造体篇」を参照してください。
// 構造体
/* 複数のデータ型のデータを
一つのデータとしてまとめる */
struct Member {
int id ;
char name[64] ;
} ;
// 共用体
/* 同じメモリ領域にあるデータを
別のデータ型として認識させる */
union MojiData {
char moji[4] ;
int numeric ;
} ;
また、クラスを使うとより応用範囲が広がります。変数や定数、関数など、データ型や異なるスコープの様々なデータを一箇所に集めて処理することができます。なお、この内容については別章「クラス篇」を参照してください。
// クラス : 様々なデータや関数をひとまとめにする
class Card {
char name[10] ; // 変数
int figure ; // 変数
void setprop() ; // 関数
} ;
******
typedef
typedef キーワードを使って新しい型を定義することができます。
下記の例では、unsigned char 型の uchar 型を定義しています。
以降、uchar 型として変数や関数を定義することが可能になります。
書式: typedef データ型 型名 ;
typedef unsigned char uchar ; // uchar型の作成
構造体なども同様に新しい型として定義することができます。
struct tagPoint {
int X;
int Y;
} ;
typedef struct tagPoint Point ; // Point型の作成
VC++での話。
//1-1
//文字列を出力する
#include <stdafx.h>
using namespace std;
int main()
{
cout << "Hello, C++\n";
return 0;
}
*****
たとえばこれをデバッグしようとするときに、しておくこと。
#include <stdafx.h>の<stdafx.h>の中に、予め
#include <iostream>を入れておくこと。
ヘッダーファイルをちゃんと編集しとくこと、だな。
何か、林晴比古さんの書いたソース例そのままの写しではちゃんとコンパイルされない。
ヘッダの部分は別に手を加えないと、できないっぽい。
ちょっと、VC++の扱い方がよくわかってないっぽい。
数値定数
8進数 0(ゼロ)を先頭に付ける
011, 0345
16進数 0xまたは0Xを先頭に付ける
0xab,0X2BCD
10進数 上記以外の整数値
6800,8086
指数 eまたはEを付ける
5e2(=500),6E3(=6000)
小数値 小数点を用いる
1.34,25.89
*****
文字定数
' 'で1文字囲むと文字定数になる。
エスケープ文字
\a 警報音(alert)
\t タブコード(tab)
\n 改行(new line)
\ooo 8進数ooo
\xhh 16進数hh
\0 文字コード0
*****
文字列定数
" "で文字列を囲って、定数として表現する。
記号定数
#defineを用いて、数字を意味のある名前で扱うようにするための仕組み。
例)
#define DTSIZE 1240
#define MAXDATA 4802
#define basedt 3.45
const定数
C++では「プログラムの安全性を高める」という目的から、#define記号定数をあまり用いなくなっている。代わりにC++ではconst型変数を「名前付き定数」として用いることが多い。
例)
const int maxdata = 4802
const double basedt = 3.45
これが参考にしてる企画書。実際にゲームにもなってる。
桝田省治って人のHPに色々企画についてとか書いてあって、そっから企画書を自分なりに真似して書かせてもらってる。
こんくらい簡潔で、わかりやすい企画作れるようになろう。。。