MMD制作日記【1】
参考にしたサイト
MMDのはじめかた - VPVP wiki - アットウィキ
MMDをダウンロードする
以下のサイトからMMDをダウンロードする。
Vocaloid Promotion Video Project
myパソコンは64bitなので「1.4 MikuMikuDance(64bitOS Ver)」をダウンロードしました。
何か動かしてみる
[ファイル]-[開く]から[サンプル(きしめん).ppm]を選択
ファイルを開くとミクさんが出てきました!
再生を押すとミクさんが踊りだします。
もう一度再生を押すと、元の状態に戻ります。
映像を出力する
トップメニューにある[ファイル]-[AVIファイルに出力]を選びます。
適当なファイルの場所を選び、ファイル名を付けます。
「フレームレート」を「30」、
「録画フレーム」は「0~733」
「ビデオ圧縮コーデック」を「未圧縮」
で「OK」を選択
書き出し中は専用のウィンドウが開きます。
出力が終わると元の画面に戻ります。
GIMP2で自分が分からなかった操作
GIMP2を使っていく中で自分が検索した操作方法をまとめます。
おそらく、随時追加していきます。
文字の移動
「テキスト」ツール (Tキー)を使っても文字を入力
「移動」ツール(Mキー)にし、左クリックして、ドラック
背景が動いてしまう
shift
キーを押しながらドラック
C#プログラミングメソッドが分からない件【C#学習メモ】
メソッドやらが分からないので「C#の絵本」81ページに記載してある例文を見て何とか理解しようと頑張ってみます。
using System; class Cat { string name; string place; int age; public void setData(string n, string p, int a) { name = n; place = p; age = a; } public void print() { Console.WriteLine(place + ":" + name + " " + age + "歳"); } public void print(string p, int a) { place = p; Console.WriteLine(place + ":猫は" + a + "匹です"); } public void print(string variety) { Console.WriteLine(place + ":" +name+" "+ age + "歳"+ variety); } } class Pet { static void Main() { Cat cat1 = new Cat(); Cat cat2 = new Cat(); Cat cat3 = new Cat(); cat1.setData("ロビン", "うち", 10); cat2.setData("ちび", "となり", 14); cat1.print("雑種"); cat1.print(); cat1.print("うら",0); } }
3行目クラスCat
の定義
5行目string
型の文字列name
の宣言
6行目string
型の文字列place
の宣言
7行目int
型の整数age
の宣言
9行目setData
という名前のメソッドの定義。戻り値の型はvoid
。n
,p
というstring
型の文字列と、a
というint
型の変数が、引数*1の値を受け取りますよー。
11行目文字列name
にはn
を代入します!
12行目文字列place
にはp
を代入します!
13行目変数age
にはa
を代入します!
16行目print
という名前の文字を表示するメソッドの定義。このメソッドには引数も戻り値もないです。
17行目print
という名前の文字を表示するメソッドの定義。string
型のp
とint
型のa
という変数が、引数の値を受け取りますよー。
18行目print
という名前の文字を表示するメソッドの定義。string
型のvariety
という文字列が、引数を受け取りますよー。
31行目クラスPet
の定義。
33行目Main
という名前の静的なメソッドの定義*2。
36行目Cat
クラスのcat1
というオブジェクトを作ります。*3
37行目Cat
クラスのcat2
というオブジェクトを作ります。
38行目Cat
クラスのcat2
というオブジェクトを作ります。
40行目Cat
クラスのcat1
というオブジェクトの9行目のsetData
というフィールドに()内の引数を渡している。
41行目cat2
というオブジェクトの9行目のsetData
というフィールドに()内の引数を渡している。
43行目36行目で作ったCat
クラスのcat1
というオブジェクトのprint
というフィールドに()内の引数を渡す。対応するフィールドは25行目のpublic void print(string variety)
です。variety="雑種"
になります。
このとき、40行目のcat1
の引数がsetData
に渡されています。それから{}内の処理を行います。
44行目対応するフィールドは16行目のpublic void print()
です。
45行目対応するフィールドは20行目のpublic void print(string p, int a)
です。p="うら"
、a=0
になります。
以下は実行結果です。
ちなみに、22行目を消したら、実行結果は以下のようになりました。(エラーは出ませんでした。)
こうやって1行ずつ意味を調べていくと、
なんとなーくわかってきた気がしました。
【7】クラス【C#学習メモ】
クラスの概念
クラスはデータの処理を一つにまとめたものです。データのことをフィールド、処理のことをメソッドといいます。フィールドやメソッドのことをクラスのメンバといいます。
オブジェクト
クラス自体に値は格納できません。値を格納できる変数のようなものをオブジェクトといいます。
オブジェクトは以下のように作ります。
(クラス名) (オブジェクト名)=new (クラス名) ();
フィールド
フィールドとはクラス内の変数です。
フィールドの追加は次のように行います。
class(クラス名)
{
(型) (フィールド名) = (初期値) ;
}
異なるオブジェクトのフィールドの参照や代入は以下のように行います。
class(クラス名)
{
(オブジェクト名).(フィールド名) =(初期値) ;
(変数)=(型) (フィールド名)(初期値) ;
}
using System; class Wdata { public int month; public int day; public string sky; } class Weather { static void Main() { Wdata today = new Wdata(); today.month = 10; today.day = 9; today.sky = "晴れ"; Console.WriteLine(today.month + "月" + today.day + "日" + today.sky); } }
5~7行目でフィールドの定義(型の前にpublic
を記述する!)
14行目Wada
クラスのオブジェクトtoday
を作った。
15行目オブジェクトtoday
のフィールドmonth
に10の値を代入
16行目オブジェクトtoday
のフィールドday
に9の値を代入
17行目オブジェクトtoday
のフィールドsky
に「晴れ」を代入
以下は実行結果です。
はい、なんだかもうわからなくなってきました(汗)
メソッドの定義
メソッドとは、各オブジェクトが持っている自身に対する操作。
・・・?
処理の材料となる値を引数、結果のことを戻り値といいます。
二つの整数値の和を得るメソッド
add()
戻り値がないメソッド
disp()
引数がなく戻り値があるメソッド
half()
引数も値もないメソッド
print()
スコープ
ローカル変数
メソッドの中で宣言した変数のことをローカル変数といいます。
【6】制御文【C#学習メモ】
if文
if文とは
ifは「もし~だったら」という意味です。条件によって処理を行うときに使います。
if(条件式)
{
(処理1)
}
else
{
(処理2)
}
連続して使用するif文です。
if(条件式)
{
(処理1)
}
else if(条件式2)
{
(処理2)
}
else if(条件式3)
{
(処理3)
} else
{
(処理4)
}
例
using System; class mosi { static void Main(string[] args) { int a = 9999; Console.Write(a+"は"); if(0<=a&&a<10){ Console.WriteLine("1桁の数です"); } else if (10 <= a && a < 100) { Console.WriteLine("2桁の数です"); } else if (100 <= a && a < 1000) { Console.WriteLine("3桁の数です"); } else { Console.WriteLine("4桁以上の数です"); } } }
実行結果は以下の通りです。
for文
for文は繰り返し処理を効率よく行うための制御文です。
for((初期化の式);(条件式);(更新式))
例
using System; class mosi { static void Main(string[] args) { int a, b; for (a = 1; a <= 3; a++) { for (b = 1; b <= 3; b++) { Console.WriteLine(a+"×"+b+"="+(a*b)); } Console.WriteLine(); } } }
実行結果です。
foeach文
foreach文は配列などのデータの集まりを1回ずつ呼び出して処理します。
foreach( (整数型) (要素を受ける変数名) in (配列名) );
例
using System; class mosi { static void Main(string[] args) { string [] Days= {"Mon","Tue","Wen","Thu","Fri","Sat","Sun" }; foreach (string a in Days) Console.WriteLine(a); } }
実行結果です。
配列が終わるまで実行します。
while文
while文は条件が成り立っている間処理を繰り返します。
while(条件式)
do~while文
do~while文は条件が下にくるため必ず1回は処理が実行されます。
do
{
(処理)
}while(条件式)
例
using System; class mosi { static void Main(string[] args) { int sum=0,sum2=0, i=0,j=0; do { ++i; sum += i; } while (i < 5); Console.WriteLine("1から5までの和は"+sum+"です"); while (j < 5) { ++j; sum2 +=j; } Console.WriteLine("1から5までの和は" + sum2 + "です"); } }
実行結果です。
繰り返しの中断
break文
繰り返しの途中でbreak文が来ると一番近いブロックの終わりにジャンプします。
while(条件)
{
(処理1)
break;
(処理2)
}
continue文
繰り返しの途中でcontinue文があるとその会の処理を中断し次の回の最初から実行します。
while(条件)
{
(処理1)
continue;
(処理2)
}
例
using System; namespace renshu6 { class Program { static void Main() { int a=0,b = 0; while (a < 10) { a++; if (a % 3 == 0) { break; } Console.WriteLine(a); } Console.WriteLine(); while (b < 10) { b++; if (b % 3 == 0) { continue; } Console.WriteLine(b); } } } }
実行結果です。
break
文では3の倍数が来たら処理を中断しているのに対し、continue
文では3の倍数のみ表示されていません。
swich文
swich
文は複数のcase
という選択肢の中から条件に当てはまるものを選び、その処理を実行します。
swich(式)
{
case(値1):
(処理1)
break;
case(値2):
(処理2)
break;
case(値3):
(処理3)
break;
default:
(処理1)
break;
}
using System; namespace renshu6 { class Program { static void Main() { int a; for (a=3;a<7;a++) { Console.Write(a+"÷3="+a/3); switch (a % 3 ) { case 0: Console.WriteLine(" 余りは0です。"); break; case 1: Console.WriteLine(" 余りは1です。"); break; default: Console.WriteLine(" 余りは2です。"); break; } } } } }
実行結果です。
【5】演算子【C#学習メモ】
計算で使う演算子
数の計算で使う演算子
演算子 | 意味 |
---|---|
+ | 足す |
- | 引く |
× | 掛ける |
/ | ÷ |
% | 余り |
= | 代入 |
例
using System; class keisan { static void Main(string[] args) { Console.WriteLine("1+2=" + (1 + 2)); Console.WriteLine("3×2=" + (3 * 2)); Console.WriteLine("5÷3の余りは" + (5 % 3)); } }
実行結果は以下の通りです。
代入演算子
演算子 | 意味 |
---|---|
+= | 足して代入 |
-= | 引いて代入 |
*= | 掛けて代入 |
/= | 割って代入 |
%= | 余りを代入 |
例
using System; class keisan { static void Main(string[] args) { int a = 100; Console.WriteLine(a+"-25=" + (a-=25)); Console.WriteLine(a+"÷3=" + (a/=3)); Console.WriteLine(a+"÷5の余りは" + (5 % 3)); } }
以下は実行結果です。
インクリメント演算子とデクリメント演算子
演算子 | 名前 | 意味 |
---|---|---|
++ | インクリメント演算子 | 変数の値を1増やす |
-- | デクリメント演算子 | 変数の値を1減らす |
++a
a++
は違う値になります。
++a
はaに1を足した後代入する。
a++
は値を代入した後aに1を足す。
例
using System; class keisan { static void Main(string[] args) { int a = 100; Console.WriteLine("aの値は" + a +"です"); a++; Console.WriteLine("aの値は" + a + "です"); int b = 10; int c = 10; Console.WriteLine("bの値は" + ++b + "です"); Console.WriteLine("cの値は" + c++ + "です"); } }
以下は実行結果です。
比較演算子
比較演算子とは値を比較して、条件式を作り、結果によって処理を変えることができます。
条件が成立した場合は「真(true)」、成立しない場合を「(false)」といいます。
演算子 | 意味 |
---|---|
== | 等しい |
より小さい | |
> | より大きい |
<= | 以上 |
>= | 以下 |
!= | 等しくない |
例
using System; class hikaku { static void Main(string[] args) { int a = 10; int b = 20; Console.WriteLine("a=" + a + " b=" + b ); Console.WriteLine("a<b・・・" +(a<b)); Console.WriteLine("a==b・・・ " + (a == b)); Console.WriteLine("a!=b・・・ " + (a != b)); } }
以下は実行結果です。
倫理演算子
倫理型
bool
型は「true」または「false」の値を持つ変数の型です。
以下のように定義します。
bool (整数型) = ( (条件式) );
条件演算子
「?:」条件式の値により、2つのうちのどちらかを選択します。
(整数型) = ( 条件式 ) ? ( 条件がtrueの時 ) : ( 条件がfalseの時 );
例(今回の例がへたくそすぎて自分でも何を書いているんだかよくわからなかったです汗)
using System; class enzan { static void Main(string[] args) { int a = 10; int b = 20; Console.WriteLine("a=" + a + " b=" + b ); bool c; c = false; string seikai= "正解", huseikai = "不正解"; string d =c? seikai : huseikai; Console.WriteLine(d) ; string answer = a!=b ? seikai : huseikai; Console.WriteLine("a!=b・・・ " + answer); } }
12行目bool
型c
の定義
13行目c
にfalse
を代入
15行目string
型のd
にc
が「true」ならばseikai
、「false」ならばhuseikai
を代入(「false」のためhuseikai
が代入される)。
18行目string
型answer
にa!=bが「true」ならばseikai
、「false」ならばhuseikai
を代入。
以下が実行結果です
論理演算子
複数の条件を組み合わせてより複雑な条件を表すときに使います。
演算子 | 意味 |
---|---|
&& | かつ |
|| | または |
! | ~ではない |
例
using System; class enzan { static void Main(string[] args) { int a = 10; int b = 20; Console.WriteLine("a=" + a + " b=" + b ); bool c; Console.WriteLine((a == 10) && ( b == 10)) ; Console.WriteLine((a == 10) || (b == 10)); } }
13行目aとbのどちらともが10である。
14行目aまたはbのどちらかが10である。gt
以下が実行結果です。
【4】コレクション【C#学習メモ】
List
コレクションとは、複数のデータを扱うためのクラスの集まりです。
List<(整数型)> a =new List<整数型>();
a.Add(要素);
使用例
using System; using System.Collections.Generic; class ColorClass { static void Main(string[] args) { List<string>color = new List<string>(); color.Add("blue"); color.Add("red"); Console.WriteLine("color[0]=" + color[0]); Console.WriteLine("color[1]=" + color[1]); } }
Listを使うには2行目のusing System.Collections.Generic;
が必要になります。
8行目で作ったcolor
というリストに
9行目でblue
を追加
10行目でred
を追加
List
も配列と同じようにアクセスできます(11,12行目)
実行結果を以下に記載します。
コレクションの初期化
Addを使わずに次のように初期化することもできます。
List
要素の削除
要素の削除は次のように行います。
using System; using System.Collections.Generic; class ColorClass { static void Main(string[] args) { List<string> color = new List<string>() { "red", "blue", "green" }; color.RemoveAt(1); Console.WriteLine("color[0]=" + color[0]); Console.WriteLine("color[1]=" + color[1]); } }
9行目ではcolor[1]
を削除しています。
実行結果は以下の通りになります。
color[1]
のblue
が削除されたので、color[2]
にあったgreen
がcolor[1]
になりました。
列挙型
列挙型はenum
を用いて以下のように定義します。
enum (オブジェクト名):(整数型) {列挙子1,列挙子2,列挙子3・・・};
例です。
using System; class Enum { enum Days { Mon, Tue, Web=100, Thu, Fri, Sat=500, Sun } static void Main(string[] args) { Days a; a = Days.Sat; Console.WriteLine(Days.Tue); Console.WriteLine((int)Days.Web); Console.WriteLine((int)Days.Sun); Console.WriteLine(a); } }
5行目で列挙型を宣言しています。=
を用いて任意の整数値を与えることができます。
10,12行目(列挙型名).(列挙定数)
で識別子を参照します。
13,14行目(整数型)
を前につけて、肩を変換すると整数値を参照できます。
実行結果を以下に記載します。