<?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/takeeasy/">
    <title>ゆっくりでもできる プログラミング講座</title>
    <link>http://w.atwiki.jp/takeeasy/</link>
    <atom:link href="https://w.atwiki.jp/takeeasy/rss10.xml" rel="self" type="application/rss+xml" />
    <atom:link rel="hub" href="https://pubsubhubbub.appspot.com" />
    <description>ゆっくりでもできる プログラミング講座</description>

    <dc:language>ja</dc:language>
    <dc:date>2011-06-28T13:24:30+09:00</dc:date>
    <utime>1309235070</utime>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="https://w.atwiki.jp/takeeasy/pages/23.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/takeeasy/pages/22.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/takeeasy/pages/21.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/takeeasy/pages/20.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/takeeasy/pages/19.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/takeeasy/pages/18.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/takeeasy/pages/17.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/takeeasy/pages/16.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/takeeasy/pages/15.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/takeeasy/pages/14.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <item rdf:about="https://w.atwiki.jp/takeeasy/pages/23.html">
    <title>ゆっくりでもできる 関数</title>
    <link>https://w.atwiki.jp/takeeasy/pages/23.html</link>
    <description>
      &#039;&#039; 移動方向
Const MOVE_RIGHT = &quot;右&quot;
Const MOVE_LEFT  = &quot;左&quot;
Const MOVE_UP    = &quot;上&quot;
Const MOVE_DOWN  = &quot;下&quot;

BorderWidth = 1
XPointMax = 500 - BorderWidth
YPointMax = 500 - BorderWidth
XPointMin = 0
YPointMin = 0

&#039;&#039;------------------------------------------------
&#039;&#039;Moveイベント
&#039;&#039;------------------------------------------------
Function Move(Target, Direction, Distance)

Dim Result
Set TargetDom = Document.GetElementById(Target)

Select Case Direction
Case MOVE_RIGHT
	Result = AddPoint(TargetDom, Distance, 0)
Case MOVE_LEFT
	Result = AddPoint(TargetDom, -Distance, 0)
Case MOVE_UP
	Result = AddPoint(TargetDom, 0, -Distance)
Case MOVE_DOWN
	Result = AddPoint(TargetDom, 0, Distance)
Case Else
	MsgBox(&quot;Directionが不正です。&quot;)
End Select

Move = 0
End Function

&#039;&#039;------------------------------------------------
&#039;&#039;座標移動
&#039;&#039;------------------------------------------------
Function AddPoint(TargetDom, AddXPoint, AddYPoint)

If (TargetDom.hspace + AddXPoint) &gt; (XPointMax -    </description>
    <dc:date>2011-06-28T13:24:30+09:00</dc:date>
    <utime>1309235070</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/takeeasy/pages/22.html">
    <title>ゆっくりでもできる ファイル入出力</title>
    <link>https://w.atwiki.jp/takeeasy/pages/22.html</link>
    <description>
      -概要
テキストファイルの読み込み・書き込みを行います。(入出力)

-ファイル入出力
ファイル操作の流れは、
ファイルを開く-内容を読み込む(書き込む)-ファイルを閉じる
という流れになります。

以下は、ファイルの入出力を実装したコード例です。

File.vbs
 &#039; パス名は自分の環境に合わせます
 Const FILE_DIRPATH = &quot;C:\Documents and Settings\WHITE\デスクトップ\VBScript\
 
 Function ReadFile(FilePath)
 
 Set FSObject = CreateObject(&quot;Scripting.FileSystemObject&quot;)
 Set ReadFileObject = FSObject.OpenTextFile(FILE_DIRPATH &amp; FilePath, 1)
 ReadFile = ReadFileObject.ReadAll
 ReadFileObject.Close
 
 End Function
 
 
 Sub WriteFile(FilePath)
 
 Set FSObject = CreateObject(&quot;Scripting.FileSystemObject&quot;)
 Set WriteFileObject = FSObject.OpenTextFile(FILE_DIRPATH &amp; FilePath, 2, True)
 WriteFileObject.Write(&quot;test&quot;)
 WriteFileObject.Close
 
 End Sub


まず、テキストファイルを格納しているフォルダのパスを設定します。
パスとはファイルのありかを示しており、
&quot;C:\Documents and Settings\WHITE\デスクトップ\VBScript\
は、Cドライブの下の、Documents and Settingsの下の、…、VBScriptフォルダの下
という意味になります。

Functionは関数を表します。
関数とは、あらかじめ定められた計算式に基づいて、計算結果を返してくれる機構です。
計算結果は関数名ReadFileと同じ名前を持つ変数Read    </description>
    <dc:date>2011-06-27T14:33:13+09:00</dc:date>
    <utime>1309152793</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/takeeasy/pages/21.html">
    <title>ゆっくりでもできる スレッド</title>
    <link>https://w.atwiki.jp/takeeasy/pages/21.html</link>
    <description>
      -概要
スレッドを生成し、アニメーションを作成します。

-スレッド
スレッドとは、独立して実行されるプログラムです。
通常のプログラムは一つの流れ(メインのスレッド)で処理されますが、
スレッドを新たに生成することにより、並行してプログラムを実行することが可能です。
これをマルチスレッドとも呼びます。

以下は、タイマーを利用したスレッドの作成例です。


Thread.vbs
 Sub Window_OnLoad
 
 RightMove_OnClick()
 OnLoadTimer = window.SetTimeout(&quot;Window_OnLoad()&quot;, 10)
 
 End Sub


Window_OnLoadは、ウィンドウ(この場合はIEブラウザ)が読み込まれた時点で、
発生するイベントです。
(Windowはもともと存在しているオブジェクトなので、
改めてhtmlに宣言する必要はありません)

SetTimeOutは指定されたミリ秒後に、任意の処理を行う関数です。
今回は10ミリ秒(1秒に100回)Window_OnLoadを呼び出します。
10ミリ秒後に呼び出した後、また、10ミリ秒後に呼び出されることになるので、
Window_OnLoadは無限に呼び出されます。

ここでポイントなのは、最初に10ミリ秒後に呼び出す命令を出した後、
サブルーチンが終了していることです。
これにより、メインのスレッドへコントロールが変えることになり、
以降の処理は、Window_OnLoad内で独立して実行されます。(スレッド化)

変数OnLoadTimerには、作成したタイマーのIDが代入されますが、
今回は扱わないので省略します。

#comment    </description>
    <dc:date>2011-06-22T16:22:22+09:00</dc:date>
    <utime>1308727342</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/takeeasy/pages/20.html">
    <title>ゆっくりでもできる 定数</title>
    <link>https://w.atwiki.jp/takeeasy/pages/20.html</link>
    <description>
      -概要
仮想キーコードを定義した、定数を作成します。


-定数
定数は値が変化しない領域です。
宣言時に値を代入したあとは、プログラム中で別の値を代入することはできません。

定数を宣言するときは、
Const修飾子を使います。(Constは Constant:定数 の略)
例: Const THREE_SEVEN = 777, Const DirPath = &quot;C:/File/Test/&quot;

以下は実際に定数を宣言した例です。


KeyEvent.vbs
	&#039;仮想キーコード
	Const VK_RIGHT = 39
	Const VK_LEFT  = 37
	Const VK_UP    = 38
	Const VK_DOWN  = 40
  
	Sub Body_OnKeyDown
		Select Case Window.Event.KeyCode
		Case VK_RIGHT
			RightMove_OnClick()
		Case VK_LEFT
			LeftMove_OnClick()
		Case VK_UP
			UPMove_OnClick()
		Case VK_DOWN
			DownMove_OnClick()
		Case Else
			MsgBox(Window.Event.KeyCode)
		End Select
	End Sub


今回はOnClickではなく、OnKeyDownイベントをトリガーにしています。
これは、キーボードのキーが押されたときに発生するイベントです。

Window.Eventはイベントハンドラ中で使用できるイベントオブジェクトです。
この場合は、OnKeyDown時に関わる様々な情報を保持しており、
Window.Event.KeyCodeでキーボードから押されたキー情報を取得しています

キー情報は仮想キーと呼ばれる、数値情報で表されます。
例えば、(→)が押された場合は39という数値情報が格納されています。

なお、今回は仮想キーを定数で定義しましたが、
仮想キーの定数がデフォルトで宣言されている言語もあるので、
事前に調査する必要があります。(よくつかわれる言語では宣言してあるものの方が多    </description>
    <dc:date>2011-06-21T09:43:46+09:00</dc:date>
    <utime>1308617026</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/takeeasy/pages/19.html">
    <title>ゆっくりでもできる 演算子</title>
    <link>https://w.atwiki.jp/takeeasy/pages/19.html</link>
    <description>
      -概要
演算子を使って足し算と引き算を行います。

-演算子
演算子はいくつかの記号で構成され、
計算や論理的な記述を行うときに用いられます。
例：+,-,*,/,=,&lt;,&amp;&amp;,||...etc

以下は(+)を使って足し算、
(-)を使って引き算を行う例です。


Move.vbs
	Sub RightMove_OnClick
	X_POINT = Document.GetElementById(&quot;ゆっくり_png&quot;).hspace
	Document.GetElementById(&quot;ゆっくり_png&quot;).hspace = X_POINT + 100
	End Sub
 
	Sub LeftMove_OnClick
	X_POINT = Document.GetElementById(&quot;ゆっくり_png&quot;).hspace
	Document.GetElementById(&quot;ゆっくり_png&quot;).hspace = X_POINT - 100
	End Sub
 
	Sub UpMove_OnClick
	Y_POINT = Document.GetElementById(&quot;ゆっくり_png&quot;).vspace
	Document.GetElementById(&quot;ゆっくり_png&quot;).vspace = Y_POINT - 100
	End Sub
 
	Sub DownMove_OnClick
	Y_POINT = Document.GetElementById(&quot;ゆっくり_png&quot;).vspace
	Document.GetElementById(&quot;ゆっくり_png&quot;).vspace = Y_POINT + 100
	End Sub


DOMを使ってhspace属性とvspace属性にアクセスしています。
hspace:横の空白の長さ
vspace:縦の空白の長さ


Animation.html
 &lt;script type=&quot;text/vbscript&quot; src=&quot;Move.vbs&quot;&gt;&lt;/script&gt; 
 
 &lt;input type=&quot;button&quot; value=&quot;Right&quot; name=&quot;RightMove&quot;&gt;
 &lt;input type=&quot;button&quot; value=&quot;Lef    </description>
    <dc:date>2011-06-21T09:45:15+09:00</dc:date>
    <utime>1308617115</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/takeeasy/pages/18.html">
    <title>0_はじめに</title>
    <link>https://w.atwiki.jp/takeeasy/pages/18.html</link>
    <description>
      プログラミングと聞いて何を連想しますか？
ゲーム？難しい？オタクっぽい？
印象は人それぞれだと思います。

私はプログラミングと聞いて魔法を連想します。

魔法のように何か不思議な言葉を唱えて、
何もないところから現象を引き出すイメージです。

魔法の言葉はプログラミング言語であり、
魔法使いの杖はテキストエディタです。
無限に思える知識の塊、賢者の石はネットであり、
望むならすべての人に門を開くでしょう。なんてね。

プログラミングの世界はとても広大で、
私にはどこまで続いているか見当もつきませんが、
しばしの間、一緒にこの世界を冒険してみませんか？    </description>
    <dc:date>2011-06-16T19:59:20+09:00</dc:date>
    <utime>1308221960</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/takeeasy/pages/17.html">
    <title>ゆっくりでもできる SELCT-CASE文</title>
    <link>https://w.atwiki.jp/takeeasy/pages/17.html</link>
    <description>
      -概要
SELECT-CASE文を使った、複数条件分岐を行います。


-SELECT-CASE文
通常の条件分岐はほとんどの場合If文で行いますが、
以下のように、ある一つの値によって複数の分岐が発生する場合は、
SELECT-CASE文を使ったほうがスマートです。

Select Case 値
Case 値の条件
処理１
Case 値の条件2
処理2
…
Case 値の条件9
処理9
Case　ELSE
処理ERR
End Select

以下は、実際にSELECT-CASE文を使った例です。


Input.vbs
 Sub Input_OnClick 
 
 Dim Text
 Text = Document.GetElementById(&quot;test&quot;).value
 
 Select Case Text
 Case &quot;Good Morning&quot;
 	Text = &quot;It&#039;s 7 O&#039;Clock&quot;
 Case &quot;Good Afternoon&quot;
 	Text = &quot;It&#039;s 14 O&#039;Clock&quot;
 Case &quot;Good Evening&quot;
 	Text = &quot;It&#039;s 21 O&#039;Clock&quot;
 Case Else
 	Text = &quot;zzz…&quot;
 End Select
 
 MsgBox(Text) 
 
 End Sub 


変数Textの値で条件分岐し、処理を行います。
想定しない値はElseで処理され、
この場合だと、変数Textに&quot;zzz…&quot;が代入されます。


-おまけ
DOMを利用して、テキストボックスへの出力を行います。
まずは、出力用のテキストボックスを作成します。


Message.html
 &lt;script type=&quot;text/vbscript&quot; src=&quot;Message.vbs&quot;&gt;&lt;/script&gt; 
 &lt;script type=&quot;text/vbscript&quot; src=&quot;GameMessage.vbs&quot;&gt;&lt;/script&gt; 
 &lt;script type=&quot;text/vbscript&quot; src=&quot;input.vbs&quot;&gt;&lt;/script&gt; 
 
 &lt;img src=&quot;test.png&quot; width=&quot;300&quot; hei    </description>
    <dc:date>2011-06-16T15:14:29+09:00</dc:date>
    <utime>1308204869</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/takeeasy/pages/16.html">
    <title>ゆっくりでもできる 入力処理</title>
    <link>https://w.atwiki.jp/takeeasy/pages/16.html</link>
    <description>
      -概要
外部から入力された値を処理します。


-テキストボックス
入力インターフェースとしてテキストボックスを使用します。


Message.html
 &lt;script type=&quot;text/vbscript&quot; src=&quot;Message.vbs&quot;&gt;&lt;/script&gt; 
 &lt;script type=&quot;text/vbscript&quot; src=&quot;input.vbs&quot;&gt;&lt;/script&gt; 
 
 &lt;img src=&quot;test.png&quot; width=&quot;300&quot; height=&quot;300&quot;&gt; 
 &lt;input type=&quot;button&quot; value=&quot;button1&quot; name=&quot;Message&quot;&gt;&lt;/br&gt; 
 
 入力&lt;/br&gt; 
 &lt;input type=&quot;text&quot; id =&quot;InputText&quot; value=&quot;&quot; name=&quot;InputText&quot;&gt; 
 &lt;input type=&quot;button&quot; value=&quot;入力&quot; name=&quot;Input&quot;&gt;&lt;/br&gt; 
 
 
&lt;br&gt;タグは改行を表します。(br=Breakの略) 
input要素のtype属性に&quot;text&quot;を指定します。
id属性は、要素を一意に示すIDです。
要素にアクセスしたいときに分かりやすい名前を付けてください。


-ドム
HTMLの要素にアクセスするときは、DOMを使います。
DOMはDocument Object Model の略で、
id属性やname,tag属性等から要素にアクセスして、様々な操作を行うことができます。

今回はID属性を指定して、テキストボックスの要素にアクセスし、
入力されている値(value)を取得します。


Input.vbs
 Sub Input_OnClick
 
 Dim Text 
 Text = Document.GetElementById(&quot;InputTetx&quot;).value
 MsgBox(Text) 
 
 End Sub

変数TextにDOMで取得した値を代入し、メッセージ出力します。
GetElementById(&quot;任意のID属性値&quot;)で、IDを指定して任意の要素にアクセスできます。
同様に、GetElementsByNameやGetElementsByT    </description>
    <dc:date>2011-06-16T15:18:59+09:00</dc:date>
    <utime>1308205139</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/takeeasy/pages/15.html">
    <title>ゆっくりでもできる 外部参照</title>
    <link>https://w.atwiki.jp/takeeasy/pages/15.html</link>
    <description>
      -概要
vbsファイルを外部ファイルから参照する。
クリックイベントを受け取り、外部ファイルの処理を実行する


-外部参照
外部参照とは、別のファイルに記述されたプログラムを読み取り、
利用するための技術です。

VBScriptには、デフォルトで外部ファイルを参照する機能はありません。
(自分で実装することはできますが、ここでは省略します。)
HTMLを利用してvbsファイルを外部参照してみます。(Message.htmlを参照)

HTMLは最も身近なコンピューター言語のひとつで、
例えばこのサイトもHTMLで構成されています。
(「右クリックコンテキストメニュー」-「ソースの表示」を選択すると分かります)


Message.html
 &lt;script type=&quot;text/vbscript&quot; src=&quot;Message.vbs&quot;&gt;&lt;/script&gt;
 &lt;script type=&quot;text/vbscript&quot; src=&quot;GameMessage.vbs&quot;&gt;&lt;/script&gt; 


HTML等のマークアップ言語の特徴として、「タグ」という概念があります。
タグは&lt;&gt;で囲まれ、様々な機能を持っています。

今回は、&lt;script&gt;タグを利用して、HTML内でスクリプト言語を使用します。
script要素のtype属性にVBScriptを指定し、
src属性に外部参照するファイル名を指定します。(srcはSourceの略です。)


-イベントハンドラ
外部参照だけでは、VBSciptのコードを読み取っているだけなので、
ボタンがクリックされるイベントをトリガーに、
VBScriptのコードを実行します。(Message.html-2を参照)


Message.html-2
 &lt;script type=&quot;text/vbscript&quot; src=&quot;Message.vbs&quot;&gt;&lt;/script&gt; 
 &lt;script type=&quot;text/vbscript&quot; src=&quot;GameMessage.vbs&quot;&gt;&lt;/script&gt; 
 
 &lt;input type=&quot;button&quot; value=&quot;会話1&quot; name=&quot;Message&quot;&gt; 
 &lt;input type=&quot;button&quot; value=&quot;会話2&quot;    </description>
    <dc:date>2011-06-16T20:10:16+09:00</dc:date>
    <utime>1308222616</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/takeeasy/pages/14.html">
    <title>ゆっくりでもできる If文</title>
    <link>https://w.atwiki.jp/takeeasy/pages/14.html</link>
    <description>
      -概要
If文を使った条件分岐を行います。


-If文
If 条件 Then
処理１
Else
処理2
End If

上記は、
「もし 条件が正しいなら、処理1を行い」
「それ以外の場合は処理2を行う」
という意味になります。

GameMessage.vbsはIf文の実装例です。


GameMessage.vbs
 Dim MsgBoxResult 
 MsgBoxResult = MsgBox(&quot;世界の半分をお前にやろう&quot;, vbYesNo) 
 
 Dim Msg 
 If MsgBoxResult = vbYes Then 
 Msg = &quot;GAME OVER&quot;
 Else 
 Msg = &quot;おろかものめ！ おもいしるがいい!&quot;
 End If 
 
 MsgBox(Msg) 


DimはDimension (次元) の略で、
変数を宣言するのに使われます。

変数とは任意の値を保持する領域です。
例えば、変数MsgBoxResult には MsgBoxの実行結果が保持され、
変数Msgには任意の文字列が代入されます。

MsgBoxの実行結果は、
vbYes(はいが選択された場合)かvbNo(いいえが選択された場合)が入ります。
なぜこの値が代入されるかというと、
関数の戻り値を受け取っているためですが、ここでは省略します。

If文では変数MsgBoxResultの値が、
vbYes(はいが選択された場合)か、それ以外かを判定し、
変数Msgに任意の文字列を代入します。

変数Msgに代入された文字列を出力確認して終了です。


-おまけ
Ctrl + z 元に戻す

時を操る強力なショートカットキーです。

#comment    </description>
    <dc:date>2011-06-16T15:17:48+09:00</dc:date>
    <utime>1308205068</utime>
  </item>
  </rdf:RDF>
