1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5 <html xmlns="http://www.w3.org/1999/xhtml">
7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
9 <title>Ring 1.1 の変更履歴 — プログラミング言語 Ring 1.12 取扱説明書</title>
11 <link rel="stylesheet" href="_static/bootstrap-astropy.css" type="text/css" />
12 <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
14 <script type="text/javascript">
15 var DOCUMENTATION_OPTIONS = {
18 COLLAPSE_INDEX: false,
23 <script type="text/javascript" src="_static/jquery.js"></script>
24 <script type="text/javascript" src="_static/underscore.js"></script>
25 <script type="text/javascript" src="_static/doctools.js"></script>
26 <script type="text/javascript" src="_static/translations.js"></script>
27 <link rel="top" title="プログラミング言語 Ring 1.12 取扱説明書" href="index.html" />
28 <link rel="next" title="ソースコードからのビルド方法" href="sourcecode.html" />
29 <link rel="prev" title="Ring 1.2 の変更履歴" href="whatisnew2.html" />
30 <link href='https://fonts.googleapis.com/css?family=Source+Sans+Pro:200,600' rel='stylesheet' type='text/css'/>
33 <body role="document">
35 <a class="brand" title="Documentation Home" href="index.html"><span id="logotext1">🍩Ring</span><span id="logotext2"> 1.12</span><span id="logotext3">:docs</span></a>
38 <li><a href="http://ring-lang.sourceforge.net/news.html">News</a></li>
39 <li><a href="http://ring-lang.sourceforge.net/download.html">Download</a></li>
40 <li><a href="https://groups.google.com/forum/#!forum/ring-lang">Get Help</a></li>
41 <li><a href="https://github.com/ring-lang/ring">Contribute</a></li>
42 <li><a href="http://ring-lang.sourceforge.net/resources.html">Resources</a></li>
43 <li><a href="http://ring-lang.sourceforge.net/team.html">Team</a></li>
45 <li><a title="Ring Homepage" href="http://ring-lang.net/">Website</a></li>
46 <li><a title="総合索引" href="genindex.html">Index</a></li>
50 <form action="search.html" method="get">
51 <input type="text" name="q" placeholder="Search" />
52 <input type="hidden" name="check_keywords" value="yes" />
53 <input type="hidden" name="area" value="default" />
64 <a href="sourcecode.html" title="ソースコードからのビルド方法">
69 <a href="whatisnew2.html" title="Ring 1.2 の変更履歴">
75 <a href="index.html">プログラミング言語 Ring 1.12 取扱説明書</a>
79 <li>Ring 1.1 の変更履歴</li>
84 <div class="document">
85 <div class="documentwrapper">
86 <div class="bodywrapper">
87 <div class="body" role="main">
89 <div class="section" id="ring-1-1">
90 <span id="index-0"></span><h1>Ring 1.1 の変更履歴<a class="headerlink" href="#ring-1-1" title="このヘッドラインへのパーマリンク">¶</a></h1>
91 <p>Ring 1.1 公開版の変更点と新機能を学びます。</p>
92 <div class="section" id="index-1">
93 <span id="id1"></span><h2>新機能と変更リスト<a class="headerlink" href="#index-1" title="このヘッドラインへのパーマリンク">¶</a></h2>
96 <li>自然言語プログラミングへの対応を改善</li>
97 <li>Ring オブジェクトファイル (*.ringo) の生成と実行</li>
98 <li>シンタックスの柔軟性と出入力、および制御構造の各種記法</li>
100 <li>Ring で記述した StdLib 関数とクラス</li>
102 <li>デモプロジェクト - 2D ゲームエンジン</li>
104 <li>拡張機能に関するコード生成器の改善</li>
105 <li>新しい属性を定義するためにクラス範囲で Self.属性 の使用</li>
106 <li>クラスのメソッド内で入れ子の括弧で This.属性 の使用</li>
110 <div class="section" id="index-2">
111 <span id="id2"></span><h2>自然言語プログラミングへの対応を改善<a class="headerlink" href="#index-2" title="このヘッドラインへのパーマリンク">¶</a></h2>
112 <p>Ring は、画期的なプログラミング言語であり、小規模のシンタックス、高性能な実装 (小規模、透過型、および視覚型)、
113 短時間で作成・構築できる宣言型、および自然なドメイン特化言語機能を標準装備しています。</p>
114 <p>この公開版では、式の評価後のメソッド呼び出しに対応しました。</p>
116 <div class="highlight-ring"><div class="highlight"><pre><span class="c"># 自然言語コード</span>
117 <span class="k">new</span> <span class="n">program</span> <span class="p">{</span>
118 <span class="n">Accept</span> <span class="mi">2</span> <span class="n">numbers</span> <span class="n">then</span> <span class="n">print</span> <span class="n">the</span> <span class="n">sum</span>
119 <span class="p">}</span>
121 <span class="c"># 自然言語コードの実装</span>
122 <span class="k">class</span> <span class="n">program</span>
123 <span class="c"># キーワード</span>
124 <span class="n">Accept</span><span class="o">=</span><span class="mi">0</span> <span class="n">numbers</span><span class="o">=</span><span class="mi">0</span> <span class="n">then</span><span class="o">=</span><span class="mi">0</span> <span class="n">print</span><span class="o">=</span><span class="mi">0</span> <span class="n">the</span><span class="o">=</span><span class="mi">0</span> <span class="n">sum</span><span class="o">=</span><span class="mi">0</span>
126 <span class="c"># 実行</span>
127 <span class="k">func</span> <span class="n">braceexpreval</span> <span class="n">x</span>
128 <span class="n">value</span> <span class="o">=</span> <span class="n">x</span>
129 <span class="k">func</span> <span class="n">getnumbers</span>
130 <span class="k">for</span> <span class="n">x</span><span class="o">=</span><span class="mi">1</span> <span class="k">to</span> <span class="n">value</span>
131 <span class="k">see</span> <span class="s">"Enter Number ("</span><span class="o">+</span><span class="n">x</span><span class="o">+</span><span class="s">") :"</span> <span class="k">give</span> <span class="n">nNumber</span>
132 <span class="n">aNumbers</span> <span class="o">+</span> <span class="n">nNumber</span>
133 <span class="k">next</span>
134 <span class="k">func</span> <span class="n">getsum</span>
135 <span class="n">nSUm</span> <span class="o">=</span> <span class="mi">0</span>
136 <span class="k">for</span> <span class="n">x</span> <span class="k">in</span> <span class="n">aNumbers</span> <span class="n">nSum</span><span class="o">+=</span> <span class="n">x</span> <span class="k">next</span>
137 <span class="k">see</span> <span class="s">"The Sum : "</span> <span class="o">+</span> <span class="n">nSum</span>
138 <span class="n">private</span>
139 <span class="n">value</span><span class="o">=</span><span class="mi">0</span> <span class="n">aNumbers</span><span class="o">=[]</span>
143 <div class="highlight-ring"><div class="highlight"><pre><span class="n">Enter</span> <span class="n">Number</span> <span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="p">:</span><span class="mi">3</span>
144 <span class="n">Enter</span> <span class="n">Number</span> <span class="p">(</span><span class="mi">2</span><span class="p">)</span> <span class="p">:</span><span class="mi">4</span>
145 <span class="n">The</span> <span class="n">Sum</span> <span class="p">:</span> <span class="mi">7</span>
148 <p>詳細情報は “自然言語プログラミング” の章を参照してください。</p>
150 <div class="section" id="ring-ringo">
151 <span id="index-3"></span><h2>Ring オブジェクトファイル (*.ringo) の生成と実行<a class="headerlink" href="#ring-ringo" title="このヘッドラインへのパーマリンク">¶</a></h2>
152 <p>この機能は、ソースコードの配布を行わずにアプリケーションを配布できるようにします。
153 アプリケーションの配布を単純な処理により、完全なプロジェクトの単体 Ring オブジェクトファイルを取得できます (複数のソースコードファイル)。
154 また、Ring オブジェクトファイルを使うとアプリケーションのコンパイルで、ソースファイルの読み込みにかかる処理時間が無くなり、動作速度の向上につながります。</p>
155 <p>この機能に関する詳細情報は “コマンドラインのオプション” の章をご確認ください。</p>
157 <div class="section" id="index-4">
158 <span id="id3"></span><h2>シンタックスの柔軟性と出入力および制御構造の様々な記法<a class="headerlink" href="#index-4" title="このヘッドラインへのパーマリンク">¶</a></h2>
159 <p>プログラマはプログラミング言語のシンタックスには神経質です。
160 すばらしいプログラマは様々な記法で仕事をする方法を理解していますが、プログラマには各々好みの記法があります。</p>
161 <p>プログラミング言語ごとに好き嫌いの分かれる記法があります。
162 Ring は、あまたにあるプログラミング言語の一つです。
163 しかし、より優れたシンタックスを求めている世界中のプログラマへの回答として、豊富な選択肢を選べるようにしました。</p>
164 <p>また、これらの機能が自然言語プログラミングには最も必要なものです。</p>
166 <p>言語のキーワードと演算子の変更に使用する二種類のコマンドがあります。</p>
167 <div class="highlight-ring"><div class="highlight"><pre><span class="k">ChangeRingOperator</span> <span class="o">+</span> <span class="n">plus</span>
168 <span class="k">ChangeRingKeyword</span> <span class="k">see</span> <span class="n">print</span>
170 <span class="n">Print</span> <span class="mi">5</span> <span class="n">plus</span> <span class="mi">5</span>
172 <span class="k">ChangeRingOperator</span> <span class="n">plus</span> <span class="o">+</span>
173 <span class="k">ChangeRingKeyword</span> <span class="n">print</span> <span class="k">see</span>
176 <p>入出力用の新しい記法があります (オプション扱い)。</p>
178 <div class="highlight-ring"><div class="highlight"><pre><span class="k">Put</span> <span class="s">"What is your name? "</span>
179 <span class="k">Get</span> <span class="n">cName</span>
180 <span class="k">Put</span> <span class="s">"Hello "</span> <span class="o">+</span> <span class="n">cName</span>
184 <div class="highlight-ring"><div class="highlight"><pre><span class="k">Load</span> <span class="s">"stdlib.ring"</span>
186 <span class="n">Print</span><span class="p">(</span><span class="s">"What is your name? "</span><span class="p">)</span> <span class="c"># 画面へメッセージを表示</span>
187 <span class="n">cName</span><span class="o">=</span><span class="n">GetString</span><span class="p">()</span> <span class="c"># ユーザからの標準入力を取得</span>
188 <span class="n">print</span><span class="p">(</span><span class="s">"Hello #{cName}"</span><span class="p">)</span> <span class="c"># hello と言おう!</span>
191 <p>制御構造用の新しい記法があります (オプション扱い)。</p>
193 <div class="highlight-ring"><div class="highlight"><pre><span class="k">While</span> <span class="kp">True</span>
195 <span class="k">Put</span> <span class="s">"</span>
196 <span class="n">Main</span> <span class="n">Menu</span>
197 <span class="o">---------</span>
198 <span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="n">Say</span> <span class="n">Hello</span>
199 <span class="p">(</span><span class="mi">2</span><span class="p">)</span> <span class="n">About</span>
200 <span class="p">(</span><span class="mi">3</span><span class="p">)</span> <span class="k">Exit</span>
202 <span class="s">" Get nOption</span>
204 <span class="k">Switch</span> <span class="n">nOption</span>
205 <span class="k">Case</span> <span class="mi">1</span>
206 <span class="k">Put</span> <span class="s">"Enter your name : "</span>
207 <span class="k">Get</span> <span class="n">name</span>
208 <span class="k">Put</span> <span class="s">"Hello "</span> <span class="o">+</span> <span class="n">name</span> <span class="o">+</span> <span class="n">nl</span>
209 <span class="k">Case</span> <span class="mi">2</span>
210 <span class="k">Put</span> <span class="s">"Sample : using while loop"</span> <span class="o">+</span> <span class="n">nl</span>
211 <span class="k">Case</span> <span class="mi">3</span>
212 <span class="k">Bye</span>
213 <span class="k">Else</span>
214 <span class="k">Put</span> <span class="s">"bad option..."</span> <span class="o">+</span> <span class="n">nl</span>
215 <span class="k">End</span>
216 <span class="k">End</span>
220 <div class="highlight-ring"><div class="highlight"><pre><span class="k">Load</span> <span class="s">"stdlib.ring"</span>
222 <span class="k">While</span> <span class="kp">True</span> <span class="p">{</span>
224 <span class="n">print</span><span class="p">(</span><span class="s">"</span>
225 <span class="n">Main</span> <span class="n">Menu</span>
226 <span class="o">---------</span>
227 <span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="n">Say</span> <span class="n">Hello</span>
228 <span class="p">(</span><span class="mi">2</span><span class="p">)</span> <span class="n">About</span>
229 <span class="p">(</span><span class="mi">3</span><span class="p">)</span> <span class="k">Exit</span>
231 <span class="s">")</span>
233 <span class="n">nOption</span> <span class="o">=</span> <span class="n">GetString</span><span class="p">()</span>
235 <span class="k">switch</span> <span class="n">nOption</span> <span class="p">{</span>
236 <span class="k">case</span> <span class="mi">1</span>
237 <span class="n">print</span><span class="p">(</span><span class="s">"Enter your name : "</span><span class="p">)</span>
238 <span class="n">name</span> <span class="o">=</span> <span class="n">getstring</span><span class="p">()</span>
239 <span class="n">print</span><span class="p">(</span><span class="s">"Hello #{name}</span><span class="se">\n</span><span class="s">"</span><span class="p">)</span>
240 <span class="k">case</span> <span class="mi">2</span>
241 <span class="n">print</span><span class="p">(</span><span class="s">"Sample : using switch statement</span><span class="se">\n</span><span class="s">"</span><span class="p">)</span>
242 <span class="k">case</span> <span class="mi">3</span>
243 <span class="k">Bye</span>
244 <span class="k">else</span>
245 <span class="n">print</span><span class="p">(</span><span class="s">"bad option...</span><span class="se">\n</span><span class="s">"</span><span class="p">)</span>
246 <span class="p">}</span>
248 <span class="p">}</span>
255 <li>制御構造 - 第二形式 - Lua および Ruby 風の記法</li>
256 <li>制御構造 - 第三形式 - C 風の記法 (括弧の使用)</li>
259 <div class="admonition note">
260 <p class="first admonition-title">注釈</p>
261 <p class="last">これらすべての記法は自動的かつ同時にコンパイラで使えます。
262 例えば Put/Get および括弧の使用を許可するなど同じプロジェクトでは記法を一つだけ選択するのが良いです
263 (記法を併用して、別の記法を作成することもできます)。</p>
266 <div class="section" id="index-5">
267 <span id="id4"></span><h2>新しい関数と変更<a class="headerlink" href="#index-5" title="このヘッドラインへのパーマリンク">¶</a></h2>
270 <li>get() 関数 : sysget() へ変更。</li>
271 <li>sort(), find() 関数 : オブジェクトのリストでも動作するようになりました。</li>
275 <li>clockspersecond()</li>
276 <li>CurrentDir()</li>
277 <li>ExeFileName()</li>
282 <li>nullpointer()</li>
283 <li>object2pointer()</li>
284 <li>pointer2object()</li>
289 <li>オブジェクト指向プログラミング (OOP)</li>
293 <div class="section" id="ring-stdlib">
294 <span id="index-6"></span><h2>Ring で記述された StdLib 関数とクラス<a class="headerlink" href="#ring-stdlib" title="このヘッドラインへのパーマリンク">¶</a></h2>
295 <p>Ring 1.1 には Ring チームの協力により Ring で記述された StdLib ライブラリがあります。</p>
296 <p>このライブラリでは新しい関数とクラスの実用的なグループを実装しています。</p>
298 <div class="highlight-ring"><div class="highlight"><pre><span class="k">Load</span> <span class="s">"stdlib.ring"</span>
300 <span class="n">Puts</span><span class="p">(</span><span class="s">"Test Times()"</span><span class="p">)</span>
301 <span class="n">Times</span> <span class="p">(</span> <span class="mi">3</span> <span class="p">,</span> <span class="k">func</span> <span class="p">{</span> <span class="k">see</span> <span class="s">"Hello, World!"</span> <span class="o">+</span> <span class="n">nl</span> <span class="p">}</span> <span class="p">)</span>
305 <div class="highlight-ring"><div class="highlight"><pre><span class="k">Load</span> <span class="s">"stdlib.ring"</span>
307 <span class="n">Puts</span><span class="p">(</span><span class="s">"Test Map()"</span><span class="p">)</span>
308 <span class="k">See</span> <span class="n">Map</span><span class="p">(</span> <span class="mi">1</span><span class="p">:</span><span class="mi">10</span><span class="p">,</span> <span class="k">func</span> <span class="n">x</span> <span class="p">{</span> <span class="k">return</span> <span class="n">x</span><span class="o">*</span><span class="n">x</span> <span class="p">}</span> <span class="p">)</span>
312 <div class="highlight-ring"><div class="highlight"><pre><span class="k">Load</span> <span class="s">"stdlib.ring"</span>
314 <span class="n">Puts</span><span class="p">(</span><span class="s">"Test Filter()"</span><span class="p">)</span>
315 <span class="k">See</span> <span class="n">Filter</span><span class="p">(</span> <span class="mi">1</span><span class="p">:</span><span class="mi">10</span> <span class="p">,</span> <span class="k">func</span> <span class="n">x</span> <span class="p">{</span> <span class="k">if</span> <span class="n">x</span> <span class="o"><=</span> <span class="mi">5</span> <span class="k">return</span> <span class="kp">true</span> <span class="k">else</span> <span class="k">return</span> <span class="kp">false</span> <span class="k">ok</span> <span class="p">}</span> <span class="p">)</span>
319 <div class="highlight-ring"><div class="highlight"><pre><span class="k">Load</span> <span class="s">"stdlib.ring"</span>
321 <span class="k">See</span> <span class="s">"Testing the String Class"</span> <span class="o">+</span> <span class="n">nl</span>
322 <span class="n">oString</span> <span class="o">=</span> <span class="k">new</span> <span class="kt">string</span><span class="p">(</span><span class="s">"Hello, World!"</span><span class="p">)</span>
323 <span class="n">oString</span><span class="p">.</span><span class="n">println</span><span class="p">()</span>
324 <span class="n">oString</span><span class="p">.</span><span class="n">upper</span><span class="p">().</span><span class="n">println</span><span class="p">()</span>
325 <span class="n">oString</span><span class="p">.</span><span class="n">lower</span><span class="p">().</span><span class="n">println</span><span class="p">()</span>
326 <span class="n">oString</span><span class="p">.</span><span class="n">left</span><span class="p">(</span><span class="mi">5</span><span class="p">).</span><span class="n">println</span><span class="p">()</span>
327 <span class="n">oString</span><span class="p">.</span><span class="n">right</span><span class="p">(</span><span class="mi">6</span><span class="p">).</span><span class="n">println</span><span class="p">()</span>
331 <div class="highlight-ring"><div class="highlight"><pre><span class="k">Load</span> <span class="s">"stdlib.ring"</span>
333 <span class="n">oList</span> <span class="o">=</span> <span class="k">new</span> <span class="kt">list</span> <span class="p">(</span> <span class="o">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="o">]</span> <span class="p">)</span>
334 <span class="n">oList</span><span class="p">.</span><span class="n">Add</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span>
335 <span class="n">oList</span><span class="p">.</span><span class="n">print</span><span class="p">()</span>
339 <div class="highlight-ring"><div class="highlight"><pre><span class="k">Load</span> <span class="s">"stdlib.ring"</span>
341 <span class="n">oStack</span> <span class="o">=</span> <span class="k">new</span> <span class="kt">Stack</span>
342 <span class="n">oStack</span><span class="p">.</span><span class="n">push</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
343 <span class="n">oStack</span><span class="p">.</span><span class="n">push</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
344 <span class="n">oStack</span><span class="p">.</span><span class="n">push</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
345 <span class="k">see</span> <span class="n">oStack</span><span class="p">.</span><span class="n">pop</span><span class="p">()</span> <span class="o">+</span> <span class="n">nl</span>
349 <div class="highlight-ring"><div class="highlight"><pre><span class="k">Load</span> <span class="s">"stdlib.ring"</span>
351 <span class="n">oQueue</span> <span class="o">=</span> <span class="k">new</span> <span class="kt">Queue</span>
352 <span class="n">oQueue</span><span class="p">.</span><span class="n">add</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
353 <span class="n">oQueue</span><span class="p">.</span><span class="n">add</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
354 <span class="n">oQueue</span><span class="p">.</span><span class="n">add</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
355 <span class="k">see</span> <span class="n">oQueue</span><span class="p">.</span><span class="n">remove</span><span class="p">()</span> <span class="o">+</span> <span class="n">nl</span>
359 <div class="highlight-ring"><div class="highlight"><pre><span class="k">Load</span> <span class="s">"stdlib.ring"</span>
361 <span class="n">ohashtable</span> <span class="o">=</span> <span class="k">new</span> <span class="kt">hashtable</span>
362 <span class="k">See</span> <span class="s">"Test the hashtable Class Methods"</span> <span class="o">+</span> <span class="n">nl</span>
363 <span class="n">ohashtable</span> <span class="p">{</span>
364 <span class="n">Add</span><span class="p">(</span><span class="s">"Egypt"</span><span class="p">,</span><span class="s">"Cairo"</span><span class="p">)</span>
365 <span class="n">Add</span><span class="p">(</span><span class="s">"KSA"</span><span class="p">,</span><span class="s">"Riyadh"</span><span class="p">)</span>
366 <span class="k">see</span> <span class="n">self</span><span class="o">[</span><span class="s">"Egypt"</span><span class="o">]</span> <span class="o">+</span> <span class="n">nl</span>
367 <span class="k">see</span> <span class="n">self</span><span class="o">[</span><span class="s">"KSA"</span><span class="o">]</span> <span class="o">+</span> <span class="n">nl</span>
368 <span class="k">see</span> <span class="n">contains</span><span class="p">(</span><span class="s">"Egypt"</span><span class="p">)</span> <span class="o">+</span> <span class="n">nl</span>
369 <span class="k">see</span> <span class="n">contains</span><span class="p">(</span><span class="s">"USA"</span><span class="p">)</span> <span class="o">+</span> <span class="n">nl</span>
370 <span class="k">see</span> <span class="n">index</span><span class="p">(</span><span class="s">"KSA"</span><span class="p">)</span> <span class="o">+</span> <span class="n">NL</span>
371 <span class="n">print</span><span class="p">()</span>
372 <span class="n">delete</span><span class="p">(</span><span class="n">index</span><span class="p">(</span><span class="s">"KSA"</span><span class="p">))</span>
373 <span class="k">see</span> <span class="n">copy</span><span class="p">(</span><span class="s">"*"</span><span class="p">,</span><span class="mi">60</span><span class="p">)</span> <span class="o">+</span> <span class="n">nl</span>
374 <span class="n">print</span><span class="p">()</span>
375 <span class="p">}</span>
379 <div class="highlight-ring"><div class="highlight"><pre><span class="k">Load</span> <span class="s">"stdlib.ring"</span>
381 <span class="n">otree</span> <span class="o">=</span> <span class="k">new</span> <span class="kt">tree</span>
382 <span class="k">See</span> <span class="s">"Test the tree Class Methods"</span> <span class="o">+</span> <span class="n">nl</span>
383 <span class="n">otree</span> <span class="p">{</span>
384 <span class="n">set</span><span class="p">(</span><span class="s">"The first step"</span><span class="p">)</span> <span class="c"># ルートノードの値を設定します。</span>
385 <span class="k">see</span> <span class="n">value</span><span class="p">()</span> <span class="o">+</span> <span class="n">nl</span>
386 <span class="n">Add</span><span class="p">(</span><span class="s">"one"</span><span class="p">)</span>
387 <span class="n">Add</span><span class="p">(</span><span class="s">"two"</span><span class="p">)</span>
388 <span class="n">Add</span><span class="p">(</span><span class="s">"three"</span><span class="p">)</span> <span class="p">{</span>
389 <span class="n">Add</span><span class="p">(</span><span class="s">"3.1"</span><span class="p">)</span>
390 <span class="n">Add</span><span class="p">(</span><span class="s">"3.2"</span><span class="p">)</span>
391 <span class="n">Add</span><span class="p">(</span><span class="s">"3.3"</span><span class="p">)</span>
392 <span class="k">see</span> <span class="n">children</span>
393 <span class="p">}</span>
394 <span class="k">see</span> <span class="n">children</span>
395 <span class="n">oTree</span><span class="p">.</span><span class="n">children</span><span class="o">[</span><span class="mi">2</span><span class="o">]</span> <span class="p">{</span>
396 <span class="n">Add</span><span class="p">(</span><span class="s">"2.1"</span><span class="p">)</span> <span class="n">Add</span><span class="p">(</span><span class="s">"2.2"</span><span class="p">)</span> <span class="n">Add</span><span class="p">(</span><span class="s">"2.3"</span><span class="p">)</span> <span class="p">{</span>
397 <span class="n">Add</span><span class="p">(</span><span class="s">"2.3.1"</span><span class="p">)</span> <span class="n">Add</span><span class="p">(</span><span class="s">"2.3.2"</span><span class="p">)</span> <span class="n">Add</span><span class="p">(</span><span class="s">"test"</span><span class="p">)</span>
398 <span class="p">}</span>
399 <span class="p">}</span>
400 <span class="n">oTree</span><span class="p">.</span><span class="n">children</span><span class="o">[</span><span class="mi">2</span><span class="o">]</span><span class="p">.</span><span class="n">children</span><span class="o">[</span><span class="mi">3</span><span class="o">]</span><span class="p">.</span><span class="n">children</span><span class="o">[</span><span class="mi">3</span><span class="o">]</span><span class="p">.</span><span class="n">set</span><span class="p">(</span><span class="s">"2.3.3"</span><span class="p">)</span>
401 <span class="p">}</span>
402 <span class="k">see</span> <span class="n">copy</span><span class="p">(</span><span class="s">"*"</span><span class="p">,</span><span class="mi">60</span><span class="p">)</span> <span class="o">+</span> <span class="n">nl</span>
403 <span class="n">oTree</span><span class="p">.</span><span class="n">print</span><span class="p">()</span>
412 <div class="section" id="ringlibsdl">
413 <span id="index-7"></span><h2>RingLibSDL<a class="headerlink" href="#ringlibsdl" title="このヘッドラインへのパーマリンク">¶</a></h2>
414 <p>Ring 1.0 では Allegro ゲームプログラミング・ライブラリ (RingAllegro) でゲームを作成できるようになりました。</p>
415 <p>Ring 1.1 では LibSDL (RingLibSDL) も使用可能です。</p>
417 <div class="highlight-ring"><div class="highlight"><pre><span class="k">Load</span> <span class="s">"libsdl.ring"</span>
419 <span class="n">SDL_Init</span><span class="p">(</span><span class="n">SDL_INIT_EVERYTHING</span><span class="p">)</span>
420 <span class="n">win</span> <span class="o">=</span> <span class="n">SDL_CreateWindow</span><span class="p">(</span><span class="s">"Hello World!"</span><span class="p">,</span> <span class="mi">100</span><span class="p">,</span> <span class="mi">100</span><span class="p">,</span> <span class="mi">640</span><span class="p">,</span> <span class="mi">480</span><span class="p">,</span> <span class="n">SDL_WINDOW_SHOWN</span><span class="p">)</span>
421 <span class="n">SDL_Delay</span><span class="p">(</span><span class="mi">2000</span><span class="p">)</span>
422 <span class="n">SDL_DestroyWindow</span><span class="p">(</span><span class="n">win</span><span class="p">)</span>
423 <span class="n">SDL_Quit</span><span class="p">()</span>
426 <p>RingLibSDL の章を参照してください。</p>
428 <div class="section" id="d">
429 <span id="index-8"></span><h2>デモプロジェクト - 2D ゲームエンジン<a class="headerlink" href="#d" title="このヘッドラインへのパーマリンク">¶</a></h2>
430 <p>最良実行性能を得るには C/C++ などでゲームエンジンを作成後にエンジン用の Ring クラスを実装します。</p>
431 <p>一般的な 2D ゲームの構造は単純明快であり、 Ring でゲームエンジンを作成しても十分高速です。</p>
432 <p>また、これは言語の概念として、オブジェクト指向プログラミング (OOP) によるオブジェクトの構築方法、
434 または自然言語プログラミングによる強力なアクセス方法について学ぶための優れたデモプロジェクトです。</p>
435 <p>このプロジェクトでは最初の方法を選択します (入れ子構造の宣言型プログラミング)。</p>
437 <div class="highlight-ring"><div class="highlight"><pre><span class="k">Load</span> <span class="s">"gameengine.ring"</span> <span class="c"># ゲームエンジンへ制御権を与えます。</span>
439 <span class="k">func</span> <span class="n">main</span> <span class="c"># ゲームエンジンにより呼び出されます。</span>
441 <span class="n">oGame</span> <span class="o">=</span> <span class="k">New</span> <span class="n">Game</span> <span class="c"># Game オブジェクトの作成</span>
442 <span class="p">{</span>
443 <span class="n">title</span> <span class="o">=</span> <span class="s">"My First Game"</span>
444 <span class="n">text</span> <span class="p">{</span>
445 <span class="n">x</span> <span class="o">=</span> <span class="mi">10</span> <span class="n">y</span><span class="o">=</span><span class="mi">50</span>
446 <span class="n">animate</span> <span class="o">=</span> <span class="kp">false</span>
447 <span class="n">size</span> <span class="o">=</span> <span class="mi">20</span>
448 <span class="n">file</span> <span class="o">=</span> <span class="s">"fonts/pirulen.ttf"</span>
449 <span class="n">text</span> <span class="o">=</span> <span class="s">"game development using ring is very fun!"</span>
450 <span class="n">color</span> <span class="o">=</span> <span class="n">rgb</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">)</span> <span class="c"># 配色 = 黒色</span>
451 <span class="p">}</span>
452 <span class="n">text</span> <span class="p">{</span>
453 <span class="n">x</span> <span class="o">=</span> <span class="mi">10</span> <span class="n">y</span><span class="o">=</span><span class="mi">150</span>
454 <span class="c"># アニメーション部分 ======================================</span>
455 <span class="n">animate</span> <span class="o">=</span> <span class="kp">true</span> <span class="c"># アニメーションの使用</span>
456 <span class="n">direction</span> <span class="o">=</span> <span class="n">GE_DIRECTION_INCVERTICAL</span> <span class="c"># y の増分</span>
457 <span class="n">point</span> <span class="o">=</span> <span class="mi">400</span> <span class="c"># y=400 になるまで継続</span>
458 <span class="n">nStep</span> <span class="o">=</span> <span class="mi">3</span> <span class="c"># 毎回 y+= 3 を行う</span>
459 <span class="c">#==========================================================</span>
460 <span class="n">size</span> <span class="o">=</span> <span class="mi">20</span>
461 <span class="n">file</span> <span class="o">=</span> <span class="s">"fonts/pirulen.ttf"</span>
462 <span class="n">text</span> <span class="o">=</span> <span class="s">"welcome to the real world!"</span>
463 <span class="n">color</span> <span class="o">=</span> <span class="n">rgb</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">255</span><span class="p">)</span> <span class="c"># 配色 = 青色</span>
464 <span class="p">}</span>
465 <span class="n">Sound</span> <span class="p">{</span> <span class="c"># 音声の再生</span>
466 <span class="n">file</span> <span class="o">=</span> <span class="s">"sound/music1.wav"</span> <span class="c"># イベントループの開始</span>
467 <span class="p">}</span>
468 <span class="p">}</span> <span class="c"># イベントループの開始</span>
471 <p>“デモプロジェクト - 2D ゲームエンジン”の章を参照してください。</p>
473 <div class="section" id="ringsqlite">
474 <span id="index-9"></span><h2>RingSQLite<a class="headerlink" href="#ringsqlite" title="このヘッドラインへのパーマリンク">¶</a></h2>
475 <p>ODBC 関数 (Ring 1.0 以降)、 SQLite 関数 (Ring 1.1 以降) を実装しました。これにより、各種データベース、および MySQL に標準対応しました。</p>
477 <div class="highlight-ring"><div class="highlight"><pre><span class="n">oSQLite</span> <span class="o">=</span> <span class="n">sqlite_init</span><span class="p">()</span>
479 <span class="n">sqlite_open</span><span class="p">(</span><span class="n">oSQLite</span><span class="p">,</span><span class="s">"mytest.db"</span><span class="p">)</span>
481 <span class="n">sql</span> <span class="o">=</span> <span class="s">"CREATE TABLE COMPANY("</span> <span class="o">+</span>
482 <span class="s">"ID INT PRIMARY KEY NOT NULL,"</span> <span class="o">+</span>
483 <span class="s">"NAME TEXT NOT NULL,"</span> <span class="o">+</span>
484 <span class="s">"AGE INT NOT NULL,"</span> <span class="o">+</span>
485 <span class="s">"ADDRESS CHAR(50),"</span> <span class="o">+</span>
486 <span class="s">"SALARY REAL );"</span>
488 <span class="n">sqlite_execute</span><span class="p">(</span><span class="n">oSQLite</span><span class="p">,</span><span class="n">sql</span><span class="p">)</span>
490 <span class="n">sql</span> <span class="o">=</span> <span class="s">"INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) "</span> <span class="o">+</span>
491 <span class="s">"VALUES (1, 'Mahmoud', 29, 'Jeddah', 20000.00 ); "</span> <span class="o">+</span>
492 <span class="s">"INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) "</span> <span class="o">+</span>
493 <span class="s">"VALUES (2, 'Ahmed', 27, 'Jeddah', 15000.00 ); "</span> <span class="o">+</span>
494 <span class="s">"INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)"</span> <span class="o">+</span>
495 <span class="s">"VALUES (3, 'Mohammed', 31, 'Egypt', 20000.00 );"</span> <span class="o">+</span>
496 <span class="s">"INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)"</span> <span class="o">+</span>
497 <span class="s">"VALUES (4, 'Ibrahim', 24, 'Egypt ', 65000.00 );"</span>
499 <span class="n">sqlite_execute</span><span class="p">(</span><span class="n">oSQLite</span><span class="p">,</span><span class="n">sql</span><span class="p">)</span>
501 <span class="n">aResult</span> <span class="o">=</span> <span class="n">sqlite_execute</span><span class="p">(</span><span class="n">oSQLite</span><span class="p">,</span><span class="s">"select * from COMPANY"</span><span class="p">)</span>
502 <span class="k">for</span> <span class="n">x</span> <span class="k">in</span> <span class="n">aResult</span>
503 <span class="k">for</span> <span class="n">t</span> <span class="k">in</span> <span class="n">x</span>
504 <span class="k">see</span> <span class="n">t</span><span class="o">[</span><span class="mi">2</span><span class="o">]</span> <span class="o">+</span> <span class="n">nl</span>
505 <span class="k">next</span>
506 <span class="k">next</span>
507 <span class="k">see</span> <span class="n">copy</span><span class="p">(</span><span class="s">"*"</span><span class="p">,</span><span class="mi">50</span><span class="p">)</span> <span class="o">+</span> <span class="n">nl</span>
508 <span class="k">for</span> <span class="n">x</span> <span class="k">in</span> <span class="n">aResult</span>
509 <span class="k">see</span> <span class="n">x</span><span class="o">[</span><span class="s">"name"</span><span class="o">]</span> <span class="o">+</span> <span class="n">nl</span>
510 <span class="k">next</span>
511 <span class="n">sqlite_close</span><span class="p">(</span><span class="n">oSQLite</span><span class="p">)</span>
515 <div class="section" id="index-10">
516 <span id="id5"></span><h2>拡張機能に関するコード生成器の改善<a class="headerlink" href="#index-10" title="このヘッドラインへのパーマリンク">¶</a></h2>
517 <p>Ring へ新しいライブラリを追加するためにコード生成器 (Ring にて記述) を使用しています。</p>
518 <p>RingQt と RingAllegro (Ring 1.1 では RingLibSDL) はコード生成器で作成しました。</p>
519 <p>また、次の機能を追加しました。</p>
521 <li>構造体メンバの設定と取得 (数値とポインタ)</li>
525 <p>コード生成器の章を参照してください。</p>
527 <div class="section" id="self">
528 <span id="index-11"></span><h2>新しい属性を定義するためにクラス範囲で Self.属性 の使用<a class="headerlink" href="#self" title="このヘッドラインへのパーマリンク">¶</a></h2>
529 <p>新しい属性を定義するためにクラス範囲 (クラス名の後、およびメソッドの前) で
531 <div class="highlight-ring"><div class="highlight"><pre><span class="k">class</span> <span class="n">Person</span>
532 <span class="n">name</span> <span class="c"># グローバル変数ではない場合は、属性名を定義します。</span>
533 <span class="n">address</span>
534 <span class="n">phone</span>
536 <span class="k">class</span> <span class="n">person2</span>
537 <span class="n">self</span><span class="p">.</span><span class="n">name</span> <span class="c"># 必ず属性を定義してください。</span>
538 <span class="n">self</span><span class="p">.</span><span class="n">address</span>
539 <span class="n">self</span><span class="p">.</span><span class="n">phone</span>
543 <div class="section" id="this">
544 <span id="index-12"></span><h2>クラスのメソッド内で入れ子の括弧で This.属性 の使用<a class="headerlink" href="#this" title="このヘッドラインへのパーマリンク">¶</a></h2>
545 <p>メソッドの内から別のオブジェクトへアクセスするために入れ子の括弧 { } を使えます。
546 この場合、括弧内、および Self で {} でアクセスするオブジェクトを指定するときに
547 現在のオブジェクトの有効範囲は変更されます。この場合において
548 This.属性 および This.属性() は現在のクラスから作成される
549 オブジェクトへアクセスするために使えます。</p>
550 <p>詳細情報はオブジェクト指向プログラミングの章を参照してください。</p>
551 <p>また RingQt (GUI) で開発した Weight History アプリケーションも併せてご確認ください。</p>
553 <div class="section" id="index-13">
554 <span id="id6"></span><h2>取扱説明書の増補<a class="headerlink" href="#index-13" title="このヘッドラインへのパーマリンク">¶</a></h2>
555 <p>Ring 1.1 の取扱説明書 (800 ページ) は Ring 1.0 の取扱説明書 (340 ページ) よりも改善しています。</p>
556 <p>良質な知識を理解して頂きたく言語関連などの章を多数加筆しました。</p>
570 <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
571 <div class="sphinxsidebarwrapper"><h3>ページの内容</h3>
573 <li><a class="reference internal" href="#">Ring 1.1 の変更履歴</a><ul>
574 <li><a class="reference internal" href="#index-1">新機能と変更リスト</a></li>
575 <li><a class="reference internal" href="#index-2">自然言語プログラミングへの対応を改善</a></li>
576 <li><a class="reference internal" href="#ring-ringo">Ring オブジェクトファイル (*.ringo) の生成と実行</a></li>
577 <li><a class="reference internal" href="#index-4">シンタックスの柔軟性と出入力および制御構造の様々な記法</a></li>
578 <li><a class="reference internal" href="#index-5">新しい関数と変更</a></li>
579 <li><a class="reference internal" href="#ring-stdlib">Ring で記述された StdLib 関数とクラス</a></li>
580 <li><a class="reference internal" href="#ringlibsdl">RingLibSDL</a></li>
581 <li><a class="reference internal" href="#d">デモプロジェクト - 2D ゲームエンジン</a></li>
582 <li><a class="reference internal" href="#ringsqlite">RingSQLite</a></li>
583 <li><a class="reference internal" href="#index-10">拡張機能に関するコード生成器の改善</a></li>
584 <li><a class="reference internal" href="#self">新しい属性を定義するためにクラス範囲で Self.属性 の使用</a></li>
585 <li><a class="reference internal" href="#this">クラスのメソッド内で入れ子の括弧で This.属性 の使用</a></li>
586 <li><a class="reference internal" href="#index-13">取扱説明書の増補</a></li>
593 <p class="topless"><a href="whatisnew2.html"
594 title="前の章へ">Ring 1.2 の変更履歴</a></p>
596 <p class="topless"><a href="sourcecode.html"
597 title="次の章へ">ソースコードからのビルド方法</a></p>
598 <div role="note" aria-label="source link">
600 <ul class="this-page-menu">
601 <li><a href="_sources/whatisnew.txt"
602 rel="nofollow">ソースコードを表示</a></li>
606 <form action="search.html" method="get">
607 <input type="text" name="q" placeholder="Search" />
608 <input type="hidden" name="check_keywords" value="yes" />
609 <input type="hidden" name="area" value="default" />
614 <div class="clearer"></div>
616 <footer class="footer">
617 <p class="pull-right">
618 <a href="_sources/whatisnew.txt"
619 rel="nofollow">Page Source</a>
620 <a href="#">Back to Top</a></p>
622 © Copyright 2016-2020, Ring Team.<br/>
623 Created using <a href="http://www.sphinx-doc.org/en/stable/">Sphinx</a> 1.3.6. / astropy-sphinx-theme 1.1 (isVowel)