言語について・・・♥
言語!
出オチ乙。
矢魔火っす。
ここでゲーム作成についての解説?す。
DirectXでのゲーム作成は、基本的にVisualC++言語によるもので行います。
その点、BorlandC++は一応使えるんですが、使いにくく、ほとんど説明されていないため、
BorlandC++を使っていた僕にとってはツライです。
しかし、DxLib(デラックスライブラリ?)はBorlandでも使いやすく、僕は好みですが、
いろいろな言語を覚えるためVisualC++にてDirectXを使っています。
Unityというゲーム開発ソフトもいいでしょう。
しかし、ここで、RPGツクールを出してくると、話は別です。
RPGツクールの「スプリクト」というものがあります。
これに使用する言語はRPGツクール特有のものなので、
これは「プログラミングやったことないしわからない・・・」
ということで終わるとつまらないです。
確かにclass文、if文などの普通のCにも出てくる言語もありますが、
どうせ始めっからやらなきゃならないので、諦めて付属リファレンスを見て覚えましょう。
出来る限りはRPGVX.chmを見て覚えましょう。
以降はプログラマーの方たちは、私以上の知識がお有りだと思います←私AVRくらい
なので、特有の言語を見て混乱されないように、見るのはおすすめしません。
RPGツクールのスクリプトは最大限活用するとかなりいいゲームが出来ます。
言語をすべて組まなくてよい分、まあまあ早くにかなりのゲームができます。
もちろん、私の作成中の3Dは無理です(´∀`*)
なので、一応解説しておきます。
覚えると気持ちいいほど面白くゲームが作れますよ。
主に主に DirectMusic SynthesizerによるMIDI演奏なので、
動作環境には注意してください。
alias def false nil return unless
and do for not self until
begin else if or super when
break elsif in redo then while
case end module rescue true yield
class ensure next retry undef
これを覚えれば十分に出来るでしょう。あとは書き方、変数名などです。
関数の定義です。これは
/*---------------------------------------------------------------------------------*/
def 関数の名前
関数の内容
end
/*---------------------------------------------------------------------------------*/
このように書きます。
私は基本的にどのような関数かを考えて関数名を付けますが、
大文字はおすすめできません。
引用ですが、
/*---------------------------------------------------------------------------------*/
def dice
return rand(6) + 1
end
p dice
/*---------------------------------------------------------------------------------*/
というような感じで書きます。
ちなみにreturnは関数の処理を終了させる命令です。
その右に書かれたのが、戻り値です。
中断する場合以外は省略できます。
ですが、これは覚えるために書いたほうがいいのでは、
と考えます。
次に条件分岐です。
下の6つの記号は絶対に覚えておきましょう。
== 等しい
!= 等しくない
< 小さい
> 大きい
<= 小さいか等しい
>= 大きいか等しい
これは確実に必要となってきます。
これによるif文です。
フツウのCは
/*---------------------------------------------------------------------------------*/
if(sw_get(SW_START)==1){
if(swoff==0){
mode = mode ^ 1;
if(mode==0){
cli();
}else{
cnt=0;
TCNT1 = INTRCOUNT;
sei();
}
swoff=1;
}
}else{
swoff=0;
}
lcd_position(2,1);
printf("%02d'" ,(int)(cnt / 6000));
printf("%02d'" ,(int)((cnt / 100)% 60))
printf("%02d\"" ,(int)(cnt % 100));
}
return 0;
}
/*---------------------------------------------------------------------------------*/
というように使います。
ですがRPGツクールVXの場合は・・・
あ、コメントはCでは//や/* */なんですが、これでは#のようです。
これはコンパイル時に影響はなく、自分のわかりやすいようにメモ書き程度に使いましょう。
/*---------------------------------------------------------------------------------*/
a = 7 # 変数 a に 7 を代入する。
if a >= 10 # もし a が 10 以上であれば、
print "big" # big と表示する。
elsif a >= 5 # それ以外で a が 5 以上であれば、
print "medium" # medium と表示する。
else # それ以外であれば、
print "small" # small と表示する。
end # 分岐終了。
/*---------------------------------------------------------------------------------*/
引用ですが、elsif endがでてきます。
これは少々厄介だと思います。
あとこのままではただ単にsmallだけになってしまいますね。
aの値はちゃんと変えれるようにしておきましょう。
あと、別にいいんですが、私はこれに不満を覚えます。
/*---------------------------------------------------------------------------------*/
if a >= 10
print "big"
elsif a <10
print "medium"
else
print "small"
end
/*---------------------------------------------------------------------------------*/
の、ほうがいいと思うんですがね・・・;
続いてループ。
whileを使ったものです。
普通のCは
/*---------------------------------------------------------------------------------*/
void lcd_put_str(char *str)
{
while(*str != 0) {
lcd_put_ch( *str );
str++;
}
}
/*---------------------------------------------------------------------------------*/
こんな感じで使いますが・・・
/*---------------------------------------------------------------------------------*/
a = 0 # 変数 a に 0 を代入する。
i = 1 # 変数 i に 1 を代入する。
while i <= 5 # 変数 i が 5 以下の間ループさせ、
a += i # 変数 a にそれぞれの i の値を加算する。
i += 1 # 変数 i の値を 1 増やす。
end # ループ終了。
p a # 計算結果を表示する。
/*---------------------------------------------------------------------------------*/
正直、こっちは表示がpだけで済むのは極楽ですね。
while直接使えるし。
次にこれ。
部のメソッド呼び出しと制御構造は演算子形式をとります
高い ::
[]
**
-(単項) +(単項) ! ~
* / %
+ -
<< >>
&
| ^
> >= < <=
<=> == === != =~ !~
&&
||
.. ...
?:(条件演算子)
=(+=, -= ... )
not
低い and or
高い、低いは演算子の優先順位で、たとえば「&&」は「||」より優先順位が高いから、以下のように解釈されちゃう。
a && b || c # => (a && b) || c
a || b && c # => a || (b && c)
気を付けたほうがイイネ。
そうそうforわすれてた。スーパー引用たいむ
例として、
/*---------------------------------------------------------------------------------*/
for i in [1, 2, 3]
print i*2, "\n"
end
/*---------------------------------------------------------------------------------*/
文法は
/*---------------------------------------------------------------------------------*/
for lhs ... in 式 [do]
式 ..
end
/*---------------------------------------------------------------------------------*/
式を評価した結果のオブジェクトの各要素に対して本体を繰り返して実行します。これは以下の式とほぼ同じです。
(式).each '{' '|' lhs..'|' 式 .. '}'
「ほぼ」というのは、do ... end または { } によるブロックは新しいローカル変数の有効範囲を導入するのに対し、for はローカル変数のスコープに影響を及ぼさない点が異なるからです。
for は、in に指定したオブジェクトの each メソッドの戻り値を返します。
break
例:
/*---------------------------------------------------------------------------------*/
i = 0
while i < 3
print i, "\n"
break
end
/*---------------------------------------------------------------------------------*/
文法:
break [式]
break はもっとも内側のループを脱出します。ループとは
while
until
for
イテレータ
のいずれかを指します。C 言語と異なり、break はループを脱出する作用だけを持ち、case を抜ける作用は持ちません。
break によりループを抜けた for やイテレータは nil を返します。ただし、引数を指定した場合はループの戻り値はその引数になります。
っとわかりやすいので引用。
これはそのままですね。
スクリプト入門読めばなんとかなるでしょう。
endは絶対に忘れないことですね。
つまりアレです。
気合です。
今回はRPGツクールに熱が入りすぎましたね。
では頑張ります、私はBorlandを。
わからなかったら、一応絶賛プログラム勉強中なので、
ほぼこの言語はわかりませんが、コメントに出していただいたら可能な範囲で答えます・・・><;
では、さようなら~(´ー`)/~~
長文失礼しました;
っと追加です。
コンパイル(プログラムに間違いが無いかどうか調べること)ソフトがなさそうです・・・;
間違えたらゲームが強制終了されるので気を付けてください;
どこが間違ってるか見直し大変なので;
ゲームになりません!
ここでコメント返信
>>桔梗さん
分かりましたか?wこの言語は私はかじってないもんでこのくらいしか解説できません><;
やまびのツクール教室、おわったよ~!
ぼくみたいな変人めざしてがんばっていってね~!
頑張ってください!楽しいですよ!
出オチ乙。
矢魔火っす。
ここでゲーム作成についての解説?す。
DirectXでのゲーム作成は、基本的にVisualC++言語によるもので行います。
その点、BorlandC++は一応使えるんですが、使いにくく、ほとんど説明されていないため、
BorlandC++を使っていた僕にとってはツライです。
しかし、DxLib(デラックスライブラリ?)はBorlandでも使いやすく、僕は好みですが、
いろいろな言語を覚えるためVisualC++にてDirectXを使っています。
Unityというゲーム開発ソフトもいいでしょう。
しかし、ここで、RPGツクールを出してくると、話は別です。
RPGツクールの「スプリクト」というものがあります。
これに使用する言語はRPGツクール特有のものなので、
これは「プログラミングやったことないしわからない・・・」
ということで終わるとつまらないです。
確かにclass文、if文などの普通のCにも出てくる言語もありますが、
どうせ始めっからやらなきゃならないので、諦めて付属リファレンスを見て覚えましょう。
出来る限りはRPGVX.chmを見て覚えましょう。
以降はプログラマーの方たちは、私以上の知識がお有りだと思います←私AVRくらい
なので、特有の言語を見て混乱されないように、見るのはおすすめしません。
RPGツクールのスクリプトは最大限活用するとかなりいいゲームが出来ます。
言語をすべて組まなくてよい分、まあまあ早くにかなりのゲームができます。
もちろん、私の作成中の3Dは無理です(´∀`*)
なので、一応解説しておきます。
覚えると気持ちいいほど面白くゲームが作れますよ。
主に主に DirectMusic SynthesizerによるMIDI演奏なので、
動作環境には注意してください。
alias def false nil return unless
and do for not self until
begin else if or super when
break elsif in redo then while
case end module rescue true yield
class ensure next retry undef
これを覚えれば十分に出来るでしょう。あとは書き方、変数名などです。
関数の定義です。これは
/*---------------------------------------------------------------------------------*/
def 関数の名前
関数の内容
end
/*---------------------------------------------------------------------------------*/
このように書きます。
私は基本的にどのような関数かを考えて関数名を付けますが、
大文字はおすすめできません。
引用ですが、
/*---------------------------------------------------------------------------------*/
def dice
return rand(6) + 1
end
p dice
/*---------------------------------------------------------------------------------*/
というような感じで書きます。
ちなみにreturnは関数の処理を終了させる命令です。
その右に書かれたのが、戻り値です。
中断する場合以外は省略できます。
ですが、これは覚えるために書いたほうがいいのでは、
と考えます。
次に条件分岐です。
下の6つの記号は絶対に覚えておきましょう。
== 等しい
!= 等しくない
< 小さい
> 大きい
<= 小さいか等しい
>= 大きいか等しい
これは確実に必要となってきます。
これによるif文です。
フツウのCは
/*---------------------------------------------------------------------------------*/
if(sw_get(SW_START)==1){
if(swoff==0){
mode = mode ^ 1;
if(mode==0){
cli();
}else{
cnt=0;
TCNT1 = INTRCOUNT;
sei();
}
swoff=1;
}
}else{
swoff=0;
}
lcd_position(2,1);
printf("%02d'" ,(int)(cnt / 6000));
printf("%02d'" ,(int)((cnt / 100)% 60))
printf("%02d\"" ,(int)(cnt % 100));
}
return 0;
}
/*---------------------------------------------------------------------------------*/
というように使います。
ですがRPGツクールVXの場合は・・・
あ、コメントはCでは//や/* */なんですが、これでは#のようです。
これはコンパイル時に影響はなく、自分のわかりやすいようにメモ書き程度に使いましょう。
/*---------------------------------------------------------------------------------*/
a = 7 # 変数 a に 7 を代入する。
if a >= 10 # もし a が 10 以上であれば、
print "big" # big と表示する。
elsif a >= 5 # それ以外で a が 5 以上であれば、
print "medium" # medium と表示する。
else # それ以外であれば、
print "small" # small と表示する。
end # 分岐終了。
/*---------------------------------------------------------------------------------*/
引用ですが、elsif endがでてきます。
これは少々厄介だと思います。
あとこのままではただ単にsmallだけになってしまいますね。
aの値はちゃんと変えれるようにしておきましょう。
あと、別にいいんですが、私はこれに不満を覚えます。
/*---------------------------------------------------------------------------------*/
if a >= 10
print "big"
elsif a <10
print "medium"
else
print "small"
end
/*---------------------------------------------------------------------------------*/
の、ほうがいいと思うんですがね・・・;
続いてループ。
whileを使ったものです。
普通のCは
/*---------------------------------------------------------------------------------*/
void lcd_put_str(char *str)
{
while(*str != 0) {
lcd_put_ch( *str );
str++;
}
}
/*---------------------------------------------------------------------------------*/
こんな感じで使いますが・・・
/*---------------------------------------------------------------------------------*/
a = 0 # 変数 a に 0 を代入する。
i = 1 # 変数 i に 1 を代入する。
while i <= 5 # 変数 i が 5 以下の間ループさせ、
a += i # 変数 a にそれぞれの i の値を加算する。
i += 1 # 変数 i の値を 1 増やす。
end # ループ終了。
p a # 計算結果を表示する。
/*---------------------------------------------------------------------------------*/
正直、こっちは表示がpだけで済むのは極楽ですね。
while直接使えるし。
次にこれ。
部のメソッド呼び出しと制御構造は演算子形式をとります
高い ::
[]
**
-(単項) +(単項) ! ~
* / %
+ -
<< >>
&
| ^
> >= < <=
<=> == === != =~ !~
&&
||
.. ...
?:(条件演算子)
=(+=, -= ... )
not
低い and or
高い、低いは演算子の優先順位で、たとえば「&&」は「||」より優先順位が高いから、以下のように解釈されちゃう。
a && b || c # => (a && b) || c
a || b && c # => a || (b && c)
気を付けたほうがイイネ。
そうそうforわすれてた。スーパー引用たいむ
例として、
/*---------------------------------------------------------------------------------*/
for i in [1, 2, 3]
print i*2, "\n"
end
/*---------------------------------------------------------------------------------*/
文法は
/*---------------------------------------------------------------------------------*/
for lhs ... in 式 [do]
式 ..
end
/*---------------------------------------------------------------------------------*/
式を評価した結果のオブジェクトの各要素に対して本体を繰り返して実行します。これは以下の式とほぼ同じです。
(式).each '{' '|' lhs..'|' 式 .. '}'
「ほぼ」というのは、do ... end または { } によるブロックは新しいローカル変数の有効範囲を導入するのに対し、for はローカル変数のスコープに影響を及ぼさない点が異なるからです。
for は、in に指定したオブジェクトの each メソッドの戻り値を返します。
break
例:
/*---------------------------------------------------------------------------------*/
i = 0
while i < 3
print i, "\n"
break
end
/*---------------------------------------------------------------------------------*/
文法:
break [式]
break はもっとも内側のループを脱出します。ループとは
while
until
for
イテレータ
のいずれかを指します。C 言語と異なり、break はループを脱出する作用だけを持ち、case を抜ける作用は持ちません。
break によりループを抜けた for やイテレータは nil を返します。ただし、引数を指定した場合はループの戻り値はその引数になります。
っとわかりやすいので引用。
これはそのままですね。
スクリプト入門読めばなんとかなるでしょう。
endは絶対に忘れないことですね。
つまりアレです。
気合です。
今回はRPGツクールに熱が入りすぎましたね。
では頑張ります、私はBorlandを。
わからなかったら、一応絶賛プログラム勉強中なので、
ほぼこの言語はわかりませんが、コメントに出していただいたら可能な範囲で答えます・・・><;
では、さようなら~(´ー`)/~~
長文失礼しました;
っと追加です。
コンパイル(プログラムに間違いが無いかどうか調べること)ソフトがなさそうです・・・;
間違えたらゲームが強制終了されるので気を付けてください;
どこが間違ってるか見直し大変なので;
ゲームになりません!
ここでコメント返信
>>桔梗さん
分かりましたか?wこの言語は私はかじってないもんでこのくらいしか解説できません><;
やまびのツクール教室、おわったよ~!
ぼくみたいな変人めざしてがんばっていってね~!
頑張ってください!楽しいですよ!