2 single: Ring 1.12 の変更履歴; はじめに
8 Ring 1.12 公開版の新機能と変更点を学びます。
11 pair: Ring 1.12 の変更履歴; 新機能と変更リスト
25 * ring_state_filetokens() 関数
31 pair: Ring 1.12 の変更履歴; Go ゲーム
42 pair: Ring 1.12 の変更履歴; ASCII コード表アプリケーション
45 ==============================
47 ASCII コード表を表示するアプリケーションです。
49 .. image:: asciitable.png
53 pair: Ring 1.12 の変更履歴; BMI 計算機アプリケーション
56 ==========================
58 BMI を計算するだけのアプリケーションです。
64 pair: Ring 1.12 の変更履歴; カレンダーアプリケーション
67 ==========================
71 .. image:: calendar.png
75 pair: Ring 1.12 の変更履歴; ユリウス積日カレンダーアプリケーション
78 ======================================
80 これはユリウス積日カレンダーアプリケーションです。
82 .. image:: juliancalendar.png
83 :alt: juliandaycalendar
87 pair: Ring 1.12 の変更履歴; チュートリアル: 数値を単語表記へ変換
90 ====================================
92 フォルダ : ring/samples/other/number2words
94 .. image:: number2words.png
98 pair: Ring 1.12 の変更履歴; Load Again コマンド
103 Ring 1.12 から Load Again コマンドが使えるようになりました。
105 このコマンドを使うと Ring ソースファイルにある定数を何度でも読み込めます。
107 これはグローバル定数による翻訳用 Ring ソースファイルを使用するときに便利です。
111 下記はアラビア語と英語に対応するプロジェクトからの引用です。
113 english.ring と arabic.ring ファイルには翻訳で使う定数があります。
115 これらのファイルはプログラムの開始時に読み込まれます。
117 Load コマンドで同じファイルの再読み込みはできません。
119 Load コマンドは同じソースファイルを一度だけ読み込み、それ以降の読み込み指定は無理するからです。
121 しかし Load Again コマンドならできます。
123 よって、下記のコードを使うと実行中にファイルの再利用ができます。
127 func setLang nLanguage
128 if C_ENV_DEFAULT_LANG = nLanguage
131 C_ENV_DEFAULT_LANG = nLanguage
134 on C_TRANSLATION_ENGLISH
135 load again "translation/english.ring"
136 on C_TRANSLATION_ARABIC
137 load again "translation/arabic.ring"
141 pair: Ring 1.12 の変更履歴; ring_state_filetokens() 関数
143 ring_state_filetokens() 関数
144 ============================
146 ring_state_filetokens() 関数は Ring ソースコードファイルにあるトークンを一括取得します。
150 C_FILENAME = "test_tokens.ring"
170 aKEYWORDS = ["IF","TO","OR","AND","NOT","FOR","NEW","FUNC",
171 "FROM","NEXT","LOAD","ELSE","SEE","WHILE","OK","CLASS","RETURN","BUT",
172 "END","GIVE","BYE","EXIT","TRY","CATCH","DONE","SWITCH","ON","OTHER","OFF",
173 "IN","LOOP","PACKAGE","IMPORT","PRIVATE","STEP","DO","AGAIN","CALL","ELSEIF",
174 "PUT","GET","CASE","DEF","ENDFUNC","ENDCLASS","ENDPACKAGE",
175 "CHANGERINGKEYWORD","CHANGERINGOPERATOR","LOADSYNTAX"]
177 pState = ring_state_new()
178 aList = ring_state_filetokens(pState,C_FILENAME)
180 ring_state_delete(pState)
182 func PrintTokens aList
186 ? Width("Keyword",C_WIDTH) + ": " + aKeywords[0+aToken[2]]
188 ? Width("Operator",C_WIDTH) + ": " + aToken[2]
190 ? Width("Literal",C_WIDTH) + ": " + aToken[2]
192 ? Width("Number",C_WIDTH) + ": " + aToken[2]
194 ? Width("Identifier",C_WIDTH) + ": " + aToken[2]
202 func Width cText,nWidth
203 return cText+copy(" ",nWidth-len(cText))
211 Literal : Hello, World!
229 pair: Ring 1.12 の変更履歴; 組込型オブジェクトファイルの生成
232 ================================
234 -geo オプションはソースコードファイル (\*.ring) から組込型オブジェクトファイル (C ソースコード) を生成します。
242 このコマンドは最低でも 3 ファイルを生成します。
250 プロジェクトの規模により、大量のファイルを生成します。
252 生成後のファイルは Ring VM のバイトコードとして実行されます。
255 pair: Ring 1.12 の変更履歴; RingRayLib の改良
260 RingRayLib の新作サンプル集を追加しました。
276 .. image:: raylib_cubicmap.png
280 pair: Ring 1.12 の変更履歴; そのほかの改善
286 * ring/samples/other/Hex2UTF8.ring
287 * ring/samples/other/CalmoSoftPrimesTable.ring
288 * ring/samples/other/CalmoSoftTicTacToeGame.ring
289 * ring/samples/other/CalmoSoftSimpleGoGame.ring
290 * ring/samples/other/arabicmysql.ring
291 * ring/samples/other/CalmoSoftExtraCube.ring
292 * ring/samples/other/DynamicCode/anonfunc.ring
293 * ring/samples/other/DynamicCode/deletethisfile.ring
294 * ring/samples/other/DynamicCode/modifythisfile.ring
295 * ring/samples/other/changesyntax/ArabicDemo.ring
296 * ring/samples/other/changesyntax/EnglishDemo.ring
297 * ring/samples/other/changesyntax/ChangeKeywordsArabic.ring
298 * ring/samples/other/changesyntax/ChangeKeywordsEnglish.ring
299 * ring/samples/other/changesyntax/pascal.ring
300 * ring/samples/other/hijridate.ring
302 * Ring ノートパッド - プロジェクトファイル - デスクトップ画面の幅による最小幅の設定
303 * Ring ノートパッド - 実行結果ウィンドウ - テキスト末尾へのカーソル移動
304 * Ring ノートパッド - 実行結果ウィンドウ - 改行を正しく表示できるようになりました
305 * フォームデザイナー - スタイルの改善 - 色と寸法の制御
306 * VideoMusicPlayer を RingQt 更新後に正常動作させるために更新
307 * FlappyBird3000 - Android での応答速度を向上
308 * Snake ゲーム : デフォルトのウィンドウ寸法を変更 (800x600)
309 * Maze ゲーム : デフォルトのウィンドウ寸法を変更 (800x600)
310 * Maze ゲーム : プレイヤによるカメラ移動
311 * Maze ゲーム : ゲームをやり直すときに You Win メッセージを消去
312 * ゲームエンジン : ゲームウィンドウが生成できないときにエラーメッセージを表示
313 * Ring テスト : Linux と macOS 用のビルドファイル build.sh を追加
314 * RingQt : Qt 5.12.6 へ更新
315 * RingQt : QQMLEngine クラスの追加
316 * RingQt : Bluetooth 対応を除く RingQt ビルドファイルの追加
317 * RingQt : イベントコードの大きさを従来の 100 文字から 200 文字へ変更
318 * RingQt : RingQt クラスの章において Qt ドキュメントのリンクを修正
319 * RingQt for Android : Ring オブジェクトファイル (ringo) の実行用コードの改善
320 * RingQt アプリケーションを正常に配布できるようにするために Ring2EXE の RingQt 用の構成ファイルを更新
321 * コード生成器 : 構造体関数の生成時に関数名を英数小文字へ変換するようになりました
322 * OSCopyFolder() 関数でも下位フォルダのファイルをコピーできるようにするために更新
323 * fgetpos() 関数は想定した動作になるよう更新
324 * IsFunction() 関数は英数大小同一動作になるよう更新
325 * Space() 関数は空白文字列の出力を消去するよう更新
326 * Ring コンパイラ : Windows 用の Clang コンパイラのビルドファイル buildclang.bat を追加
327 * Ring VM - 内部ハッシュ関数の更新
328 * Ring VM - オブジェクトの新規作成時における pVM->aSetProperty 設定用コードの改善
329 * Ring VM - ステート管理用のコードを改善