<?xml version="1.0" encoding="UTF-8" ?><rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="ja">
  <channel rdf:about="http://w.atwiki.jp/kuin/">
    <title>プログラミング言語KuinまとめWiki</title>
    <link>http://w.atwiki.jp/kuin/</link>
    <atom:link href="https://w.atwiki.jp/kuin/rss10.xml" rel="self" type="application/rss+xml" />
    <atom:link rel="hub" href="https://pubsubhubbub.appspot.com" />
    <description>プログラミング言語KuinまとめWiki</description>

    <dc:language>ja</dc:language>
    <dc:date>2014-01-26T00:32:34+09:00</dc:date>
    <utime>1390663954</utime>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="https://w.atwiki.jp/kuin/pages/38.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/kuin/pages/37.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/kuin/pages/36.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/kuin/pages/35.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/kuin/pages/34.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/kuin/pages/33.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/kuin/pages/32.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/kuin/pages/31.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/kuin/pages/30.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/kuin/pages/29.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <item rdf:about="https://w.atwiki.jp/kuin/pages/38.html">
    <title>定数</title>
    <link>https://w.atwiki.jp/kuin/pages/38.html</link>
    <description>
      &gt;よく使う数は定数として宣言しておくと後から見直した時に意味も通りやすく、また修正も容易です。

----
#contents(fromhere=true)
----

#co(){
*説明
ここに定数の利便性の具体例を書きたい
}

*記述方法
&gt;変数の場合におけるvarの代わりにconstを用いることで定数を宣言できます。定数を宣言するときは必ず初期値が必要です。より正確には、コンパイル時に代入値が決定している必要があります。初期値を指定しなかった場合エラーが返ります。
#highlight(linenumber){{func Main()
	const e: float :: 2.718281828459045  {定数eが定義されます}
	do Dbg@Log(e.ToStr())    {変数と同様に使えます}
	{do e :: 3    {コンパイルエラー。代入はできません}}
end func}}

*細かい注意点
&gt;Ver.1.00現在、配列の定数は宣言できません。ただし[]char型の定数は定義できます。
#co(){#以降をコメントと思ってる？}
#highlight(linenumber){{func Main()
	{const foo: []int :: #[3]int  {初期値が無いというエラーが出る}}
	{const bar: []float :: [1.0, 2.0, 3.0]float  {場合によってこれだけではエラーが出ないが、値を参照しようとするとエラー}}
	const str1: []char :: &quot;ABC&quot;  {これは大丈夫}
	const str2: []char :: [&#039;a&#039;]char {これも大丈夫}
end func}}
&gt;class内で宣言した定数を参照する場合、thisは要らないようです。これは、[[Kuin]]のconstは他言語と違い完全に静的なため。Kuinにおける「.」は動的アクセスの意味を持つ。
#co(){これ仕様書に書いてない気が}
#highlight(linenumber){{class CSample
	const foo: int :: 3
	func getfoo(): int
		return foo        </description>
    <dc:date>2014-01-26T00:32:34+09:00</dc:date>
    <utime>1390663954</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/kuin/pages/37.html">
    <title>外部ツール</title>
    <link>https://w.atwiki.jp/kuin/pages/37.html</link>
    <description>
      &gt;ここでは[[Kuin]]関連の外部ツールを紹介します。
&gt;有志の方が作成しています。あなたも何か作成したら、是非このページに記載してください。

|&#039;&#039;このページへの記入日&#039;&#039;|&#039;&#039;ツール名&#039;&#039;|&#039;&#039;ツール概要&#039;&#039;|&#039;&#039;作成者&#039;&#039;|&#039;&#039;URL&#039;&#039;|
|2013/11/06|各種エディタの設定ファイル|様々なエディタの設定ファイルが公開されています||[[http://togetter.com/li/575730]]|
|2013/11/06|kntexConv|KuinTex.exeの補助アプリ。|[[@gaogao_9&gt;https://twitter.com/gaogao_9/status/379913685872812033]]|[[http://gao.excale.net/?page=tools#kntexConv]]|
|2013/11/06|KuinObj.exe|Kuin用3Dモデルファイル knobj 作成ツール|[[@cohfin&gt;https://twitter.com/cohfin/status/387834797432655872]]|[[http://devel-pool.blogspot.jp/2013/10/kuin3d-knobj.html]]|
|2013/11/06|Kuin-web|不明|[[@reinforchu&gt;https://twitter.com/reinforchu/status/391172426635038721]]||
|2013/11/06|kn.exe|コマンドラインから操作するツール1|@tatt61880|[[http://tatt.ch/kuin/autohotkey/index.html]]|
|2013/11/06|ku.exe|コマンドラインから操作するツール2|@akk026|[[http://akk026.webcrow.jp/kuin/ku.htm]]|
|2013/11/07|cKuin.exe|コマンドラインから操作するツール3|@cohfin|[[https://twitter.com/cohfin/status/389610126367145984]]|
|2013/11/06|kc.exe|コマンドラインから操作するツール4|[[@hatena71869&gt;ht    </description>
    <dc:date>2016-10-30T22:59:20+09:00</dc:date>
    <utime>1477835960</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/kuin/pages/36.html">
    <title>Snd</title>
    <link>https://w.atwiki.jp/kuin/pages/36.html</link>
    <description>
      *標準ライブラリ - Snd
**説明
&gt;音を出すためのライブラリです。
----
#contents(fromhere=true)
----


*&amp;aname(Snd所有メソッド)所有メソッド
**Load(path: []char): @CSnd
***&amp;aname(Load説明)説明
&gt;サウンドファイルを読み込む関数です。サウンドはOGG形式(.ogg)にのみ対応しています。&amp;br() BGMを再生する場合は、この関数ではなくBGM@Play関数を用いると便利です。
***&amp;aname(Load引数)引数
-path: []char
--サウンドのファイル名(.ogg)
***&amp;aname(Load戻り値)戻り値
-@CSnd
--サウンドクラス(後述のサウンドクラスを参照してください。)
***&amp;aname(Loadサンプルコード)サンプルコード(Ver1.00)
#highlight(linenumber){{
}}

**GetMasterVolume(): float
***&amp;aname(GetMasterVolume説明)説明
&gt;現在のマスターボリュームを取得します。マスターボリュームとは、プログラム全体のボリュームのことです。
***&amp;aname(GetMasterVolume引数)引数
-なし
--ないよっ
***&amp;aname(GetMasterVolume戻り値)戻り値
-float
--マスターボリューム(0.0以上1.0以下)
***&amp;aname(GetMasterVolumeサンプルコード)サンプルコード(Ver1.00)
#highlight(linenumber){{
}}

**SetMasterVolume(volume: float)
***&amp;aname(SetMasterVolume説明)説明
&gt;マスターボリュームを設定します。
***&amp;aname(SetMasterVolume引数)引数
-volume: float
--マスターボリューム(0.0以上1.0以下)
***&amp;aname(SetMasterVolume戻り値)戻り値
-なし
--ないよっ
***&amp;aname(SetMasterVolumeサンプルコード)サンプルコード(Ve    </description>
    <dc:date>2013-10-14T10:21:46+09:00</dc:date>
    <utime>1381713706</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/kuin/pages/35.html">
    <title>SaveData</title>
    <link>https://w.atwiki.jp/kuin/pages/35.html</link>
    <description>
      *標準ライブラリ - SaveData
**説明
&gt;このライブラリを使用することにより、[[Kuin]]で作成したゲームなどにセーブ機能をつけることができます。
----
#contents(fromhere=true)
----


*&amp;aname(SaveData所有メソッド)所有メソッド
**Save(path: []char, data: []byte8)
***&amp;aname(Save説明)説明
&gt;セーブデータを保存する関数です。 セーブデータは自動的に暗号化されます。&amp;br()また、セーブデータが保存される場所は、デバッグモードではSaveフォルダ、リリースモードでは書き込みに管理者権限が不要な場所が自動的に選択されます。&amp;br()これはOSなどによって異なります。
***&amp;aname(Save引数)引数
-path: []char
--ファイル名
-data: []byte8
--書き込むデータ
***&amp;aname(Save戻り値)戻り値
-なし
--ないよっ
***&amp;aname(Saveサンプルコード)サンプルコード(Ver1.00)
#highlight(linenumber){{
func Main()
	{ここでは拡張子は.knsにしていますが、.kns以外の拡張子でも問題ないです。}
	var path : []char :: &quot;HelloWorld.kns&quot;
	var ch : []char :: &quot;Hello, world!&quot;
	var by : []byte8
	do by :: ch.ToBins()

	do SaveData@Save(path, by)
end func}}

**Load(path: []char): []byte8
***&amp;aname(Load説明)説明
&gt;暗号化されたセーブデータを読み込む関数です。
***&amp;aname(Load引数)引数
-path: []char
--ファイル名
***&amp;aname(Load戻り値)戻り値
-[]byte8
--読み込んだデータ
***&amp;aname(Loadサンプルコード)サンプルコード(Ver1.00)
#highlight(linenumber){{
{Save関数のサンプルコードを実    </description>
    <dc:date>2013-10-14T10:20:33+09:00</dc:date>
    <utime>1381713633</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/kuin/pages/34.html">
    <title>Input</title>
    <link>https://w.atwiki.jp/kuin/pages/34.html</link>
    <description>
      *標準ライブラリ - Input
**説明
&gt;[[Kuin]]でゲームパッドおよびキーボード、マウスの入力状態を取得するためのライブラリです。
----
#contents(fromhere=true)
----


*&amp;aname(Input所有メソッド)所有メソッド
**Pad(pad: int, btn: @EBtn): int
***&amp;aname(Pad説明)説明
&gt;ゲームパッドおよびキーボードからの入力状態を取得する関数です。
***&amp;aname(Pad引数)引数
-pad: int
--ゲームパッド番号(1つ目のゲームパッドならば0、最大4つまで可能)
-btn: @EBtn
--ボタンです。(ボタンについては、後述のボタンの種類を参照してください。)
***&amp;aname(Pad戻り値)戻り値
-int
--押されている長さ(フレーム単位)。 
--押されていないときは0、押された瞬間は1、以後1秒ごとに60ずつ増えます。
***&amp;aname(Padサンプルコード)サンプルコード(Ver1.00)
#highlight(linenumber){{
func Main()
	while()
		do Kuin@Act()
		{ゲームパッドのAボタンもしくはキーボードのZキー}
		if(Input@Pad(0, Input@EBtn#A) &gt; 0)
			do Draw@Rect(0.0, 0.0, 800.0, 450.0, 1.0, 0.0, 0.0, 1.0)
		end if
		{ゲームパッドの←ボタンもしくはキーボードの左キー}
		if(Input@Pad(0, Input@EBtn#Left) &gt; 0)
			do Draw@Rect(0.0, 450.0, 800.0, 450.0, 0.0, 1.0, 0.0, 1.0)
		end if
		{ゲームパッドの→ボタンもしくはキーボードの右キー}
		if(Input@Pad(0, Input@EBtn#Right) &gt; 0)
			do Draw@Rect(800.0, 450.0, 800.0, 450.0, 0.0, 0.0, 1.0, 1.0)
		end if
	end while
end func    </description>
    <dc:date>2013-10-14T10:19:50+09:00</dc:date>
    <utime>1381713590</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/kuin/pages/33.html">
    <title>繰り返し構文</title>
    <link>https://w.atwiki.jp/kuin/pages/33.html</link>
    <description>
      &gt;繰り返し構文を利用することで、退屈な毎日のルーチンワークを機械でオート制御出来るようにはなりませんが、[[Kuin]]で記述するプログラムの、似たような繰り返し記述を、たった数行で表現できるようになります。

----
#contents(fromhere=true)
----

*繰り返し構文概要
&gt;繰り返し構文とは、その名の通り指定した処理を何度も繰り返し実行させる命令のことです。&amp;br()例えば、1から5までの数字をデバッグウインドウに出力させるコードを書くとします。&amp;br()繰り返し構文を知らない人は以下のようなコードを書くでしょう。
#highlight(linenumber){{func Main()
	var i : int :: 0

	do i :: i + 1 {*1}
	do Dbg@Log(i.ToStr()) {1がデバッグウインドウに出力される} {*2}
	do i :: i + 1
	do Dbg@Log(i.ToStr()) {2がデバッグウインドウに出力される}
	do i :: i + 1
	do Dbg@Log(i.ToStr()) {3がデバッグウインドウに出力される}
	do i :: i + 1
	do Dbg@Log(i.ToStr()) {4がデバッグウインドウに出力される}
	do i :: i + 1
	do Dbg@Log(i.ToStr()) {5がデバッグウインドウに出力される}
end func}}
&gt;上記のコードを見ると、{*1}と{*2}が何度も書かれていることが分かると思います。&amp;br()このコードは1から5までを出力させるコードなのでこの行数で済んでいますが、1から1000、1から10000までを出力させるコードを書く場合はどうでしょうか。&amp;br()このコードのように{*1}と{*2}を何度も繰り返し書きますか？&amp;br()それだと非常に効率が悪いです。&amp;br()このような同じことを繰り返す部分をどうにかして短くしたい。&amp;br()そこで使うのが繰り返し構文です。&amp;br()&amp;br()Kuinにはwhile文、for文、foreach文の3つの繰り返し構文があります。&amp;br()今回はその中の1つのwhile文を使って1から5までを出力するコードを記述します。    </description>
    <dc:date>2014-05-31T01:00:22+09:00</dc:date>
    <utime>1401465622</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/kuin/pages/32.html">
    <title>Kuinの実行について</title>
    <link>https://w.atwiki.jp/kuin/pages/32.html</link>
    <description>
      「コンパイル＆実行」ボタンを押し、コンパイルに成功すると自動的に実行されます。

すでにコンパイルしてある場合は、ソースファイルのあるディレクトリにある「ソースファイル名_dbg.exe」を実行します。

&gt;また、一部のセキュリティソフトではウイルスの誤検知が発生することが確認されていますが、安全面での問題はありません。[[[Kuin]] 1.00 Readme.pdfより]

セキュリティソフトが誤検知した場合は、一時的にセキュリティソフトを無効にするなどしてから実行してください。

誤検知したソフト
-avast! antivirus(2013/9/18確認)    </description>
    <dc:date>2014-01-15T23:06:09+09:00</dc:date>
    <utime>1389794769</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/kuin/pages/31.html">
    <title>条件分岐文</title>
    <link>https://w.atwiki.jp/kuin/pages/31.html</link>
    <description>
      &gt;条件分岐文を使用することで、変数に格納されている値や関数の戻り値などに応じて実行する命令を制御することが出来るようになります。&amp;br()(一応定数も条件式に組み込めますが、それでは分岐できないのでかなり特殊な例ですね)

----
#contents(fromhere=true)
----

*条件分岐概要
&gt;例えば、ここに250gりんごが1つあるとしましょう。このりんごを家族で分けるとして、均等にn分割します。&amp;br()この時、素直に考えれば自分は「250(g) / n(人)」の量のりんごを食べることが出来ますよね。わからない人は算数からやり直せ。&amp;br()さて、今話したことをKuinで記述すると以下のようになります。
#highlight(linenumber){{func Main()
	var Apple : float :: 250.0
	var Human : int :: ○○ {○○にあなたの家族の人数を入れてください}
	
	do Dbg@Log(&quot;あなたは、りんご(&quot; ~ Apple.ToStr() ~ &quot;g)を&quot; ~ Human.ToStr() ~ &quot;人で分けました。&quot;)
	do Dbg@Log(&quot;あなたは、そのうちの1切れ(&quot; ~ (Apple / (Human$float)).ToStr() ~ &quot;g)を食べました&quot;)
end func}}
&gt;しかし、5人家族ぐらいまでならこれで良いのですが、さすがに10人家族でりんご1つを分けるのはひもじすぎます。&amp;br()そこで6人以上の家族には、見かねたくいなちゃんが回らない寿司をおごってくれるとしましょう。流石くいなちゃん！人のお金で食べるｵｽｼｨは美味い！！！&amp;br()さて、今話したことを日本語で記述すると以下のようになります(※まだ日本語なので予期したとおりには動きません)
#highlight(linenumber){{func Main()
	var Apple : float :: 250.0
	var Human : int :: ○○ {○○にあなたの家族の人数を入れてください}
	
	{もし、Humanの数が5以下だったら}
		do Dbg@Log(&quot;あなたは、りんご(&quot; ~ Apple.ToStr() ~ &quot;g)を&quot; ~ Human.T    </description>
    <dc:date>2013-09-24T17:35:59+09:00</dc:date>
    <utime>1380011759</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/kuin/pages/30.html">
    <title>Rnd</title>
    <link>https://w.atwiki.jp/kuin/pages/30.html</link>
    <description>
      *標準ライブラリ - Rnd
**説明
&gt;Kuinでは、実はLib@RndやLib@RndFで乱数を生成することが出来るのですが、このライブラリを使用すれば、乱数のインスタンスを用意したり、乱数のseedの値を指定した乱数の生成などが行えます。&amp;br()これはゲームのリプレイデータを生成する時など、常に固定の乱数列が得たい場合などに有効です。&amp;br()因みにKuinで生成することが出来る乱数は、全てMT系乱数となっています。線形合同法とは格が違うのだ(ﾄﾞﾔｧ)
----
#contents(fromhere=true)
----


*&amp;aname(Rnd所有メソッド)所有メソッド
**Make() : Rnd@CRnd
***&amp;aname(Make説明)説明
&gt;その昔MakeSeedと呼ばれていたものです。Seed値を指定して、乱数を生成するクラスを作ります。&amp;br()1.00の中でも、古い1.00はMakeSeedな仕様になっていないので、注意してください。
**&amp;aname(Make引数)引数
-seed : int
--初期化したいseed値を指定します
***&amp;aname(Make戻り値)戻り値
-Rnd@CRnd
--Rnd@CRnd型のクラスインスタンスが返ります。
--このインスタンスを利用して、様々な乱数を得ます。
--このメソッドで得た乱数のseedの値は実行ごとにオートで変わります。
***&amp;aname(Makeサンプルコード)サンプルコード(Ver1.00)
#highlight(linenumber){{
func Main()
	var rndIns0 : Rnd@CRnd :: Rnd@Make(0)   {Seed値を0として乱数クラスを生成}
	var rndIns1 : Rnd@CRnd :: Rnd@Make(917) {検証用にSeed値を917とした乱数クラスも生成}
 	
 	for i(1,10,1)
 		do Dbg@Log(&quot;実行 : &quot; ~ i.ToStr() ~ &quot;回目&quot;)
	 	do Dbg@Log(&quot;初期SEED値 :   0,乱数値 : &quot; ~ rndIns0.GetF().ToStr())
	 	do Dbg@Log(&quot;初期SEED値 : 91    </description>
    <dc:date>2013-09-23T14:36:33+09:00</dc:date>
    <utime>1379914593</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/kuin/pages/29.html">
    <title>Kuinのコンパイル方法</title>
    <link>https://w.atwiki.jp/kuin/pages/29.html</link>
    <description>
      [[Kuin]].exeを起動し、コンパイルするソースファイルをドラッグ＆ドロップします。
「コンパイル＆実行」をクリックすると、プログラムがコンパイルされて実行されます。    </description>
    <dc:date>2013-09-17T23:22:56+09:00</dc:date>
    <utime>1379427776</utime>
  </item>
  </rdf:RDF>
